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为例阐述我所遇到的问题).

  1. deb安装. 从NCCL官网下载对应的安装包,参考博客提供的安装方式,在/root/目录下完成NCCL的安装;
$ 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

运行命令之后输出以下信息,表示安装成功.

Ubuntu16.04 NCCL1.2.3+Torch+cuda8.0 多GPU加速环境配置

这样看起来环境已经配好了.

  1. 运行代码,出现大量找不到目标文件的错误信息,如下图所示:

Ubuntu16.04 NCCL1.2.3+Torch+cuda8.0 多GPU加速环境配置

  1. 复制错误信息,在网上寻找解决方案,根据博客从NCCL官网下载NCCL2的源码,按照源码安装方式重新安装;Ubuntu16.04 NCCL1.2.3+Torch+cuda8.0 多GPU加速环境配置
    这里可以看到.so文件的安装路径.
  2. 将NCCL的lib文件路径加入环境变量,并进行测试。测试通过,重新运行代码,问题仍未解决.
    Ubuntu16.04 NCCL1.2.3+Torch+cuda8.0 多GPU加速环境配置
  3. 根据错误提示,查看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进行了安装和测试,测试结果如下:

Ubuntu16.04 NCCL1.2.3+Torch+cuda8.0 多GPU加速环境配置

再运行代码,问题解决.