pub unsafe extern "C" fn cuvsHnswBuild(
res: cuvsResources_t,
params: cuvsHnswIndexParams_t,
dataset: *mut DLManagedTensor,
index: cuvsHnswIndex_t,
) -> cuvsError_tExpand description
@brief Build an HNSW index using ACE (Augmented Core Extraction) algorithm.
ACE enables building HNSW indexes for datasets too large to fit in GPU memory by:
- Partitioning the dataset using balanced k-means into core and augmented partitions
- Building sub-indexes for each partition independently
- Concatenating sub-graphs into a final unified index
NOTE: This function requires CUDA to be available at runtime.
@param[in] res cuvsResources_t opaque C handle @param[in] params cuvsHnswIndexParams_t with ACE parameters configured @param[in] dataset DLManagedTensor* host dataset to build index from @param[out] index cuvsHnswIndex_t to return the built HNSW index
@return cuvsError_t
@code{.c} #include <cuvs/core/c_api.h> #include <cuvs/neighbors/hnsw.h>
// Create cuvsResources_t cuvsResources_t res; cuvsResourcesCreate(&res);
// Create ACE parameters cuvsHnswAceParams_t ace_params; cuvsHnswAceParamsCreate(&ace_params); ace_params->npartitions = 4; ace_params->use_disk = true; ace_params->build_dir = “/tmp/hnsw_ace_build”;
// Create index parameters cuvsHnswIndexParams_t params; cuvsHnswIndexParamsCreate(¶ms); params->hierarchy = GPU; params->ace_params = ace_params; params->M = 32; params->ef_construction = 120;
// Create HNSW index cuvsHnswIndex_t hnsw_index; cuvsHnswIndexCreate(&hnsw_index);
// Assume dataset is a populated DLManagedTensor with host data DLManagedTensor dataset;
// Build the index cuvsHnswBuild(res, params, &dataset, hnsw_index);
// Clean up cuvsHnswAceParamsDestroy(ace_params); cuvsHnswIndexParamsDestroy(params); cuvsHnswIndexDestroy(hnsw_index); cuvsResourcesDestroy(res); @endcode