Linux系统下解决“RuntimeError: (PreconditionNotMet) The third-party dynamic library (libnccl.so)...”报错

随便写写...

最近在用PaddlePaddle框架跑代码,遇到一些问题摸索了很久才有较为清晰的思路,在这里记录一下,希望可以帮助相同的朋友。

在使用Paddle进行多卡训练的时候,往往会遇到一下报错:

RuntimeError: (PreconditionNotMet) The third-party dynamic library (libnccl.so) that Paddle depends on is not configured correctly. (error code is libnccl.so: cannot open shared object file: No such file or directory)
Suggestions:

Check if the third-party dynamic library (e.g. CUDA, CUDNN) is installed correctly and its version is matched with paddlepaddle you installed.
Configure third-party dynamic library environment variables as follows:
Linux: set LD_LIBRARY_PATH by export LD_LIBRARY_PATH=...
Windows: set PATH by set PATH=XXX; (at /paddle/paddle/fluid/platform/dynload/dynamic_loader.cc:234) [Hint: If you need C++ stacktraces for debugging, please setFLAGS_call_stack_level=2`.

 首先我用的是cuda 10.1;python 3.7; cudnn 7.6;  paddlepaddle-gpu:2.1.0rc1;怎么解决上述问题呢?按照下面的思路应该没问题:

1.安装nccl

那怎么安装nccl呢?按照下面小步骤进行:

1. 根据cuda的版本去选择对应版本的nccl,可以去nvidia的官网下载https://developer.nvidia.com/nccl/nccl-legacy-downloadshttps://developer.nvidia.com/nccl/nccl-legacy-downloads

2. 这里以cuda 10.1为例,你下什么安装包呢?如果你是CentOS系统下载后缀为 .rpm的压缩文件;如果你是Ubuntu系统下载后缀为 .deb的压缩文件

3.安装镜像库,怎么安装呢?分以下两种情况:①如果你是CentOS系统,终端输入命令:

sudo rpm -i nccl-repo-.rpm 

②如果你是Ubuntu系统,终端输入命令:

sudo dpkg -i nccl-repo-.deb

4. 更新源镜像,怎么更新呢?分以下两种情况:①如果你是CentOS系统,终端输入命令:

sudo yum update

②如果你是Ubuntu系统,终端输入命令:

sudo apt update

5. 安装nccl,怎么安装呢?分以下两种情况:①如果你是CentOS系统,终端输入命令:

sudo yum install libnccl-2.4.8-1+cuda10.1 libnccl-devel-2.4.8-1+cuda10.1 libnccl-static-2.4.8-1+cuda10.1(注意这是我的版本,不要照抄哦)

②如果你是Ubuntu系统,终端输入命令:

sudo apt install libnccl2=2.4.8-1+cuda10.1 libnccl-dev=2.4.8-1+cuda10.1(同上注意啦)

2.将nccl添加到环境变量中 

首先,找到你nccl的安装目录,你问我怎么找?当然是终端输入命令:whereis nccl 了,我的是在/usr/include/nccl.h

然后,终端输入vim ~/.bashrc进入该文件,添加如下内容到文件中(添加到最低行):

#设置cuda库的目录
export LD_LIBRARY_PATH=/usr/local/cuda-10.0/lib64
#将nccl添加到LD_LIBRARY_PATH中
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/include/nccl.h

 最后,保存好了,咱还要更新,让配置文件生效啊,终端输入命令:source ~/.bashrc 再通过echo $LD_LIBRARY_PATH命令查看环境变量设置是否成功。

我时常感慨:摸索未知的东西是最难的,但同时也是最锻炼人的,就这个问题,我足足查了三天资料,才整理出一段思路,所以科研的路还有很远,很远。

参考:You may need to install ‘nccl2‘ from NVIDIA official website

Installation Guide :: NVIDIA Deep Learning NCCL Documentation

你可能感兴趣的:(Bug解决,python)