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.

struct cuvsMultiGpuIvfFlatIndexParams {
cuvsIvfFlatIndexParams_t base_params;
cuvsMultiGpuDistributionMode mode;
};

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

cuvsError_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

cuvsError_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.

struct cuvsMultiGpuIvfFlatSearchParams {
cuvsIvfFlatSearchParams_t base_params;
cuvsMultiGpuReplicatedSearchMode search_mode;
cuvsMultiGpuShardedMergeMode merge_mode;
int64_t n_rows_per_batch;
};

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

cuvsError_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

cuvsError_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

typedef struct {
uintptr_t addr;
DLDataType dtype;
} cuvsMultiGpuIvfFlatIndex;

Fields

NameTypeDescription
addruintptr_t
dtypeDLDataType

cuvsMultiGpuIvfFlatIndexCreate

Allocate Multi-GPU IVF-Flat index

cuvsError_t cuvsMultiGpuIvfFlatIndexCreate(cuvsMultiGpuIvfFlatIndex_t* index);

Parameters

NameDirectionTypeDescription
indexincuvsMultiGpuIvfFlatIndex_t*cuvsMultiGpuIvfFlatIndex_t to allocate

Returns

cuvsError_t

cuvsMultiGpuIvfFlatIndexDestroy

De-allocate Multi-GPU IVF-Flat index

cuvsError_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

cuvsError_t cuvsMultiGpuIvfFlatBuild(cuvsResources_t res,
cuvsMultiGpuIvfFlatIndexParams_t params,
DLManagedTensor* dataset_tensor,
cuvsMultiGpuIvfFlatIndex_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

cuvsError_t cuvsMultiGpuIvfFlatSearch(cuvsResources_t res,
cuvsMultiGpuIvfFlatSearchParams_t params,
cuvsMultiGpuIvfFlatIndex_t index,
DLManagedTensor* queries_tensor,
DLManagedTensor* neighbors_tensor,
DLManagedTensor* 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

cuvsError_t cuvsMultiGpuIvfFlatExtend(cuvsResources_t res,
cuvsMultiGpuIvfFlatIndex_t index,
DLManagedTensor* new_vectors_tensor,
DLManagedTensor* 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

cuvsError_t cuvsMultiGpuIvfFlatSerialize(cuvsResources_t res,
cuvsMultiGpuIvfFlatIndex_t index,
const 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

cuvsError_t cuvsMultiGpuIvfFlatDeserialize(cuvsResources_t res,
const char* filename,
cuvsMultiGpuIvfFlatIndex_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

cuvsError_t cuvsMultiGpuIvfFlatDistribute(cuvsResources_t res,
const char* filename,
cuvsMultiGpuIvfFlatIndex_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