多GPU环境运行实验的一点经验

  • 电脑配置
  • 遇到的问题
  • 尝试1
  • 尝试2
  • 其他技巧

电脑配置

OS: Ubuntu 20.04
GPU: RTX 3090 x 2, 分别记为gpu0,gpu1。
Tensorflow: 2.4.0

遇到的问题

程序里面原本设置如下:

os.environ["CUDA_VISIBLE_DEVICES"] = "0, 1"

实际上如果不设置的话,也是默认使用两块GPU.

我遇到的问题是:启动一个程序的话,使用率, gpu0:90%, gpu1: 接近0。
然后我启动了3个程序,相当于三个程序同时在运行(速度相比于只运行一个慢多了),这样一来, 使用率, gpu0:100%, gpu1: 10%, 我发现这三个程序实际上都是在gpu0上运行的,如下:
看来,gpu1基本上没啥用,太浪费了。 怎么办?

尝试1

首先想到的是在运行程序的时候通过指定GPU的方式来把4个运行任务均摊到两个gpu上。具体讲:
通过命令行+ 参数的方式来指定gpu,
运行程序的命令如下:

:python3 start.py --gpuid '0'

其中start.py即为要运行的程序文件,通过参数gpuid来指定使用哪一块gpu。

start.py中,

parser.add_argument('--gpuid', type=str, default='0, 1', help="GPU-ID used for training in a multi-GPU environment (default: None)")os.environ["CUDA_VISIBLE_DEVICES"] = args.gpuid # 指定GPU# 接着就是启动实验的程序。

奇怪的是这种指定方式的方式并没有起到任何作用。

尝试2

直接在命令行进行指定并启动程序,具体命令如下:

CUDA_VISIBLE_DEVICES = 1 python3 start.py

注:当然也可以指定多个gpu, 如, CUDA_VISIBLE_DEVICES=0, 1。

通过这样的方式给每个GPU分配两个运行任务,与不指定GPU相比,发现:
1.GPU1的使用率提高了,实际上两块GPU的使用率相当;
2 程序运行速度提高了不少,因为之前4个运行任务都在gpu0上,不过带来的问题时噪音变大了。之前两个GPU fan都在75%左右, 现在两个gpu fan都很高,一个为100%。
如下:

其他技巧

多GPU环境,如果不指定GPU的话,系统以一种贪婪的方式把计算任务铺满所有的GPU资源,因此可以在程序中设置动态分配GPU资源
如下:

gpus = tf.config.experimental.list_physiological_devices("GPU")
for gpu in gpus:tf.config.experimental.set_memory_growth(gpu, True)

OK.

多GPU环境运行实验的一点经验相关推荐

  1. 【Dlib】在GPU环境中运行dlib中的例子dnn_mmod_ex报错...dlib::cuda_error...Error while calling cudaMalloc...

    1.问题描述 在GPU环境下运行dlib中的例子dnn_mmod_ex时,报错: terminate called after throwing an instance of 'dlib::cuda_ ...

  2. 对解决Visual Studio的 LNK2019 和 LNK1120 错误的一点经验

    文章目录 对解决Visual Studio的 LNK2019 和 LNK1120 错误的一点经验 问题描述 尝试分析 写在结尾 对解决Visual Studio的 LNK2019 和 LNK1120 ...

  3. 手把手教你:如何使用滴滴云搭建GPU环境

    目录 前言 一.滴滴云GPU配置选择及创建 二.GPU服务器的登录 三.GPU环境配置 1.Anaconda的下载 2.Anaconda的安装 3.conda创建自己的python环境 4.安装Pyt ...

  4. Mint系统使用介绍,Mint系统安装,在Mint系统上搭建GPU环境,在Mint系统上安装Pycharm、Anaconda等软件,在Mint系统上安装cuda和cudnn

    欢迎大家关注笔者,你的关注是我持续更博的最大动力 原创文章,转载告知,盗版必究 Mint系统使用介绍,Mint系统安装,在Mint系统上搭建GPU环境,在Mint系统上安装Pycharm.Anacon ...

  5. 知乎嵌入式大杂烩:学习STM32的一点经验分享

    前言 前两天在群里看到群友们在讨论学习STM32的话题,并且今天也有一位机械专业的准研究生也问了STM32的入门问题.正好我也有一点经验,所以试着分享一下这个话题.我也不是什么大神,只是一名普通的工程 ...

  6. TF之Windows:Windows系统下设置Tensorflow运行方式为GPU加速运行的详细攻略

    TF之Windows:Windows系统下设置Tensorflow运行方式为GPU加速运行的详细攻略 目录 软件环境 1.第一步安装好CUDA软件程序 2.第二步安装好tensorflow-gpu库 ...

  7. 生产环境运行Docker的9个关键决策

    本文讲的是生产环境运行Docker的9个关键决策,[编者的话]生产环境运行Docker并没有想象的那么简单,如何实现稳定安全的部署和扩容? 又有哪些需要考虑的关键决策? 本文就此做了一些分析和阐述,赶 ...

  8. caffe-gpu ubuntu 安装_ubuntu16.04 cuda10.0 配置caffe gpu环境

    caffe gpu环境的配置就是一部赤裸裸的血泪史,每次都能遇到很多问题~ 环境依赖 ubuntu 16.04cuda 10.0python 3.5opencv 3.4.10sudo apt-get ...

  9. 使用Unity开发项目的一点经验

    使用Unity开发项目的一点经验 我们主要使用3dsmax2010进行制作,输出FBX的类型导入Unity3D中. 默认情况下,3dsmax8可以和U3D软件直接融合,自动转换为FBX物体. 注意事项 ...

  10. Windows 10配置GPU环境

    Windows 10配置GPU环境 查看显卡型号 下载安装显卡驱动 下载安装CUDA 查看本机显卡驱动版本 查看CUDA和显卡驱动的对应关系 下载安装CUDA 下载cuDNN 验证安装 验证CUDA ...

最新文章

  1. 图论 ---- C. Graph Transpositions(数据分阶段分层图最短路(二维) + 贪心)
  2. Nginx在Windows平台的配置与使用
  3. boost::gil::rgb8_image_t::recreate用法的测试程序
  4. 转 JavaScript传值及.Net传值方式总结
  5. c语言下标法与指针法,《C和指针》中关于指针与下标的问题
  6. 数组——询问学号(洛谷 P3156)
  7. BZOJ3711 PA2014Druzyny(动态规划+cdq分治+线段树)
  8. 程序员如何解决并发冲突的难题?
  9. 吃易消化吸收的东西利于长寿
  10. 【VirtualBox】VirtualBox的四种网络连接模式
  11. 计算机课题立项申报书范文,课题立项申请书怎么写
  12. Python数据解析
  13. Unity开发WebGL项目开发问题与解决方法汇总
  14. 毕业设计-基于微信小程序房屋安全管理系统
  15. linux关于安装tar、tar.gz、tar.xz等文件的贴士
  16. markdown公式中字母加粗
  17. js按下回车键调用方法
  18. hitTest:(CGPoint)point withEvent:(UIEvent *)event
  19. Spark系列之Spark体系架构
  20. 深入浅出Java开发!什么是分布式系统,如何学习分布式系统

热门文章

  1. [原创]MOF提权下载者代码
  2. Docker 从入门到放弃(一)安装
  3. 测试:第二章 测试过程
  4. php-fpm性能优化
  5. 百度地图集成Plist文件需要增加的字段
  6. 深度探索C++对象模型读书笔记(1)
  7. Spring的IOC机制
  8. 【深度一键还原】我的台式机
  9. background的认识(一)
  10. Springboot+JasperReport报表打印