Multi-GPU IVF PQ

View as Markdown

Source header: cuvs/neighbors/mg_ivf_pq.h

Multi-GPU IVF-PQ index build parameters

cuvsMultiGpuIvfPqIndexParams

Multi-GPU parameters to build IVF-PQ Index

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

1struct cuvsMultiGpuIvfPqIndexParams { ... };

Fields

NameTypeDescription
base_paramscuvsIvfPqIndexParams_tBase IVF-PQ index parameters
modecuvsMultiGpuDistributionModeDistribution mode for multi-GPU setup

cuvsMultiGpuIvfPqIndexParamsCreate

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

1CUVS_EXPORT cuvsError_t cuvsMultiGpuIvfPqIndexParamsCreate(cuvsMultiGpuIvfPqIndexParams_t* index_params);

Parameters

NameDirectionTypeDescription
index_paramsincuvsMultiGpuIvfPqIndexParams_t*cuvsMultiGpuIvfPqIndexParams_t to allocate

Returns

CUVS_EXPORT cuvsError_t

cuvsMultiGpuIvfPqIndexParamsDestroy

De-allocate Multi-GPU IVF-PQ Index params

1CUVS_EXPORT cuvsError_t cuvsMultiGpuIvfPqIndexParamsDestroy(cuvsMultiGpuIvfPqIndexParams_t index_params);

Parameters

NameDirectionTypeDescription
index_paramsincuvsMultiGpuIvfPqIndexParams_t

Returns

CUVS_EXPORT cuvsError_t

Multi-GPU IVF-PQ index search parameters

cuvsMultiGpuIvfPqSearchParams

Multi-GPU parameters to search IVF-PQ index

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

1struct cuvsMultiGpuIvfPqSearchParams { ... };

Fields

NameTypeDescription
base_paramscuvsIvfPqSearchParams_tBase IVF-PQ search parameters
search_modecuvsMultiGpuReplicatedSearchModeReplicated search mode
merge_modecuvsMultiGpuShardedMergeModeSharded merge mode
n_rows_per_batchint64_tNumber of rows per batch

cuvsMultiGpuIvfPqSearchParamsCreate

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

1CUVS_EXPORT cuvsError_t cuvsMultiGpuIvfPqSearchParamsCreate(cuvsMultiGpuIvfPqSearchParams_t* params);

Parameters

NameDirectionTypeDescription
paramsincuvsMultiGpuIvfPqSearchParams_t*cuvsMultiGpuIvfPqSearchParams_t to allocate

Returns

CUVS_EXPORT cuvsError_t

cuvsMultiGpuIvfPqSearchParamsDestroy

De-allocate Multi-GPU IVF-PQ search params

1CUVS_EXPORT cuvsError_t cuvsMultiGpuIvfPqSearchParamsDestroy(cuvsMultiGpuIvfPqSearchParams_t params);

Parameters

NameDirectionTypeDescription
paramsincuvsMultiGpuIvfPqSearchParams_t

Returns

CUVS_EXPORT cuvsError_t

Multi-GPU IVF-PQ index

cuvsMultiGpuIvfPqIndex

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

dtype

1typedef struct { ... } cuvsMultiGpuIvfPqIndex;

Fields

NameTypeDescription
addruintptr_t
dtypeDLDataType

cuvsMultiGpuIvfPqIndexCreate

Allocate Multi-GPU IVF-PQ index

1CUVS_EXPORT cuvsError_t cuvsMultiGpuIvfPqIndexCreate(cuvsMultiGpuIvfPqIndex_t* index);

Parameters

NameDirectionTypeDescription
indexincuvsMultiGpuIvfPqIndex_t*cuvsMultiGpuIvfPqIndex_t to allocate

Returns

CUVS_EXPORT cuvsError_t

cuvsMultiGpuIvfPqIndexDestroy

De-allocate Multi-GPU IVF-PQ index

