Skip to main content

cuvsCagraSearch

Function cuvsCagraSearch 

Source
pub unsafe extern "C" fn cuvsCagraSearch(
    res: cuvsResources_t,
    params: cuvsCagraSearchParams_t,
    index: cuvsCagraIndex_t,
    queries: *mut DLManagedTensor,
    neighbors: *mut DLManagedTensor,
    distances: *mut DLManagedTensor,
    filter: cuvsFilter,
) -> cuvsError_t
Expand description

@defgroup cagra_c_index_search C API for CUDA ANN Graph-based nearest neighbor search @{ / /** @brief Search a CAGRA index with a DLManagedTensor which has underlying DLDeviceType equal to kDLCUDA, kDLCUDAHost, kDLCUDAManaged. It is also important to note that the CAGRA Index must have been built with the same type of queries, such that index.dtype.code == queries.dl_tensor.dtype.code Types for input are: 1. queries: a. kDLDataType.code == kDLFloat and kDLDataType.bits = 32 b. kDLDataType.code == kDLFloat and kDLDataType.bits = 16 c. kDLDataType.code == kDLInt and kDLDataType.bits = 8 d. kDLDataType.code == kDLUInt and kDLDataType.bits = 8 2. neighbors: kDLDataType.code == kDLUInt and kDLDataType.bits = 32 or kDLDataType.code == kDLInt and kDLDataType.bits = 64 3. distances: kDLDataType.code == kDLFloat and kDLDataType.bits = 32

@code {.c} #include <cuvs/core/c_api.h> #include <cuvs/neighbors/cagra.h>

// Create cuvsResources_t cuvsResources_t res; cuvsError_t res_create_status = cuvsResourcesCreate(&res);

// Assume a populated DLManagedTensor type here DLManagedTensor dataset; DLManagedTensor queries; DLManagedTensor neighbors;

// Create default search params cuvsCagraSearchParams_t params; cuvsError_t params_create_status = cuvsCagraSearchParamsCreate(&params);

// Search the index built using cuvsCagraBuild cuvsError_t search_status = cuvsCagraSearch(res, params, index, &queries, &neighbors, &distances);

// de-allocate params and res cuvsError_t params_destroy_status = cuvsCagraSearchParamsDestroy(params); cuvsError_t res_destroy_status = cuvsResourcesDestroy(res); @endcode

@param[in] res cuvsResources_t opaque C handle @param[in] params cuvsCagraSearchParams_t used to search CAGRA index @param[in] index cuvsCagraIndex which has been returned by cuvsCagraBuild @param[in] queries DLManagedTensor* queries dataset to search @param[out] neighbors DLManagedTensor* output k neighbors for queries @param[out] distances DLManagedTensor* output k distances for queries @param[in] filter cuvsFilter input filter that can be used to filter queries and neighbors based on the given bitset.