chenzhen0530

NCCL(NVIDA Collective Communications Library)目的是为了实现Multi-GPU或Multi-node之间的通信;

有两种安装方式,一是具有root权限的安装,二是不具有root权限的安装配置;

1. root用户安装配置NCCL

类似于下载cudnn,需要注册NVIDIA账号,链接:

https://developer.nvidia.com/nccl/nccl-download

下载与CUDA版本、linux系统版本符合的NCCL文件,安装命令如下图所示:

NCCL

2. 非root用户安装配置NCCL

其实多数情况下,我们都不具有root权限,那么如果root管理员也没有为我们在使用的服务器安装配置NCCL,那么就需要我们自己将NCCL配置在个人账号下;那么方法就是从源码进行编译安装;

首先,从github上将NCCL的仓库拉到本地:

git clone https://github.com/NVIDIA/nccl.git

相关安装文档也能从该链接获得;

安装配置:

cd nccl
make -j12 src.build BUILDDIR=/home/chenz/software/nccl CUDA_HOME=/usr/local/cuda NVCC_GENCODE="-gencode=arch=compute_35,code=sm_35"
  • -j12表示使用12个核心,使用nproc查看总核心数,根据具体情况进行调整;
  • BUILDDIR表示编译后,一些文件的存储路径;默认是nccl/build;当然如果是root用户可以指定到/usr/local/ncc/
  • CUDA_HOME表示CUDA的目录,默认就是/usr/local/cuda,但是我这边不加这个,会报错,很奇怪;
  • NVCC_GENCODE,如果不添加该字段,默认会编译支持所有架构;为了加速编译以及降低二进制文件大小,添加该字段,具体comute_35,sm_35应该是和显卡算力相匹配,具体见:CUDA GPUs

最后呢,编译完成的文件都在指定的NVCC_GENCODE字段路径下,需要将其添加到环境变量;

vim ~/.bashrc

在打开的文件中,添加:

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/chenz/software/nccl/lib
export PATH=$PATH:/home/chenz/software/nccl/bin

保存后,执行:

source ~/.bashrc

3. 验证NCCL是否安装成功

选择一个合适的位置:

git clone https://github.com/NVIDIA/nccl-tests.git
cd nccl-tests
make -j12 CUDA_HOME=/usr/local/cuda
./build/all_reduce_perf -b 8 -e 256M -f 2 -g <ngpus>
  • CUDA_HOME有毒啊,不指定就报错;
  • <ngpus>需要用机器GPU的个数替换,我这边有4块2显卡,就指定4

注意的是,指定几块GPU,验证过程就会调用几块;注意别人是否正在使用;

NCCL-valid

分类:

技术点:

相关文章: