Skip to main content

cuvsHnswBuild

Function cuvsHnswBuild 

Source
pub unsafe extern "C" fn cuvsHnswBuild(
    res: cuvsResources_t,
    params: cuvsHnswIndexParams_t,
    dataset: *mut DLManagedTensor,
    index: cuvsHnswIndex_t,
) -> cuvsError_t
Expand 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:

  1. Partitioning the dataset using balanced k-means into core and augmented partitions
  2. Building sub-indexes for each partition independently
  3. 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(&params); 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