使用paddlepaddle框架进行多卡训练时报错:

Traceback (most recent call last):
  File "train.py", line 210, in <module>
    do_train()
  File "train.py", line 91, in do_train
    paddle.distributed.init_parallel_env()
  File "/home/th/anaconda3/envs/paddle/lib/python3.6/site-packages/paddle/distributed/parallel.py", line 225, in init_parallel_env
    parallel_helper._init_parallel_ctx()
  File "/home/th/anaconda3/envs/paddle/lib/python3.6/site-packages/paddle/fluid/dygraph/parallel_helper.py", line 42, in _init_parallel_ctx
    __parallel_ctx__clz__.init()
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:
  1. Check if the third-party dynamic library (e.g. CUDA, CUDNN) is installed correctly and its version is matched with paddlepaddle you installed.
  2. 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:285)

INFO 2022-04-10 14:18:14,425 launch_utils.py:320] terminate process group gid:6221
INFO 2022-04-10 14:18:18,430 launch_utils.py:341] terminate all the procs
ERROR 2022-04-10 14:18:18,430 launch_utils.py:604] ABORT!!! Out of all 2 trainers, the trainer process with rank=[0] was aborted. Please check its log.
INFO 2022-04-10 14:18:22,434 launch_utils.py:341] terminate all the procs
INFO 2022-04-10 14:18:22,435 launch.py:311] Local processes completed.

我的运行环境是ubuntu16.04、cuda10.2、paddlepaddle2.2.2

报错原因是paddle多卡训练需要nccl,在cuda10.2库中找不到libnccl.so。到/usr/local/cuda-10.2/lib64目录下查看,果然没有libnccl.so这个文件。

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)

解决方法:下载安装nccl

官方安装教程:Installation Guide :: NVIDIA Deep Learning NCCL Documentation

不过安装过程中需要注册账号查看cuda相应版本的nccl版本号。以下给出cuda10.0、cuda10.1、cuda10.2对应的版本,无需再注册。

一、ubuntu安装nccl步骤

以下是官方ubuntu系统的具体步骤,其他系统安装过程可到以上官方链接查看:

在 Ubuntu 上安装NCCL需要您首先将存储库添加到包含NCCL包的 APT 系统,然后通过 APT 安装NCCL包。有两个可用的存储库;本地存储库和网络存储库。建议选择后者,以便在发布较新版本时轻松检索升级。

在以下命令中,请替换<architecture>使用您的 CPU 架构:x86_64,ppc64le, 或者 sbsa, 并替换<distro>例如,使用 Ubuntu 版本ubuntu1604,ubuntu1804, 或者 ubuntu2004.

1. 安装keys。注意要替换<distro>和<architecture>

(2)使用 Ubuntu 20.04/18.04 的网络存储库安装时:

sudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/<distro>/<architecture>/7fa2af80.pub

(2)使用 Ubuntu 16.04 的网络存储库安装时:

sudo apt-key adv --fetch-keys http://developer.download.nvidia.com/compute/cuda/repos/<distro>/<architecture>/7fa2af80.pub

2. 安装存储库。

这里使用的是网络存储库

sudo add-apt-repository "deb https://developer.download.nvidia.com/compute/cuda/repos/<distro>/<architecture>/ /"

3.更新 APT 数据库:

sudo apt update

4.利用APT安装libnccl2

cuda10.2:

sudo apt install libnccl2=2.9.6-1+cuda10.2 libnccl-dev=2.9.6-1+cuda10.2

cuda10.1:

sudo apt install libnccl2=2.4.8-1+cuda10.1 libnccl-dev=2.4.8-1+cuda10.1

cuda10.0:

sudo apt install libnccl2=2.4.8-1+cuda10.0 libnccl-dev=2.4.8-1+cuda10.0

二、将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命令查看环境变量设置是否成功。

到此大功告成,终于可以分布式多卡训练了。

三、参考

Linux系统下解决“RuntimeError: (PreconditionNotMet) The third-party dynamic library (libnccl.so)...”报错_深度科研的博客-CSDN博客

1Installation Guide :: NVIDIA Deep Learning NCCL Documentation