1CUVS_EXPORT cuvsError_t cuvsMultiGpuIvfPqIndexDestroy(cuvsMultiGpuIvfPqIndex_t index);

Parameters

NameDirectionTypeDescription
indexincuvsMultiGpuIvfPqIndex_tcuvsMultiGpuIvfPqIndex_t to de-allocate

Returns

CUVS_EXPORT cuvsError_t

Multi-GPU IVF-PQ index build

cuvsMultiGpuIvfPqBuild

Build a Multi-GPU IVF-PQ index

1CUVS_EXPORT cuvsError_t cuvsMultiGpuIvfPqBuild(cuvsResources_t res,
2cuvsMultiGpuIvfPqIndexParams_t params,
3DLManagedTensor* dataset_tensor,
4cuvsMultiGpuIvfPqIndex_t index);

Parameters

NameDirectionTypeDescription
resincuvsResources_tcuvsResources_t opaque C handle
paramsincuvsMultiGpuIvfPqIndexParams_tMulti-GPU IVF-PQ index parameters
dataset_tensorinDLManagedTensor*DLManagedTensor* training dataset
indexoutcuvsMultiGpuIvfPqIndex_tMulti-GPU IVF-PQ index

Returns

CUVS_EXPORT cuvsError_t

cuvsMultiGpuIvfPqSearch

Search a Multi-GPU IVF-PQ index

1CUVS_EXPORT cuvsError_t cuvsMultiGpuIvfPqSearch(cuvsResources_t res,
2cuvsMultiGpuIvfPqSearchParams_t params,
3cuvsMultiGpuIvfPqIndex_t index,
4DLManagedTensor* queries_tensor,
5DLManagedTensor* neighbors_tensor,
6DLManagedTensor* distances_tensor);

Parameters

NameDirectionTypeDescription
resincuvsResources_tcuvsResources_t opaque C handle
paramsincuvsMultiGpuIvfPqSearchParams_tMulti-GPU IVF-PQ search parameters
indexincuvsMultiGpuIvfPqIndex_tMulti-GPU IVF-PQ index
queries_tensorinDLManagedTensor*DLManagedTensor* queries dataset
neighbors_tensoroutDLManagedTensor*DLManagedTensor* output neighbors
distances_tensoroutDLManagedTensor*DLManagedTensor* output distances

Returns

CUVS_EXPORT cuvsError_t

Multi-GPU IVF-PQ index extend

cuvsMultiGpuIvfPqExtend

Extend a Multi-GPU IVF-PQ index

1CUVS_EXPORT cuvsError_t cuvsMultiGpuIvfPqExtend(cuvsResources_t res,
2cuvsMultiGpuIvfPqIndex_t index,
3DLManagedTensor* new_vectors_tensor,
4DLManagedTensor* new_indices_tensor);

Parameters

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

cuvsMultiGpuIvfPqSerialize

Serialize a Multi-GPU IVF-PQ index to file

1CUVS_EXPORT cuvsError_t cuvsMultiGpuIvfPqSerialize(cuvsResources_t res,
2cuvsMultiGpuIvfPqIndex_t index,
3const char* filename);

Parameters

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

Returns

CUVS_EXPORT cuvsError_t

Multi-GPU IVF-PQ index deserialize

cuvsMultiGpuIvfPqDeserialize

Deserialize a Multi-GPU IVF-PQ index from file

1CUVS_EXPORT cuvsError_t cuvsMultiGpuIvfPqDeserialize(cuvsResources_t res,
2const char* filename,
3cuvsMultiGpuIvfPqIndex_t index);

Parameters

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

Returns

CUVS_EXPORT cuvsError_t

Multi-GPU IVF-PQ index distribute

cuvsMultiGpuIvfPqDistribute

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

1CUVS_EXPORT cuvsError_t cuvsMultiGpuIvfPqDistribute(cuvsResources_t res,
2const char* filename,
3cuvsMultiGpuIvfPqIndex_t index);

Parameters

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

Returns

CUVS_EXPORT cuvsError_t