从源码构建 cuVS Bench#
依赖项#
运行基准测试需要 CUDA 11 和 Volta 架构或更高版本的 GPU。
请参阅安装文档,了解构建 cuVS 的基本要求。
除了构建 cuVS 的基本要求外,构建 ANN 基准测试所需的额外依赖项包括: 1. FAISS GPU >= 1.7.1 2. Google Logging (GLog) 3. H5Py 4. HNSWLib 5. nlohmann_json 6. GGNN
使用 rapids-cmake 构建 ANN 基准测试,因此 CUDA 工具包中未提供的依赖项代码将自动下载和构建。
安装构建 ANN 基准测试所需依赖项最简单(且最可重现)的方法是使用位于 cuVS 仓库 conda/environments
目录中的 conda 环境文件。以下命令将使用 mamba
(优先于 conda
)构建并激活一个新的环境来编译基准测试
conda env create --name cuvs_benchmarks -f conda/environments/cuvs_bench_cuda-118_arch-x86_64.yaml
conda activate cuvs_benchmarks
上述 conda 环境也将减少编译时间,因为像 FAISS 这样的依赖项将已被安装,无需通过 rapids-cmake
编译。
编译基准测试#
满足所需依赖项后,编译 ANN 基准测试最简单的方法是使用 RAFT 源代码仓库根目录下的 build.sh
脚本。以下命令将构建所有支持算法的可执行文件
./build.sh bench-ann
您可以通过提供以分号分隔的可执行文件名列表来限制构建的算法(每个算法都带有 _ANN_BENCH
后缀)
./build.sh bench-ann -n --limit-bench-ann=HNSWLIB_ANN_BENCH;CUVS_IVF_PQ_ANN_BENCH
可与 --limit-bench-ann
一起使用的可用目标包括: - FAISS_GPU_IVF_FLAT_ANN_BENCH - FAISS_GPU_IVF_PQ_ANN_BENCH - FAISS_CPU_IVF_FLAT_ANN_BENCH - FAISS_CPU_IVF_PQ_ANN_BENCH - FAISS_GPU_FLAT_ANN_BENCH - FAISS_CPU_FLAT_ANN_BENCH - GGNN_ANN_BENCH - HNSWLIB_ANN_BENCH - CUVS_CAGRA_ANN_BENCH - CUVS_IVF_PQ_ANN_BENCH - CUVS_IVF_FLAT_ANN_BENCH
默认情况下,*_ANN_BENCH
可执行程序通过文件名扩展名推断数据集的数据类型。例如,扩展名为 fbin
使用 float
数据类型,f16bin
使用 float16
数据类型,扩展名为 i8bin
使用 int8_t
数据类型,u8bin
使用 uint8_t
类型。目前仅支持 float
、float16
、int8_t` 和 uint8_t
类型。