Linux Ubuntu安装Nvidia多GPU通信库NCCL
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)安装nccl
sudo 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的更多相关文章
- Linux中安装python3.6和第三方库
Linux中安装python3.6和第三方库 如果本机安装了python2,尽量不要管他,使用python3运行python脚本就好,因为可能有程序依赖目前的python2环境,比如yum!!!!! ...
- Linux下安装PHP的GD支持库
Linux下安装PHP的GD支持库 1.安装 zlib wget ftp://ftp.sunfreeware.com/pub/freeware/SOURCES/zlib-1.2.3.tar.gz ...
- ubuntu安装nVidia驱动,遇到终端闪砾问题并解决
安装nvidia的官方驱动之后,比起nouvean来说感觉速度快了不少. 安装该驱动很简单,但选择哪个驱动是要注意的.因为今天我试了nvidia的多个驱动后都在ubuntu下用起来并不好. 我现在的环 ...
- linux: Ubuntu安装samba的问题
Ubuntu安装samba的问题 http://blog.csdn.net/jk110333/article/details/8920841 root@ubuntu:~# apt-get instal ...
- Linux下安装Python3.x和第三方库
如果本机安装了python2,尽量不要管他,使用python3运行python脚本就好,因为可能有程序依赖目前的python2环境, 比如yum!!!!! 不要动现有的python2环境! 不要动现有 ...
- [Linux]ubuntu安装基本流程
ubuntu安装基本流程 1.设置分辨率2.设置语言环境3.设置服务器镜像源4.添加终端5.apt.apt-get更新和升级系统软件 sudo apt update/upgrade sudo apt- ...
- ubuntu 安装NVIDIA驱动过程
用U盘引导安装时,提示 nouveau 0000:65:00.0: fifo: SCHED_ERROR 08 [] 解决方法: 进入grub 内核启动参数后增加 nomodeset nomodeset ...
- Linux下安装Python3.6和第三方库
如果本机安装了python2,尽量不要管他,使用python3运行python脚本就好,因为可能有程序依赖目前的python2环境, 比如yum!!!!! 不要动现有的python2环境! 一.安装p ...
- ubuntu安装nvidia驱动以及cuda教程
最近尝试在ubuntu中安装nvidia的显卡驱动以及cuda.花了近三天时间,真的如网上所说错误百出,期间甚至重装了一次ubuntu系统,搞到怀疑人生,整个都是泪- -.最终经过百般“磨难”总算安装 ...
随机推荐
- tcpdump统计http请求并导出URL文本
tcpdump统计http请求并导出URL文本 tcpdump tcpdump是一个用于截取网络分组,并输出分组内容的工具.凭借强大的功能和灵活的截取策略,使其成为类UNIX系统下用于网络分析和问题排 ...
- 使用delve调试golang
目录 前置要求 使用方式 使用funcs查找支持的函数 使用break(b)打断点 使用breakpoints查看当前活动的断点. 使用clear清除断点 使用goroutines查看所有协程 使用s ...
- 乒乓球队比赛,甲队有abc三人,乙队有xyz三人。 抽签得出比赛名单:a不和x比,c不和x,z比, 利用集合求出比赛名单
import java.util.HashMap; import java.util.Map; /** * 乒乓球队比赛,甲队有abc三人,乙队有xyz三人. * 抽签得出比赛名单:a不和x比,c不和 ...
- Keepalived高可用、四层负载均衡
目录 Keepalived高可用 高可用简介 常用的工具 问题 名称解释 VRRP协议 部署keepalived 下载安装 Keepalived配置 保证nginx配置一样 解决keepalived的 ...
- JAVA8-STREAM 使用说明
概述 本人在java开发过程中,有些知识点需要记录整理,我尽量严谨的叙述我学习的经过和心得,以便备份和和大家一起进步学习,此篇文章是在网上多出搜集整理验证,结尾会注明出处,今天学习一个java8新的功 ...
- TensorRT 开始
TensorRT 是 NVIDIA 自家的高性能推理库,其 Getting Started 列出了各资料入口,如下: 本文基于当前的 TensorRT 8.2 版本,将一步步介绍从安装,直到加速推理自 ...
- Solon 开发,三、构建一个Bean的三种方式
Solon 开发 一.注入或手动获取配置 二.注入或手动获取Bean 三.构建一个Bean的三种方式 四.Bean 扫描的三种方式 五.切面与环绕拦截 六.提取Bean的函数进行定制开发 七.自定义注 ...
- [Altium Designer 学习]怎样添加3D模型
对于为给PCB添加3D模型,很多人觉得这是个绣花针的活,中看不中用.在我看来这也未必,特别是常用的3D模型能在网上下载的今天,只需要几个简单的操作,就能使你的PCB更加赏心悦目.除此之外,3D模型还有 ...
- T-SQL的存储过程
1.简介 存储过程可以说是一个记录集,它是由一些T-SQL语句组成的代码块,这些T-SQL语句代码像一个方法一样实现一些功能(对单表或多表的增删改查),然后再给这个代码块取一个名字,在用到这个功能的时 ...
- 话说C#程序员人手一个ORM
话说C#程序员人手一个ORM,确实没有必要再写ORM了,不过我的ORM并不是新的,是从DBHelper演化过来的,算是DBHelper魔改版. 目前流行的ORM有EF.Dapper.SqlSugar. ...