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 { ... };

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

1CUVS_EXPORT cuvsError_t cuvsMultiGpuCagraIndexParamsCreate(cuvsMultiGpuCagraIndexParams_t* index_params);

Parameters

NameDirectionTypeDescription
index_paramsincuvsMultiGpuCagraIndexParams_t*cuvsMultiGpuCagraIndexParams_t to allocate

Returns

CUVS_EXPORT cuvsError_t

cuvsMultiGpuCagraIndexParamsDestroy

De-allocate Multi-GPU CAGRA Index params

1CUVS_EXPORT cuvsError_t cuvsMultiGpuCagraIndexParamsDestroy(cuvsMultiGpuCagraIndexParams_t index_params);

Parameters

NameDirectionTypeDescription
index_paramsincuvsMultiGpuCagraIndexParams_t

Returns

CUVS_EXPORT 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 { ... };

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

1CUVS_EXPORT cuvsError_t cuvsMultiGpuCagraSearchParamsCreate(cuvsMultiGpuCagraSearchParams_t* params);

Parameters

NameDirectionTypeDescription
paramsincuvsMultiGpuCagraSearchParams_t*cuvsMultiGpuCagraSearchParams_t to allocate

Returns

CUVS_EXPORT cuvsError_t

cuvsMultiGpuCagraSearchParamsDestroy

De-allocate Multi-GPU CAGRA search params

1CUVS_EXPORT cuvsError_t cuvsMultiGpuCagraSearchParamsDestroy(cuvsMultiGpuCagraSearchParams_t params);

Parameters

NameDirectionTypeDescription
paramsincuvsMultiGpuCagraSearchParams_t

Returns

CUVS_EXPORT 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 { ... } cuvsMultiGpuCagraIndex;

Fields

NameTypeDescription
addruintptr_t
dtypeDLDataType

cuvsMultiGpuCagraIndexCreate

Allocate Multi-GPU CAGRA index

1CUVS_EXPORT cuvsError_t cuvsMultiGpuCagraIndexCreate(cuvsMultiGpuCagraIndex_t* index);

Parameters

NameDirectionTypeDescription
indexincuvsMultiGpuCagraIndex_t*cuvsMultiGpuCagraIndex_t to allocate

Returns

CUVS_EXPORT cuvsError_t

cuvsMultiGpuCagraIndexDestroy

De-allocate Multi-GPU CAGRA index

1CUVS_EXPORT cuvsError_t cuvsMultiGpuCagraIndexDestroy(cuvsMultiGpuCagraIndex_t index);

Parameters

NameDirectionTypeDescription
indexincuvsMultiGpuCagraIndex_tcuvsMultiGpuCagraIndex_t to de-allocate

Returns

CUVS_EXPORT cuvsError_t

Multi-GPU CAGRA index build

cuvsMultiGpuCagraBuild

Build a Multi-GPU CAGRA index

1CUVS_EXPORT cuvsError_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

CUVS_EXPORT cuvsError_t

cuvsMultiGpuCagraSearch

Search a Multi-GPU CAGRA index

1CUVS_EXPORT cuvsError_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

CUVS_EXPORT cuvsError_t

Multi-GPU CAGRA index extend

cuvsMultiGpuCagraExtend

Extend a Multi-GPU CAGRA index

1CUVS_EXPORT cuvsError_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

CUVS_EXPORT cuvsError_t

Multi-GPU CAGRA index serialize

cuvsMultiGpuCagraSerialize

Serialize a Multi-GPU CAGRA index to file

1CUVS_EXPORT cuvsError_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

CUVS_EXPORT cuvsError_t

Multi-GPU CAGRA index deserialize

cuvsMultiGpuCagraDeserialize

Deserialize a Multi-GPU CAGRA index from file

1CUVS_EXPORT cuvsError_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

CUVS_EXPORT cuvsError_t

Multi-GPU CAGRA index distribute

cuvsMultiGpuCagraDistribute

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

1CUVS_EXPORT cuvsError_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

CUVS_EXPORT cuvsError_t