Multi-GPU Cagra

View as Markdown

Source header: cuvs/neighbors/mg_cagra.h

Multi-GPU CAGRA index build parameters

cuvsMultiGpuCagraIndexParams

Multi-GPU parameters to build CAGRA Index

This structure extends the base CAGRA index parameters with multi-GPU specific settings.

1struct cuvsMultiGpuCagraIndexParams {
2 cuvsCagraIndexParams_t base_params;
3 cuvsMultiGpuDistributionMode mode;
4};

Fields

NameTypeDescription
base_paramscuvsCagraIndexParams_tBase CAGRA index parameters
modecuvsMultiGpuDistributionModeDistribution mode for multi-GPU setup

cuvsMultiGpuCagraIndexParamsCreate

Allocate Multi-GPU CAGRA Index params, and populate with default values

1cuvsError_t cuvsMultiGpuCagraIndexParamsCreate(cuvsMultiGpuCagraIndexParams_t* index_params);

Parameters

NameDirectionTypeDescription
index_paramsincuvsMultiGpuCagraIndexParams_t*cuvsMultiGpuCagraIndexParams_t to allocate

Returns

cuvsError_t

cuvsMultiGpuCagraIndexParamsDestroy

De-allocate Multi-GPU CAGRA Index params

1cuvsError_t cuvsMultiGpuCagraIndexParamsDestroy(cuvsMultiGpuCagraIndexParams_t index_params);

Parameters

NameDirectionTypeDescription
index_paramsincuvsMultiGpuCagraIndexParams_t

Returns

cuvsError_t

Multi-GPU CAGRA index search parameters

cuvsMultiGpuCagraSearchParams

Multi-GPU parameters to search CAGRA index

This structure extends the base CAGRA search parameters with multi-GPU specific settings.

1struct cuvsMultiGpuCagraSearchParams {
2 cuvsCagraSearchParams_t base_params;
3 cuvsMultiGpuReplicatedSearchMode search_mode;
4 cuvsMultiGpuShardedMergeMode merge_mode;
5 int64_t n_rows_per_batch;
6};

Fields

NameTypeDescription
base_paramscuvsCagraSearchParams_tBase CAGRA search parameters
search_modecuvsMultiGpuReplicatedSearchModeReplicated search mode
merge_modecuvsMultiGpuShardedMergeModeSharded merge mode
n_rows_per_batchint64_tNumber of rows per batch

cuvsMultiGpuCagraSearchParamsCreate

Allocate Multi-GPU CAGRA search params, and populate with default values

1cuvsError_t cuvsMultiGpuCagraSearchParamsCreate(cuvsMultiGpuCagraSearchParams_t* params);

Parameters

NameDirectionTypeDescription
paramsincuvsMultiGpuCagraSearchParams_t*cuvsMultiGpuCagraSearchParams_t to allocate

Returns

cuvsError_t

cuvsMultiGpuCagraSearchParamsDestroy

De-allocate Multi-GPU CAGRA search params

1cuvsError_t cuvsMultiGpuCagraSearchParamsDestroy(cuvsMultiGpuCagraSearchParams_t params);

Parameters

NameDirectionTypeDescription
paramsincuvsMultiGpuCagraSearchParams_t

Returns

cuvsError_t

Multi-GPU CAGRA index

cuvsMultiGpuCagraIndex

Struct to hold address of cuvs::neighbors::mg_index<cagra::index> and its active trained dtype

1typedef struct {
2 uintptr_t addr;
3 DLDataType dtype;
4} cuvsMultiGpuCagraIndex;

Fields

NameTypeDescription
addruintptr_t
dtypeDLDataType

cuvsMultiGpuCagraIndexCreate

Allocate Multi-GPU CAGRA index

1cuvsError_t cuvsMultiGpuCagraIndexCreate(cuvsMultiGpuCagraIndex_t* index);

Parameters

NameDirectionTypeDescription
indexincuvsMultiGpuCagraIndex_t*cuvsMultiGpuCagraIndex_t to allocate

Returns

cuvsError_t

cuvsMultiGpuCagraIndexDestroy

De-allocate Multi-GPU CAGRA index

1cuvsError_t cuvsMultiGpuCagraIndexDestroy(cuvsMultiGpuCagraIndex_t index);

Parameters

NameDirectionTypeDescription
indexincuvsMultiGpuCagraIndex_tcuvsMultiGpuCagraIndex_t to de-allocate

