环境 ubuntu16.04 、python3 、mxnet for cuda10.1 、nccl for cuda10.1
由于本电脑以前安装的cuda是10.1版本,不能使用该论文给出的mxnet安装包,因为在其配置文件中会报错显示找不到cuda8.0的配置文件,首先我在本地环境安装mxnet-cu10.1 安装,安装过程中无报错,但是在python环境下import mxnet,会显示段错误(核心已转储)的错误,发现可能是因为mxnet的终端显示安装路径在python3下的sitepackage,但是在python3下只有distpackage,在使用mxnet时找不到其路径。解决办法是我下载了anaconda 的,新建环境mxnettest,在该环境下安装mxnet-cu101成功。同时个人认为跟mxnet版本有问题,在ubuntu本地环境下sudo pip mxnet-cu101是2.8版本,在anaconda下配置了清华镜像,显示安装的是2.6版本。
安装nccl我是用的是在网上下载的安装包同样是安装在了anaconda的环境里面,然后测试时下载nccltest,集体步骤见https://github.com/NVIDIA/nccl
至此环境全部配完。
开始运行代码
注意修改train.sh文件里面的路径,NCCL我写的是./usr/lib/x86_64-linux-gnu因为我搜索整个电脑发现libncclso10.1文件在这个下面,cuda 我写的是./usr/local/cuda-10.1/lib64/
第一个报错是运行train.sh报错显示没有mxnet 模块原因是因为.bash的编译环境是bin/bash,因此我在anaconda的base 的环境里面吧mxnet-cu101和nccl装了一遍,接着再运行,在evaluate里面会报错float subscribable等的错误信息,原因是self.sum_metric此时的0.0,不是[0.0 0.0 0.0 0.0 0.0 .0.0]数组,由于找不出导致这个的原因,我在代码里面加了两行代码