安装#

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

安装预编译包#

通过 Conda 安装 C、C++ 和 Python#

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

根据您的 CUDA 版本,使用以下命令安装 cuVS 包(将 rapidsai 替换为 rapidsai-nightly 以安装更及时但不稳定的每夜构建包)。mambaconda 命令更受欢迎,可以通过 本指南 启用。

C/C++ 包#

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

Python 包#

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

通过 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 Toolkit 11.4+

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

创建构建环境#

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

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

使用 CUDA 11 从源代码构建的过程略有不同,您的主机系统还需要安装等于或高于您安装到 Conda 环境中的版本的 CUDA 工具包。必须在主机系统上安装 CUDA 工具包,因为 Conda 的 CUDA 11 的 cudatoolkit 依赖项不提供 nvcc。以下示例将创建一个 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 的 artifact,并提供 CMake 选项来构建和安装头文件、测试、基准测试以及预编译的共享库。

C 和 C++ 库#

使用 build.sh 的以下参数一起构建 C 和 C++ 共享库

./build.sh libcuvs

在上述示例中,libcuvs.solibcuvs_c.so 共享库默认安装到 $INSTALL_PREFIX/lib。要禁用此功能,请传递 -n 标志。

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

./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 标志#

标志

可能值

默认值

行为

BUILD_TESTS

ON, OFF

ON

编译 Googletests

CUDA_ENABLE_KERNELINFO

ON, OFF

OFF

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

CUDA_ENABLE_LINEINFO

ON, OFF

OFF

为 nvcc 启用 -lineinfo 选项

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