Returns

cuvsError_t

Multi-GPU CAGRA index build

cuvsMultiGpuCagraBuild

Build a Multi-GPU CAGRA index

1cuvsError_t cuvsMultiGpuCagraBuild(cuvsResources_t res,
2cuvsMultiGpuCagraIndexParams_t params,
3DLManagedTensor* dataset_tensor,
4cuvsMultiGpuCagraIndex_t index);

Parameters

NameDirectionTypeDescription
resincuvsResources_tcuvsResources_t opaque C handle
paramsincuvsMultiGpuCagraIndexParams_tMulti-GPU CAGRA index parameters
dataset_tensorinDLManagedTensor*DLManagedTensor* training dataset
indexoutcuvsMultiGpuCagraIndex_tMulti-GPU CAGRA index

Returns

cuvsError_t

cuvsMultiGpuCagraSearch

Search a Multi-GPU CAGRA index

1cuvsError_t cuvsMultiGpuCagraSearch(cuvsResources_t res,
2cuvsMultiGpuCagraSearchParams_t params,
3cuvsMultiGpuCagraIndex_t index,
4DLManagedTensor* queries_tensor,
5DLManagedTensor* neighbors_tensor,
6DLManagedTensor* distances_tensor);

Parameters

NameDirectionTypeDescription
resincuvsResources_tcuvsResources_t opaque C handle
paramsincuvsMultiGpuCagraSearchParams_tMulti-GPU CAGRA search parameters
indexincuvsMultiGpuCagraIndex_tMulti-GPU CAGRA index
queries_tensorinDLManagedTensor*DLManagedTensor* queries dataset
neighbors_tensoroutDLManagedTensor*DLManagedTensor* output neighbors
distances_tensoroutDLManagedTensor*DLManagedTensor* output distances

Returns

cuvsError_t

Multi-GPU CAGRA index extend

cuvsMultiGpuCagraExtend

Extend a Multi-GPU CAGRA index

1cuvsError_t cuvsMultiGpuCagraExtend(cuvsResources_t res,
2cuvsMultiGpuCagraIndex_t index,
3DLManagedTensor* new_vectors_tensor,
4DLManagedTensor* new_indices_tensor);

Parameters

NameDirectionTypeDescription
resincuvsResources_tcuvsResources_t opaque C handle
indexin,outcuvsMultiGpuCagraIndex_tMulti-GPU CAGRA index to extend
new_vectors_tensorinDLManagedTensor*DLManagedTensor* new vectors to add
new_indices_tensorinDLManagedTensor*DLManagedTensor* new indices (optional, can be NULL)

Returns

cuvsError_t

Multi-GPU CAGRA index serialize

cuvsMultiGpuCagraSerialize

Serialize a Multi-GPU CAGRA index to file

1cuvsError_t cuvsMultiGpuCagraSerialize(cuvsResources_t res,
2cuvsMultiGpuCagraIndex_t index,
3const char* filename);

Parameters

NameDirectionTypeDescription
resincuvsResources_tcuvsResources_t opaque C handle
indexincuvsMultiGpuCagraIndex_tMulti-GPU CAGRA index to serialize
filenameinconst char*Path to the output file

Returns

cuvsError_t

Multi-GPU CAGRA index deserialize

cuvsMultiGpuCagraDeserialize

Deserialize a Multi-GPU CAGRA index from file

1cuvsError_t cuvsMultiGpuCagraDeserialize(cuvsResources_t res,
2const char* filename,
3cuvsMultiGpuCagraIndex_t index);

Parameters

NameDirectionTypeDescription
resincuvsResources_tcuvsResources_t opaque C handle
filenameinconst char*Path to the input file
indexoutcuvsMultiGpuCagraIndex_tMulti-GPU CAGRA index

Returns

cuvsError_t

Multi-GPU CAGRA index distribute

cuvsMultiGpuCagraDistribute

Distribute a local CAGRA index to create a Multi-GPU index

1cuvsError_t cuvsMultiGpuCagraDistribute(cuvsResources_t res,
2const char* filename,
3cuvsMultiGpuCagraIndex_t index);

Parameters

NameDirectionTypeDescription
resincuvsResources_tcuvsResources_t opaque C handle
filenameinconst char*Path to the local index file
indexoutcuvsMultiGpuCagraIndex_tMulti-GPU CAGRA index

Returns

cuvsError_t