Multi-GPU IVF Flat

View as Markdown

Source header: cuvs/neighbors/mg_ivf_flat.h

Multi-GPU IVF-Flat index build parameters

cuvsMultiGpuIvfFlatIndexParams

Multi-GPU parameters to build IVF-Flat Index

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

1struct cuvsMultiGpuIvfFlatIndexParams {
2 cuvsIvfFlatIndexParams_t base_params;
3 cuvsMultiGpuDistributionMode mode;
4};

Fields

NameTypeDescription
base_paramscuvsIvfFlatIndexParams_tBase IVF-Flat index parameters
modecuvsMultiGpuDistributionModeDistribution mode for multi-GPU setup

cuvsMultiGpuIvfFlatIndexParamsCreate

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

1cuvsError_t cuvsMultiGpuIvfFlatIndexParamsCreate(cuvsMultiGpuIvfFlatIndexParams_t* index_params);

Parameters

NameDirectionTypeDescription
index_paramsincuvsMultiGpuIvfFlatIndexParams_t*cuvsMultiGpuIvfFlatIndexParams_t to allocate

Returns

cuvsError_t

cuvsMultiGpuIvfFlatIndexParamsDestroy

De-allocate Multi-GPU IVF-Flat Index params

1cuvsError_t cuvsMultiGpuIvfFlatIndexParamsDestroy(cuvsMultiGpuIvfFlatIndexParams_t index_params);

Parameters

NameDirectionTypeDescription
index_paramsincuvsMultiGpuIvfFlatIndexParams_t

Returns

cuvsError_t

Multi-GPU IVF-Flat index search parameters

cuvsMultiGpuIvfFlatSearchParams

Multi-GPU parameters to search IVF-Flat index

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

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

Fields

NameTypeDescription
base_paramscuvsIvfFlatSearchParams_tBase IVF-Flat search parameters
search_modecuvsMultiGpuReplicatedSearchModeReplicated search mode
merge_modecuvsMultiGpuShardedMergeModeSharded merge mode
n_rows_per_batchint64_tNumber of rows per batch

cuvsMultiGpuIvfFlatSearchParamsCreate

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

1cuvsError_t cuvsMultiGpuIvfFlatSearchParamsCreate(cuvsMultiGpuIvfFlatSearchParams_t* params);

Parameters

NameDirectionTypeDescription
paramsincuvsMultiGpuIvfFlatSearchParams_t*cuvsMultiGpuIvfFlatSearchParams_t to allocate

Returns

cuvsError_t

cuvsMultiGpuIvfFlatSearchParamsDestroy

De-allocate Multi-GPU IVF-Flat search params

1cuvsError_t cuvsMultiGpuIvfFlatSearchParamsDestroy(cuvsMultiGpuIvfFlatSearchParams_t params);

Parameters

NameDirectionTypeDescription
paramsincuvsMultiGpuIvfFlatSearchParams_t

Returns

cuvsError_t

Multi-GPU IVF-Flat index

cuvsMultiGpuIvfFlatIndex

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

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

Fields

NameTypeDescription
addruintptr_t
dtypeDLDataType

cuvsMultiGpuIvfFlatIndexCreate

Allocate Multi-GPU IVF-Flat index

1cuvsError_t cuvsMultiGpuIvfFlatIndexCreate(cuvsMultiGpuIvfFlatIndex_t* index);

Parameters

NameDirectionTypeDescription
indexincuvsMultiGpuIvfFlatIndex_t*cuvsMultiGpuIvfFlatIndex_t to allocate

Returns

cuvsError_t

cuvsMultiGpuIvfFlatIndexDestroy

De-allocate Multi-GPU IVF-Flat index

1cuvsError_t cuvsMultiGpuIvfFlatIndexDestroy(cuvsMultiGpuIvfFlatIndex_t index);

Parameters

NameDirectionTypeDescription
indexincuvsMultiGpuIvfFlatIndex_tcuvsMultiGpuIvfFlatIndex_t to de-allocate

Returns

cuvsError_t

Multi-GPU IVF-Flat index build

