0. 前言

在使用Python版本的PaddleDetection进行一些实验时,想同时利用多个GPU提高效率,遇到了一点问题

You may need to install ‘nccl2‘ from NVIDIA official website

意思是多卡通信时需要跨卡通信库的支持,这时就需要用到NCCL。

NCCL全称Nvidia Collective multi-GPU Communication Library,是一个实现多GPU交互的通信库,Nvidia做了很多优化以在PCIe、Nvlink、InfiniBand等不同的通信方式中实现较高的通信速度。

1. Ubuntu18.04本地安装NCLL步骤

本地环境如下

  • Ubuntu18.04 x86_64
  • CUDA-10.0
  • cuDNN-7.6.5

现在来安装NCCL。首先去官网下载页面找到合适的版本。

  • (1)下载nccl-repo-ubuntu1604-2.5.6-ga-cuda10.0_1-1_amd64.deb
  • (2)安装镜像库sudo dpkg -i nccl-repo-ubuntu1604-2.5.6-ga-cuda10.0_1-1_amd64.deb
  • (3)更新源镜像sudo apt update
  • (4)安装ncclsudo apt install libnccl2=2.5.6-1+cuda10.0 libnccl-dev=2.5.6-1+cuda10.0
  • (5)配置系统环境变量

    nccl默认的安装目录是/usr/lib/x86_64-linux-gnu,在~/.bashrc文件中添加以下内容之后保存文件,使用

    source ~/.bashrc使文件的配置生效。
#设置cuda库的目录
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib64
#将nccl添加到LD_LIBRARY_PATH中
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib/x86_64-linux-gnu

2. 测试PaddleDetection多卡训练

安装好NCCL后,测试一下使用多卡的命令。

  • (1)单机单卡启动,默认使用第0号卡
$ python train.py
  • (2)单机多卡启动,默认使用当前可见的所有卡
$ python -m paddle.distributed.launch train.py
  • (3)单机多卡启动,设置当前使用的第0号和第1号卡
$ CUDA_VISIABLE_DEVICES='0,1' python -m paddle.distributed.launch --selected_gpus='0,1' train.py
  • (4)单机多卡启动,设置当前使用第0号和第1号卡
$ CUDA_VISIABLE_DEVICES='0,1' python -m paddle.distributed.launch train.py

参考资料

[1] You may need to install ‘nccl2‘ from NVIDIA official website https://icode.best/i/42989337341942

[2] NCCL2 Survey https://github.com/PaddlePaddle/Paddle/wiki/NCCL2-Survey

[3] NVIDIA NVCC DOCUMENTATION https://docs.nvidia.com/deeplearning/nccl/install-guide/index.html

[4] NCCL Legacy Download Page https://developer.nvidia.com/nccl/nccl-legacy-downloads

本文作者 :phillee

发表日期 :2022年02月11日

本文链接https://www.cnblogs.com/phillee/p/15882198.html

版权声明 :自由转载-非商用-非衍生-保持署名(创意共享3.0许可协议/CC BY-NC-SA 3.0)。转载请注明出处!

限于本人水平,如果文章和代码有表述不当之处,还请不吝赐教。

