Ubuntu16.04 NCCL1.2.3+Torch+cuda8.0 多GPU加速环境配置
最近在做机器翻译的实验,在跑代码的时候需要用到NVIDIA的NCCL多GPU加速工具,网上有关NCCL的博客都是基于NCCL2.x版本,而我要用到的是1.x版本,经过很多次尝试终于把环境搞定,在此记录下我的一些经验,希望能够帮助到有需要的小伙伴.
1. cuda及cudnn安装
这部分网上有很多教程,在此不做记录.
2. Torch安装
参考官网提供的安装方式,按照步骤一步一步安装即可.
3. NCCL安装
首先给出NCCL官网与github链接.注:目前官网提供的NCCL均是2.x以上版本,如果是安装最新版本,请直接参考官网或者github源码安装方式或者网上的安装教程.
本博客重点关注NCCL1.x环境的安装与配置.
3.1. 在NCCL2.x环境运行NCCL1.x代码遇到的问题
在配置环境的过程中,我在cuda8.0及cuda9.0环境下分别尝试过deb安装和源码安装两种方式 (此处以cuda9.0为例阐述我所遇到的问题).
$ sudo dpkg -i nccl-repo-ubuntu1604-2.3.7-ga-cuda9.0_1-1_amd64.deb
$ sudo apt update
$ sudo apt install libnccl2=2.3.7-1+cuda9.0 libnccl-dev=2.3.7-1+cuda9.0
然后我按照github提供的测试方式,对环境进行了测试,我的GPU环境是两块GTX1080显卡:
$ 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>
$ ./build/all_reduce_perf -b 8 -e 256M -f 2 -g 2
运行命令之后输出以下信息,表示安装成功.
这样看起来环境已经配好了.
- 运行代码,出现大量找不到目标文件的错误信息,如下图所示:
- 复制错误信息,在网上寻找解决方案,根据博客从NCCL官网下载NCCL2的源码,按照源码安装方式重新安装;
这里可以看到.so文件的安装路径. - 将NCCL的lib文件路径加入环境变量,并进行测试。测试通过,重新运行代码,问题仍未解决.
- 根据错误提示,查看NCCL源码路径(/root/nccl/build/lib)路径(或者回看上图的.so路径提示信息),会发现所缺失的文件其实都存在,但是是.2版本,代码所需的是.1版本. 本人才疏学浅,暂时无法解决这个问题. 网上找了很多资料,也没有找到相同的问题,于是我尝试安装NCCL1.x版本.
3.2 放弃NCCL2,安装NCCL1.x
目前,NVIDIA官网提供的NCCL都是2.x版本,找不到1.x版本,网上也没有关于1.x的安装教程. 费了很大功夫,原来就在NVIDIA的github上,链接在这里.
为了保险起见,我使用的是nccl-1.2.3-1-cuda8.0.zip,按照readme进行了安装和测试,测试结果如下:
再运行代码,问题解决.