NCCL是Nvidia Collective multi-GPU Communication Library的简称,它是一个实现多GPU的collective communication通信(all-gather, reduce, broadcast)库,Nvidia做了很多优化,以在PCIe、Nvlink、InfiniBand上实现较高的通信速度。
之前我们使用digits5的时候可以采用多片卡协同工作,但是后来发现那个并没有多大的使用价值(除了演示),于是自己配置我们的caffe.我们采用了八片NVIDIA显卡,是支持NCCL的类型(中低端显卡不支持这个,NVIDIA官网列出来的),之前在编译CAFFE的时候并没有开通USE_NCCL=1的选项,现在我开始配置NCCL来充分利用多块显卡的优势。
网上资料并不全,需要自己慢慢摸索:
- 1
- 2
- 3
一:准备上手nccl2(最好cuda9.0以上!!!)
nvidia官方说明:http://docs.nvidia.com/deeplearning/sdk/nccl-install-guide/index.html#down
sudo apt install libnccl2=2.3.5-2+cuda9.0 libnccl-dev=2.3.5-2+cuda9.0
官网中,第三步骤,安装,用上面这个命令 不要用
sudo apt install libnccl2 libnccl-dev
nvidia官方nccl下载地址:https://developer.nvidia.com/nccl/nccl-download
其中两个deb文件和一个txz文件都需要登录NVIDIA并且填写反馈表才能下载。。。。。
不想填写的话就从百度网盘下吧:
http://pan.baidu.com/s/1i5aO0qL h2sc
把三个文件都下载到电脑,然后解压sudo dpkg -i xxxx.deb\xxx.deb
更新 # sudo apt update
安装 libnccl-dev的 包:
#sudo apt-get install libnccl2 libnccl-dev
把txz文件移动到/usr/local下解压
cd /usr/local
#tar xvf nccl.xxxxxxx.txz
然而发现我的cuda是8.0的不支持这个nccl2,果断弃坑
二:安装nccl(1)
特别注意:还有如果gcc版本太低,会出现编译错误,gcc需要最低版本4.8。
我就是从4.7升级到了4.8:
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt-get install gcc-4.8
sudo apt-get install g++-4.8
gcc –version
g++ –version
还是老老实实的安装nccl1,支持cuda6.5以上版本(本机使用的是cuda8.0+cudnn v6)。
1.首先下载nccl:
cd /usr/local
wget https://github.com/NVIDIA/nccl/archive/master.zip
2.解压:
sudo unzip master.zip
cd nccl-master/
3.安装:
sudo make CUDA_HOME=/usr/local/cuda-8.0/ test (按照自己的cuda地址)
make install (加sudo的话报错了,不加的话链接正常)
重新make caffe吧,然后就可以开启并行训练了!!!!
只需要在Makefile.comfig文件中把use_nccl=1的注释去掉,然后在/caffe/目录下
sudo make clean
make all -j20
make pycaffe -j20
make test -j20
- 1
- 2
- 3
- 4
sudo make -j20 runtest # take long time
sudo make py
sudo make distribute
然后就可以正常使用了。