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系统,搞到怀疑人生,整个都是泪- -.最终经过百般“磨难”总算安装 ...
随机推荐
- MySQL启用SSL连接
1.手动创建自认证证书 1.1 创建CA证书 openssl genrsa 2048 > ca-key.pem openssl req -new -x509 -nodes -days 3600 ...
- 【】Apache Ranger剖析:Hadoop生态圈的安全管家
前言 2016年,Hadoop迎来了自己十周岁生日.过去的十年,Hadoop雄霸武林盟主之位,号令天下,引领大数据技术生态不断发展壮大,一时间百家争鸣,百花齐放.然而,兄弟多了不好管,为了抢占企业级市 ...
- Python_paramiko-与linux交互
一.基础功能介绍 # coding=utf-8 import paramiko from time import sleep # 建立通信 transport = paramiko.Transport ...
- python 面向对象:类属性
一.概念和使用 类属性就是给类对象定义的属性 类属性用于记录与这个类相关的特征 类属性不会用于记录具体对象的特征 使用赋值语句在 class 关键字下方可以定义类属性 二.代码演示 示例需求: 定 ...
- Pandas系列(十八)- 多级索引
多级索引 多级索引(也称层次化索引)是pandas的重要功能,可以在Series.DataFrame对象上拥有2个以及2个以上的索引.实质上,单级索引对应Index对象,多级索引对应MultiInde ...
- Vue系列教程(二)之Vue进阶
一.Vue对象的操作 1. 可以通过一个Vue对象操作另一个Vue对象 var v1 = new Vue({ el: "#app1", data: {title:"hel ...
- Nginx虚拟主机、日志排错、模块配置
目录 Nginx虚拟主机 1. 基于多IP的方式 2. 基于多端口的方式 3. 基于多域名的方式 Nginx日志 Nginx配置文件配置项 Nginx模块 Nginx访问控制模块 Nginx状态监控模 ...
- 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 ...
- 【刷题-LeetCode】148 Sort List
Sort List Sort a linked list in O(n log n) time using constant space complexity. Example 1: Input: 4 ...
- Servlet监听器统计网站在线人数
本节我们利用 Servlet 监听器接口,完成一个统计网站在线人数的案例.当一个用户登录后,显示欢迎信息,同时显示出当前在线人数和用户名单.当用户退出登录或 Session 过期时,从在线用户名单中删 ...