1. 下载nccl
$ git clone https://github.com/NVIDIA/nccl.git
2. build
$ cd nccl
$ make -j src.build
注意:如果你的CUDA不是安装在常规的路径/usr/local/cuda,需要指定CUDA的路径
make -j src.build应改为:
$ make -j src.build CUDA_HOME=/usr/local/cuda-9.0 (此为小编cuda路径)
$ make -j src.build NVCC_GENCODE="-gencode=arch=compute_70,code=sm_70" (可选)
3. Install
安装在debian和Ubuntu上:
$ # Install tools to create debian packages
$ sudo apt install build-essential devscripts debhelper
$ # Build NCCL deb package
$ make pkg.debian.build
$ ls build/pkg/deb/
4. 测试是否安装成功
$ git clone https://github.com/NVIDIA/nccl-tests.git
$ cd nccl-tests
$ make
$ ./build/all_reduce_perf -b 8 -e 256M -f 2 -g <ngpus>
<ngpus>为你的gpu个数,不报错则安装成功。
5. 错误记录
报错:找不到-lnccl的错误
/usr/bin/ld: cannot find -lnccl
collect2: error: ld returned 1 exit status
解决办法:
$ sudo gedit /etc/ld.so.config
在末尾加入 INCLUDE /home/cv503/nccl/build/include
$ sudo ldconfig
然后再:
$ sudo gedit ~/.bashrc
加入nccl的头文件和库
export LD_LIBRART_PATH=/home/cv503/nccl/build/lib:$LD_LIBRART_PATH
LD_LIBRART_PATH测试的时候还是报错的的话直接改为LIBRART_PATH
export LIBRART_PATH=/home/cv503/nccl/build/lib:$LIBRART_PATH
6. 配置caffe的多GPU
由于之前编译的无多GPU,首先在Caffe的根目录下:
$ make clean
- 修改makefile文件
- 修改makefile.config文件加入以下语句:
USE_NCCL := 1
INCLUDE_DIRS += /home/cv503/nccl/build/include
LIBRARY_DIRS += /home/cv503/nccl/build/lib
3. 最重要的步骤——修改caffe根目录下的cmake下的Moduels下的FindNCCL.cmake文件
在相应位置加入红色语句:
set(NCCL_INC_PATHS
/usr/include
/usr/local/include
/home/cv503/nccl/build/include
$ENV{NCCL_DIR}/include
)
set(NCCL_LIB_PATHS
/lib
/lib64
/usr/lib
/usr/lib64
/usr/local/lib
/usr/local/lib64
/home/cv503/nccl/build/lib
$ENV{NCCL_DIR}/lib
)
4. 修改Cmakelists.txt文件
caffe_option(USE_NCCL "Build Caffe with NCCL library support" OFF)
OFF改为ON
5. rebuild CAFFE
在CAFFE的根目录下
$ mkdir build
$ cd build
$ sudo cmake .. -DCUDA_NVCC_FLAGS=”-D_FORCE_INLINES” -DUSE_CUDNN=ON -DUSE_NCCL=ON
没有报错则进行下一个命令:
$ sudo make -j4
将python写入环境变量
$ gedit ~/.bashrc
export PYTHON_PATH=
$ python
$ import caffe
不报错就成功.