ubuntu下安装nccl具体教程相关推荐

  1. Ubuntu下安装NS-3图文教程

    注意:下面所有操作步骤只针对Ubuntu,其他类型虚拟机请参考别的文章. 操作环境:VMware Workstation 10 安装包百度云链接:https://pan.baidu.com/s/1Wo ...

  2. Ubuntu下安装QQ——最新教程!

    腾讯官方早就在10年代初就停止运营Linux版QQ,然而民间折腾Linux版QQ的脚步从来没停过.时至今日,它总算有了完美无暇的方案--deepin wine系列.要感谢deepin公司的最大努力.也 ...

  3. 在Ubuntu下安装Wine QQ教程(本人亲测)

    原文链接:http://www.ubuntukylin.com/ukylin/forum.php?mod=viewthread&tid=7688&extra=page%3D1#0-qz ...

  4. wireshark使用教程 linux,Linux入门教程:ubuntu下安装wireshark(以及配置非root),这个强大的工具可以捕...

    Linux入门教程:ubuntu下安装wireshark(以及配置非root),这个强大的工具可以捕 Wireshark是世界上最流行的网络分析工具.这个强大的工具可以捕捉网络中的数据,并为用户提供关 ...

  5. ubuntu下安装sbt(参考林子雨教程会有问题)

    ubuntu下安装sbt(参考林子雨教程): 厦门大学林子雨教程 如果直接按照教程会出现问题:可以参考下面的解决方法 注意:教程给的不是sbt的压缩包,直接给的jar包:直接按教程来: 重点:执行这一 ...

  6. linux ubuntu安装教程6,64位Ubuntu下安装IE6步骤

    64位Ubuntu下安装IE6步骤 ies4linux下载地址: cabextract下载地址: wine1.0下载地址: cab文件及字体下载地址: simsun.ttc下载地址: adobe fl ...

  7. Ubuntu下安装Oracle11g(图文教程)

    由于课程需要,要在Ubuntu下安装一个Oracle,之前都没有装过,所以想通过这篇博文记录一下 1.下载Oracle 11g 下载地址:http://www.oracle.com/technetwo ...

  8. metasploit下载教程linux,Ubuntu下安装Metasploit

    Metasploit是一款开源的安全漏洞检测工具,可以帮助安全和IT专业人士识别安全性问题,验证漏洞的缓解措施,并管理专家驱动的安全性进行评估,提供真正的安全风险情报. 下载之后记得比对校检码,如果校 ...

  9. 手机安装linux模拟器教程,Ubuntu下安装Android模拟器

    Ubuntu下安装Android模拟器首先确保已安装Java平台. 2.将下载的包解压. 3.先后运行命令: # cd android-sdk-linux/tools (进入目录,省略号处填你的路径) ...

最新文章

  1. 推断两条单链表是否相交
  2. golang string切片解析json
  3. can协议crc计算_CAN总线的升级版——CAN FD简介
  4. [转] 小结js屏幕、浏览器、页面大小(三)———拖拽
  5. VS2010中不可忽视的部分——VSTO
  6. php 声音文件链 处理,PHP 三种方式实现链式操作
  7. Vue使用Vditor编辑器
  8. Vue 引入阿里巴巴矢量图标库 (详细)
  9. 计算机网络结构示意图,常见的五种计算机网络拓扑结构分析
  10. 护理教育学考试复习题
  11. AWS — 公有云网络模型
  12. 大数据技术专家王家林老师所有视频合集
  13. linux什么系统以dd镜像写入,linux下使用dd命令写入镜像文件到u盘
  14. 最新360脱壳详细教程(有图有真相
  15. Linux使用Maven部署SpiderFlow爬虫平台
  16. 曾鸣:互联网的本质是什么?| 内部干货
  17. 'gbk' codec can't encode character '\u301c' in position 12: illegal multibyte sequence问题解决
  18. SmartRF04EB修复与修改ID号
  19. Linux基础知识总结 一
  20. systools ssd data recovery怎么用呢

热门文章

  1. 目标检测(object detection)—— RCNN总结
  2. Android 在build.gradle文件中读取json文件
  3. 哈迪-温伯格平衡(Hardy-Weinberg equilibrium)法则
  4. 软件测试类型——集成测试
  5. UVALive 3959 Rectangular Polygons (排序贪心)
  6. css碎步测量,隧洞测量实习日记.doc
  7. 月入万元的乞丐谈营销
  8. 2022年第十三届蓝桥杯省赛C/C++B组个人题解
  9. 西安恒智小寨java_Java常用异常整理
  10. html 未读消息红点,消息未读之点不完的小红点(Node+Websocket)