安装#
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++库,因此libcuvs和libcuvs_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.so 和 libcuvs_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 标志:
标志 |
可能的值 |
默认值 |
行为 |
BUILD_TESTS |
ON, OFF |
ON |
编译Googletests |
CUDA_ENABLE_KERNELINFO |
ON, OFF |
OFF |
在nvcc中启用 |
CUDA_ENABLE_LINEINFO |
ON, OFF |
OFF |
启用 |
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