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系统,搞到怀疑人生,整个都是泪- -.最终经过百般“磨难”总算安装 ...
随机推荐
- 【】JSON语法RFC4627
Network Working Group D. Crockford Request for Comments: 4627 JSON.org Category: Informational July ...
- SpringCloud创建Eureka模块集群
1.说明 本文详细介绍Spring Cloud创建Eureka模块集群的方法, 基于已经创建好的Spring Cloud Eureka Server模块, 请参考SpringCloud创建Eureka ...
- 了解C#的协变和逆变
前言 在引用类型系统时,协变.逆变和不变性具有如下定义. 这些示例假定一个名为 Base 的基类和一个名为 Derived的派生类. Covariance 使你能够使用比原始指定的类型派生程度更大的类 ...
- shc命令
今天在公司看到业务系统有一个query.viewtx 等等命令.虽然不知道是什么语言写的,但是里边内容是看不到的. 如果是编译型语言这样的结果 我并不奇怪.但是如果我们写了一个shell脚本 如果加密 ...
- 关于java的Excel导入导出之easypoi
导入easypoi相关jar包,这里的easypoi-base的包也可以不倒入,因为easypoi-web中有依赖easypoi-base会自动导入的 <!-- https://mvnrepos ...
- 初识python 之 爬虫:爬取某电影网站信息
注:此代码仅用于个人爱好学习使用,不涉及任何商业行为! 话不多说,直接上代码: 1 #!/user/bin env python 2 # author:Simple-Sir 3 # time:201 ...
- Word2010制作课程表
原文链接:https://www.toutiao.com/i6487759634751816205/ 插入表格: 选择"插入"选项卡,"表格"功能组," ...
- WebRTC本地选择codec(web本地模拟)
视频编码后,再进行发送.WebRTC建立视频连接前,可以选择codec.一般来说支持多种codec,以VP8和H264为代表. Codec: 编码译码器,编解码器 示例代码 写一个示例,用户可以在发送 ...
- Linux下Redis 6.2.6安装和部署详细图文步骤
Redis(Remote Dictionary Server),即远程字典服务,是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言的 ...
- Java类与对象的创建
以类的方式组织代码,以对象的方式组织(封装)数据 组织代码(类) public class Demo04 { String name;//默认值null int age;//默认值0 public v ...