从源构建#

这些说明已在受支持的 Linux、CUDA 和 Python 版本/发行版上测试 - 有关支持的环境列表,请参阅 RAPIDS 入门。其他环境可能兼容,但目前未经测试。

先决条件#

编译器

  • gcc 版本 9.3+

  • nvcc 版本 11.5+

CUDA

  • CUDA 11.8+

  • NVIDIA GPU,Volta 架构或更高版本,计算能力 7.0+

有关这些先决条件的更多详细信息和下载链接,请访问 RAPIDS 系统要求页面

设置开发环境#

克隆仓库:#

CUGRAPH_HOME=$(pwd)/cugraph
git clone https://github.com/rapidsai/cugraph.git $CUGRAPH_HOME
cd $CUGRAPH_HOME

创建 conda 环境#

使用 conda 是安装 cugraph 构建和运行时依赖项最简单的方法。虽然可以在不使用 conda 的情况下构建和运行 cugraph,但所需的软件包偶尔会发生变化,这使得在此处难以记录。查看构建和运行环境所需当前依赖项的最佳方法是检查 conda 环境 YAML 文件中的软件包列表。

# for CUDA 11.x
conda env create --name cugraph_dev --file $CUGRAPH_HOME/conda/environments/all_cuda-118_arch-x86_64.yaml

# for CUDA 12.x
conda env create --name cugraph_dev --file $CUGRAPH_HOME/conda/environments/all_cuda-125_arch-x86_64.yaml


# activate the environment
conda activate cugraph_dev

# to deactivate an environment
conda deactivate

环境可以随着 cugraph 添加/移除/更新其依赖项而更新。为此,运行

# for CUDA 11.x
conda env update --name cugraph_dev --file $CUGRAPH_HOME/conda/environments/all_cuda-118_arch-x86_64.yaml
conda activate cugraph_dev

# for CUDA 12.x
conda env update --name cugraph_dev --file $CUGRAPH_HOME/conda/environments/all_cuda-125_arch-x86_64.yaml
conda activate cugraph_dev

构建并安装#

使用 build.sh 构建并安装#

使用位于 $CUGRAPH_HOME 目录中的 build.sh 脚本是构建和安装 cugraph 库的推荐方法。默认情况下,build.sh 将构建并安装一组预定义的目标(软件包/库),但也可以接受要构建的目标列表。

例如,要仅构建 cugraph C++ 库 (libcugraph) 和高级 python 库 (cugraph) 而不构建 C++ 测试二进制文件,请运行此命令

$ cd $CUGRAPH_HOME
$ ./build.sh libcugraph pylibcugraph cugraph --skip_cpp_tests

构建脚本上还有其他几个可供高级用户使用的选项。有关详细信息,请参阅 --help 的输出。

请注意,如果设置了 $PREFIX(即 export PREFIX=/install/path),库将安装到 $PREFIX 中设置的位置,否则安装到 $CONDA_PREFIX

更新 RAFT 分支#

libcugraph 使用 RAFT 库,有时可能需要针对不同的 RAFT 分支进行构建,例如在开发可能涉及 RAFT 和 cuGraph 的新功能时。

对于本地开发,可以将 CPM_raft_SOURCE=<path/to/raft/source> 选项传递给 cmake 命令,以使 libcugraph 使用本地 RAFT 分支。build.sh 脚本调用 cmake 来构建 C/C++ 目标,但开发人员可以直接调用 cmake 以传递此处描述的选项。请参阅 build.sh 脚本以了解如何直接调用 cmake 和其他命令。

要让 CI 测试针对不同 RAFT 分支的 cugraph 拉取请求,请按如下方式修改 cpp/cmake/thirdparty/get_raft.cmake 文件底部

# Change pinned tag and fork here to test a commit in CI
# To use a different RAFT locally, set the CMake variable
# RPM_raft_SOURCE=/path/to/local/raft
find_and_configure_raft(VERSION    ${CUGRAPH_MIN_VERSION_raft}
                        FORK       <your_git_fork>
                        PINNED_TAG <your_git_branch_or_tag>

                        # When PINNED_TAG above doesn't match cugraph,
                        # force local raft clone in build directory
                        # even if it's already installed.
                        CLONE_ON_PIN     ON
                        )

当上述更改推送到拉取请求时,持续集成服务器将使用指定的 RAFT 分支运行 cuGraph 测试。将 RAFT 分支中的更改合并到发布分支后,请记得将 get_raft.cmake 文件恢复到原始的 cuGraph 分支。

运行测试#

如果您已经拥有数据集

export RAPIDS_DATASET_ROOT_DIR=<path_to_ccp_test_and_reference_data>

如果您没有数据集

cd $CUGRAPH_HOME/datasets
source get_test_data.sh #This takes about 10 minutes and downloads 1GB data (>5 GB uncompressed)

运行带数据集的 C++ 或 Python 测试

  • 带数据集的 Python 测试

    pip install python-louvain #some tests require this package to run
    cd $CUGRAPH_HOME
    cd python
    pytest
    
  • C++ 独立测试

    从构建目录

    # Run the cugraph tests
    cd $CUGRAPH_HOME
    cd cpp/build
    gtests/GDFGRAPH_TEST		# this is an executable file
    
  • 带更大数据集的 C++ 测试

    在大型输入上运行 C++ 测试

    cd $CUGRAPH_HOME/cpp/build
    #test one particular analytics (eg. pagerank)
    gtests/PAGERANK_TEST
    #test everything
    make test
    

注意:此 conda 安装仅适用于 Linux 和 Python 版本 3.10、3.11 和 3.12。

(可选)在激活时设置环境变量#

可以将 conda 环境配置为在激活时设置环境变量。提供设置 PATH 以包含 CUDA 工具包 bin 目录和 LD_LIBRARY_PATH 以包含 CUDA lib64 目录的说明将很有帮助。

cd  ~/anaconda3/envs/cugraph_dev

mkdir -p ./etc/conda/activate.d
mkdir -p ./etc/conda/deactivate.d
touch ./etc/conda/activate.d/env_vars.sh
touch ./etc/conda/deactivate.d/env_vars.sh

接下来需要编辑 env_vars.sh 文件

vi ./etc/conda/activate.d/env_vars.sh

#!/bin/bash
export PATH=/usr/local/cuda-11.0/bin:$PATH # or cuda-11.1 if using CUDA 11.1 and cuda-11.2 if using CUDA 11.2, respectively
export LD_LIBRARY_PATH=/usr/local/cuda-11.0/lib64:$LD_LIBRARY_PATH # or cuda-11.1 if using CUDA 11.1 and cuda-11.2 if using CUDA 11.2, respectively
vi ./etc/conda/deactivate.d/env_vars.sh

#!/bin/bash
unset PATH
unset LD_LIBRARY_PATH

创建文档#

可以从 ./docs/cugraph 目录生成 Python API 文档。或者通过使用“./build.sh docs”

归属#

部分内容采用自 https://github.com/pytorch/pytorch/blob/master/CONTRIBUTING.md