cuvsMultiGpuIvfFlatBuild

Build a Multi-GPU IVF-Flat index

1cuvsError_t cuvsMultiGpuIvfFlatBuild(cuvsResources_t res,
2cuvsMultiGpuIvfFlatIndexParams_t params,
3DLManagedTensor* dataset_tensor,
4cuvsMultiGpuIvfFlatIndex_t index);

Parameters

NameDirectionTypeDescription
resincuvsResources_tcuvsResources_t opaque C handle
paramsincuvsMultiGpuIvfFlatIndexParams_tMulti-GPU IVF-Flat index parameters
dataset_tensorinDLManagedTensor*DLManagedTensor* training dataset
indexoutcuvsMultiGpuIvfFlatIndex_tMulti-GPU IVF-Flat index

Returns

cuvsError_t

cuvsMultiGpuIvfFlatSearch

Search a Multi-GPU IVF-Flat index

1cuvsError_t cuvsMultiGpuIvfFlatSearch(cuvsResources_t res,
2cuvsMultiGpuIvfFlatSearchParams_t params,
3cuvsMultiGpuIvfFlatIndex_t index,
4DLManagedTensor* queries_tensor,
5DLManagedTensor* neighbors_tensor,
6DLManagedTensor* distances_tensor);

Parameters

NameDirectionTypeDescription
resincuvsResources_tcuvsResources_t opaque C handle
paramsincuvsMultiGpuIvfFlatSearchParams_tMulti-GPU IVF-Flat search parameters
indexincuvsMultiGpuIvfFlatIndex_tMulti-GPU IVF-Flat index
queries_tensorinDLManagedTensor*DLManagedTensor* queries dataset
neighbors_tensoroutDLManagedTensor*DLManagedTensor* output neighbors
distances_tensoroutDLManagedTensor*DLManagedTensor* output distances

Returns

cuvsError_t

Multi-GPU IVF-Flat index extend

cuvsMultiGpuIvfFlatExtend

Extend a Multi-GPU IVF-Flat index

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

Parameters

NameDirectionTypeDescription
resincuvsResources_tcuvsResources_t opaque C handle
indexin,outcuvsMultiGpuIvfFlatIndex_tMulti-GPU IVF-Flat 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 IVF-Flat index serialize

cuvsMultiGpuIvfFlatSerialize

Serialize a Multi-GPU IVF-Flat index to file

1cuvsError_t cuvsMultiGpuIvfFlatSerialize(cuvsResources_t res,
2cuvsMultiGpuIvfFlatIndex_t index,
3const char* filename);

Parameters

NameDirectionTypeDescription
resincuvsResources_tcuvsResources_t opaque C handle
indexincuvsMultiGpuIvfFlatIndex_tMulti-GPU IVF-Flat index to serialize
filenameinconst char*Path to the output file

Returns

cuvsError_t

Multi-GPU IVF-Flat index deserialize

cuvsMultiGpuIvfFlatDeserialize

Deserialize a Multi-GPU IVF-Flat index from file

1cuvsError_t cuvsMultiGpuIvfFlatDeserialize(cuvsResources_t res,
2const char* filename,
3cuvsMultiGpuIvfFlatIndex_t index);

Parameters

NameDirectionTypeDescription
resincuvsResources_tcuvsResources_t opaque C handle
filenameinconst char*Path to the input file
indexoutcuvsMultiGpuIvfFlatIndex_tMulti-GPU IVF-Flat index

Returns

cuvsError_t

Multi-GPU IVF-Flat index distribute

cuvsMultiGpuIvfFlatDistribute

Distribute a local IVF-Flat index to create a Multi-GPU index

1cuvsError_t cuvsMultiGpuIvfFlatDistribute(cuvsResources_t res,
2const char* filename,
3cuvsMultiGpuIvfFlatIndex_t index);

Parameters

NameDirectionTypeDescription
resincuvsResources_tcuvsResources_t opaque C handle
filenameinconst char*Path to the local index file
indexoutcuvsMultiGpuIvfFlatIndex_tMulti-GPU IVF-Flat index

Returns

cuvsError_t