安装#

cuVS软件开发工具包提供了C、C++、Python和Rust语言的API接口。本指南概述了如何安装预编译的包、从源代码构建以及在下游应用程序中使用它。

安装预编译包#

通过Conda使用C、C++和Python#

安装预编译的C、C++和Python包的最简单方法是通过conda。您可以通过miniforge获得一个最小的conda安装。

根据您的CUDA版本,使用以下命令安装cuVS包(将rapidsai替换为rapidsai-nightly以安装更新但不那么稳定的夜间包)。mamba优于conda命令,并且可以使用此指南启用。

C/C++ 包#

conda install -c rapidsai -c conda-forge -c nvidia libcuvs cuda-version=12.5

Python 包#

conda install -c rapidsai -c conda-forge -c nvidia cuvs cuda-version=12.5

通过Pip安装Python#

cuVS Python 包也可以通过 pip 安装

对于CUDA 11包:

pip install cuvs-cu11 --extra-index-url=https://pypi.nvidia.com

以及CUDA 12包:

pip install cuvs-cu12 --extra-index-url=https://pypi.nvidia.com

注意:这些包静态链接了C和C++库,因此libcuvslibcuvs_c共享库不会在您的代码中直接可用。

从源代码构建#

核心的cuVS源代码是用C++编写的,并通过C API进行封装。C API围绕C++ API进行封装,其他支持的语言则围绕C API构建。

先决条件#

  • CMake 3.26.4+

  • GCC 9.3+(推荐11.4+)

  • CUDA 工具包 11.4+

  • Volta架构或更高版本(计算能力 >= 7.0)

创建一个构建环境#

提供了Conda环境脚本,用于安装从源代码构建cuVS所需的依赖项。建议使用mamba,因为它比conda提供了显著的加速:

conda env create --name cuvs -f conda/environments/all_cuda-125_arch-x86_64.yaml
conda activate cuvs

使用CUDA 11从源代码构建的过程略有不同,因为您的主机系统还需要安装CUDA工具包,其版本大于或等于您在conda环境中安装的版本。在主机系统中安装CUDA工具包是必要的,因为nvcc并未随Conda的cudatoolkit依赖项一起提供用于CUDA 11。以下示例将创建并安装CUDA 11.8 conda环境的依赖项

conda env create --name cuvs -f conda/environments/all_cuda-118_arch-x86_64.yaml
conda activate cuvs

推荐从源代码构建和安装 cuVS 的方法是使用存储库根目录中的 build.sh 脚本。该脚本可以构建 C++ 和 Python 的产物,并提供 CMake 选项用于构建和安装头文件、测试、基准测试以及预编译的共享库。

C和C++库#

C和C++共享库是使用以下参数一起构建的,这些参数传递给build.sh

./build.sh libcuvs

在上面的例子中,默认情况下,libcuvs.solibcuvs_c.so 共享库被安装到 $INSTALL_PREFIX/lib。要禁用此功能,请传递 -n 标志。

安装完成后,可以使用 build.sh 卸载共享库、头文件(以及通过 rapids-cmake 下载并安装的任何依赖项):

./build.sh libcuvs --uninstall

多GPU功能#

要禁用多GPU功能,请运行:

./build.sh libcuvs --no-mg

构建Googletests#

使用build.sh中的tests目标编译C和C++的Googletests。

./build.sh libcuvs tests

测试将被写入构建目录,默认情况下是cpp/build/,并且它们将被命名为*_TEST

编译所有测试可能需要一些时间。你可以通过在build.sh中提供分号分隔的列表给--limit-tests选项来构建个别测试。确保传递-n标志,以便不安装测试。

./build.sh libcuvs tests -n --limit-tests=NEIGHBORS_TEST;CAGRA_C_TEST

Python库#

Python库应使用build.sh脚本进行构建和安装:

./build.sh python

Python 包也可以使用 build.sh 脚本来卸载:

./build.sh python --uninstall

Rust 库#

Rust 绑定可以使用以下命令构建

./build.sh rust

直接使用CMake#

从源代码构建cuVS时,build.sh脚本提供了一个很好的封装,围绕cmake命令,以减轻手动配置各种可用cmake选项的负担。当需要对CMake配置进行更细粒度的控制时,可以直接调用cmake命令,如下例所示。

CMAKE_INSTALL_PREFIX 将 cuVS 安装到特定位置。以下示例将 cuVS 安装到当前的 Conda 环境中:

cd cpp
mkdir build
cd build
cmake -D BUILD_TESTS=ON -DCMAKE_INSTALL_PREFIX=$CONDA_PREFIX ../
make -j<parallel_level> install

cuVS 有以下可配置的 cmake 标志:

CMake Flags#

标志

可能的值

默认值

行为

BUILD_TESTS

ON, OFF

ON

编译Googletests

CUDA_ENABLE_KERNELINFO

ON, OFF

OFF

在nvcc中启用kernelinfo。这对于compute-sanitizer非常有用

CUDA_ENABLE_LINEINFO

ON, OFF

OFF

启用 -lineinfo 选项用于 nvcc

CUDA_STATIC_RUNTIME

ON, OFF

OFF

静态链接CUDA运行时

CUDA_STATIC_MATH_LIBRARIES

ON, OFF

OFF

静态链接CUDA数学库

DETECT_CONDA_ENV

ON, OFF

ON

启用对依赖项的conda环境检测

CUVS_NVTX

ON, OFF

OFF

启用NVTX标记

构建文档#

文档要求C、C++和Python库已经构建并安装。以下将构建文档以及必要的库:

./build.sh libcuvs python docs