Linux Ubuntu安装Nvidia多GPU通信库NCCL的更多相关文章

  1. Linux中安装python3.6和第三方库

    Linux中安装python3.6和第三方库 如果本机安装了python2,尽量不要管他,使用python3运行python脚本就好,因为可能有程序依赖目前的python2环境,比如yum!!!!! ...

  2. Linux下安装PHP的GD支持库

    Linux下安装PHP的GD支持库   1.安装 zlib  wget ftp://ftp.sunfreeware.com/pub/freeware/SOURCES/zlib-1.2.3.tar.gz ...

  3. ubuntu安装nVidia驱动,遇到终端闪砾问题并解决

    安装nvidia的官方驱动之后,比起nouvean来说感觉速度快了不少. 安装该驱动很简单,但选择哪个驱动是要注意的.因为今天我试了nvidia的多个驱动后都在ubuntu下用起来并不好. 我现在的环 ...

  4. linux: Ubuntu安装samba的问题

    Ubuntu安装samba的问题 http://blog.csdn.net/jk110333/article/details/8920841 root@ubuntu:~# apt-get instal ...

  5. Linux下安装Python3.x和第三方库

    如果本机安装了python2,尽量不要管他,使用python3运行python脚本就好,因为可能有程序依赖目前的python2环境, 比如yum!!!!! 不要动现有的python2环境! 不要动现有 ...

  6. [Linux]ubuntu安装基本流程

    ubuntu安装基本流程 1.设置分辨率2.设置语言环境3.设置服务器镜像源4.添加终端5.apt.apt-get更新和升级系统软件 sudo apt update/upgrade sudo apt- ...

  7. ubuntu 安装NVIDIA驱动过程

    用U盘引导安装时,提示 nouveau 0000:65:00.0: fifo: SCHED_ERROR 08 [] 解决方法: 进入grub 内核启动参数后增加 nomodeset nomodeset ...

  8. Linux下安装Python3.6和第三方库

    如果本机安装了python2,尽量不要管他,使用python3运行python脚本就好,因为可能有程序依赖目前的python2环境, 比如yum!!!!! 不要动现有的python2环境! 一.安装p ...

  9. ubuntu安装nvidia驱动以及cuda教程

    最近尝试在ubuntu中安装nvidia的显卡驱动以及cuda.花了近三天时间,真的如网上所说错误百出,期间甚至重装了一次ubuntu系统,搞到怀疑人生,整个都是泪- -.最终经过百般“磨难”总算安装 ...

随机推荐

  1. MySQL启用SSL连接

    1.手动创建自认证证书 1.1 创建CA证书 openssl genrsa 2048 > ca-key.pem openssl req -new -x509 -nodes -days 3600 ...

  2. 【】Apache Ranger剖析:Hadoop生态圈的安全管家

    前言 2016年,Hadoop迎来了自己十周岁生日.过去的十年,Hadoop雄霸武林盟主之位,号令天下,引领大数据技术生态不断发展壮大,一时间百家争鸣,百花齐放.然而,兄弟多了不好管,为了抢占企业级市 ...

  3. Python_paramiko-与linux交互

    一.基础功能介绍 # coding=utf-8 import paramiko from time import sleep # 建立通信 transport = paramiko.Transport ...

  4. python 面向对象:类属性

    一.概念和使用 类属性就是给类对象定义的属性 类属性用于记录与这个类相关的特征 类属性不会用于记录具体对象的特征 使用赋值语句在  class  关键字下方可以定义类属性 二.代码演示 示例需求: 定 ...

  5. Pandas系列(十八)- 多级索引

    多级索引 多级索引(也称层次化索引)是pandas的重要功能,可以在Series.DataFrame对象上拥有2个以及2个以上的索引.实质上,单级索引对应Index对象,多级索引对应MultiInde ...

  6. Vue系列教程(二)之Vue进阶

    一.Vue对象的操作 1. 可以通过一个Vue对象操作另一个Vue对象 var v1 = new Vue({ el: "#app1", data: {title:"hel ...

  7. Nginx虚拟主机、日志排错、模块配置

    目录 Nginx虚拟主机 1. 基于多IP的方式 2. 基于多端口的方式 3. 基于多域名的方式 Nginx日志 Nginx配置文件配置项 Nginx模块 Nginx访问控制模块 Nginx状态监控模 ...

  8. CentOS 8安装Docker报错(Problem: package docker-ce-3:19.03.8-3.el7.x86_64 requires containerd.io >= 1.2.)

    CentOS8安装docker和docer-conpose 报错如下Problem: package docker-ce-3:19.03.8-3.el7.x86_64 requires contain ...

  9. 【刷题-LeetCode】148 Sort List

    Sort List Sort a linked list in O(n log n) time using constant space complexity. Example 1: Input: 4 ...

  10. Servlet监听器统计网站在线人数

    本节我们利用 Servlet 监听器接口,完成一个统计网站在线人数的案例.当一个用户登录后,显示欢迎信息,同时显示出当前在线人数和用户名单.当用户退出登录或 Session 过期时,从在线用户名单中删 ...