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