GPU系列(三):如何管理GPU

1 使用nvidia-smi管理你的GPU卡

nvidia-smi命令是NVIDIA系统管理接口,之前提到使用nvidia-docker实际上底层也是调用的该接口。该接口可以查看到当前主机上的相关GPU设备,任务以及当前状态等信息,熟练使用该接口能够更好的管理好GPU系统资源。

2 开启持久模式

在Linux上,你需要将GPUs设置为持久模式persistence mode来保证你的NVIDIA驱动即使没有应用正在运行也是出于加载状态的。这个在你有一些短生命周期的job类型应用运行时是非常有用的。持久模式比较耗电,但是它会防止每次启动GPU应用程序时发生的相当长的延迟。当然如果你使用设定了时钟频率或功率限制的GPUs的话(当驱动不加载的话,这些设置会丢失),持久模式将是非常有必要的。通过如下命令设置持久模式:

nvidia-smi -pm 1

在Windows上,改接口不支持设置持久模式,但是可以设置为TCC模式。

3 查看GPU状态

3.1 GPU设备概要信息

由以下输出可以看到驱动版本为:375.39 ,以及GPU基本信息。

sh-4.2# nvidia-smi
Wed Oct 18 11:58:03 2017
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 375.39                 Driver Version: 375.39                    |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  Tesla M40 24GB      On   | 0000:04:00.0     Off |                    0 |
| N/A   23C    P8    17W / 250W |      0MiB / 22939MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+
|   1  Tesla M40           On   | 0000:05:00.0     Off |                    0 |
| N/A   26C    P8    17W / 250W |      0MiB / 11443MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+
|   2  Tesla M40 24GB      On   | 0000:06:00.0     Off |                    0 |
| N/A   22C    P8    17W / 250W |      0MiB / 22939MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+
|   3  Tesla M40           On   | 0000:07:00.0     Off |                    0 |
| N/A   23C    P8    16W / 250W |      0MiB / 11443MiB |      0%      Default |
+-------------------------------+----------------------+----------------------++-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID  Type  Process name                               Usage      |
|=============================================================================|
|  No running processes found                                                 |
+-----------------------------------------------------------------------------+
# Temp 标识GPU设备的温度
# Memory-Usage 表示内存使用率
# GPU-Util 表示GPU使用率
3.2 查看当前系统可用的GPU设备列表
$ nvidia-smi -L
GPU 0: Tesla M40 24GB (UUID: GPU-eb4e4871-504d-feb7-ba59-xxxxxxxxxx)
GPU 1: Tesla M40 (UUID: GPU-6c2cb0c9-acba-1dab-6525-xxxxxxxxxx)
GPU 2: Tesla M40 24GB (UUID: GPU-85551fe5-68ea-15b3-76c1-6fe1sas2w    1)
GPU 3: Tesla M40 (UUID: GPU-8fe0a30b-7faa-0537-e3a5-53ba5c8a61wesd)
3.3 查看GPU以及单元信息
$ nvidia-smi -q
 3.4 查看每一个GPU指定详细信息
# nvidia-smi --query-gpu=index,name,uuid,serial --format=csv
index, name, uuid, serial
0, Tesla M40 24GB, GPU-eb4e4871-504d-feb7-ba59-xxxxxxxx, xxxxxxxxxx
1, Tesla M40, GPU-6c2cb0c9-acba-1dab-6525-xxxxxxxx, xxxxxxxxxx
2, Tesla M40 24GB, GPU-85551fe5-68ea-15b3-76c1-xxxxxxxx, xxxxxxxxxx
3, Tesla M40, GPU-8fe0a30b-7faa-0537-e3a5-xxxxxxxx, xxxxxxxxxx
3.5 指定GPU查看相关信息
# nvidia-smi --query-gpu=index,name,uuid,serial --format=csv --id=0
index, name, uuid, serial
0, Tesla M40 24GB, GPU-eb4e4871-504d-feb7-ba59-d15a66d6faa7, 0322816142509
3.6 查看GPU全部信息
# nvidia-smi -a -i 3 
==============NVSMI LOG==============Attached GPUs                       : 8
GPU 00000000:11:00.0Product Name                    : Tesla P40Product Brand                   : TeslaDisplay Mode                    : EnabledDisplay Active                  : DisabledPersistence Mode                : EnabledAccounting Mode                 : DisabledAccounting Mode Buffer Size     : 1920Driver ModelCurrent                     : N/APending                     : N/ASerial Number                   : 0323617075184GPU UUID                        : GPU-b5d2fd9e-648b-8cd6-d0c2-dd1665cfb043Minor Number                    : 3VBIOS Version                   : 86.02.23.00.01MultiGPU Board                  : NoBoard ID                        : 0x1100GPU Part Number                 : 900-2G610-0300-030Inforom VersionImage Version               : G610.0200.00.03OEM Object                  : 1.1ECC Object                  : 4.1Power Management Object     : N/AGPU Operation ModeCurrent                     : N/APending                     : N/AGPU Virtualization ModeVirtualization mode         : NonePCIBus                         : 0x11Device                      : 0x00Domain                      : 0x0000Device Id                   : 0x1B3810DEBus Id                      : 00000000:11:00.0Sub System Id               : 0x11D910DEGPU Link InfoPCIe GenerationMax                 : 3Current             : 1Link WidthMax                 : 16xCurrent             : 16xBridge ChipType                    : N/AFirmware                : N/AReplays since reset         : 0Tx Throughput               : 0 KB/sRx Throughput               : 0 KB/sFan Speed                       : N/APerformance State               : P8Clocks Throttle ReasonsIdle                        : Not ActiveApplications Clocks Setting : Not ActiveSW Power Cap                : ActiveHW Slowdown                 : Not ActiveSync Boost                  : Not ActiveSW Thermal Slowdown         : Not ActiveFB Memory UsageTotal                       : 22912 MiBUsed                        : 10 MiBFree                        : 22902 MiBBAR1 Memory UsageTotal                       : 32768 MiBUsed                        : 2 MiBFree                        : 32766 MiBCompute Mode                    : DefaultUtilizationGpu                         : 0 %Memory                      : 0 %Encoder                     : 0 %Decoder                     : 0 %Encoder StatsActive Sessions             : 0Average FPS                 : 0Average Latency             : 0Ecc ModeCurrent                     : EnabledPending                     : EnabledECC ErrorsVolatileSingle BitDevice Memory       : 0Register File       : N/AL1 Cache            : N/AL2 Cache            : N/ATexture Memory      : N/ATexture Shared      : N/ACBU                 : N/ATotal               : 0Double BitDevice Memory       : 0Register File       : N/AL1 Cache            : N/AL2 Cache            : N/ATexture Memory      : N/ATexture Shared      : N/ACBU                 : N/ATotal               : 0AggregateSingle BitDevice Memory       : 2111Register File       : N/AL1 Cache            : N/AL2 Cache            : N/ATexture Memory      : N/ATexture Shared      : N/ACBU                 : N/ATotal               : 2111Double BitDevice Memory       : 255Register File       : N/AL1 Cache            : N/AL2 Cache            : N/ATexture Memory      : N/ATexture Shared      : N/ACBU                 : N/ATotal               : 255Retired PagesSingle Bit ECC              : 0Double Bit ECC              : 4       #由于一个double bit ECC error,GPU device 内存页被重试的次数Pending                     : YesTemperatureGPU Current Temp            : 47 CGPU Shutdown Temp           : 95 CGPU Slowdown Temp           : 92 CGPU Max Operating Temp      : N/AMemory Current Temp         : N/AMemory Max Operating Temp   : N/APower ReadingsPower Management            : SupportedPower Draw                  : 12.41 WPower Limit                 : 250.00 WDefault Power Limit         : 250.00 WEnforced Power Limit        : 250.00 WMin Power Limit             : 125.00 WMax Power Limit             : 250.00 WClocksGraphics                    : 544 MHzSM                          : 544 MHzMemory                      : 405 MHzVideo                       : 544 MHzApplications ClocksGraphics                    : 1303 MHzMemory                      : 3615 MHzDefault Applications ClocksGraphics                    : 1303 MHzMemory                      : 3615 MHzMax ClocksGraphics                    : 1531 MHzSM                          : 1531 MHzMemory                      : 3615 MHzVideo                       : 1379 MHzMax Customer Boost ClocksGraphics                    : 1531 MHzClock PolicyAuto Boost                  : N/AAuto Boost Default          : N/AProcesses                       : None

4 监控和管理GPU Boost

管理员和用户可以使用这种方式来观察GPUs的状态。 以下显示了每个GPU的可用时钟频率(Tesla M40)。 

$ nvidia-smi -q -d SUPPORTED_CLOCKS
GPU 0000:07:00.0Supported ClocksMemory                      : 3004 MHzGraphics                : 1114 MHzGraphics                : 1088 MHzGraphics                : 1063 MHzGraphics                : 1038 MHzGraphics                : 1013 MHzGraphics                : 987 MHzGraphics                : 962 MHzGraphics                : 949 MHzGraphics                : 924 MHzGraphics                : 899 MHzGraphics                : 873 MHzGraphics                : 848 MHzGraphics                : 823 MHzGraphics                : 797 MHzGraphics                : 772 MHzGraphics                : 747 MHzGraphics                : 721 MHzGraphics                : 696 MHzGraphics                : 671 MHzGraphics                : 645 MHzGraphics                : 620 MHzGraphics                : 595 MHzGraphics                : 557 MHzGraphics                : 532 MHzMemory                      : 405 MHzGraphics                : 324 MHz

以上显示中只有两个内存时钟(memory clock)被支持:3004 MHz和405 MHz.运行在前者的内存,有24个支持GPU时钟频率。后者只有一个GPU频率,且是空闲状态的。在Tesla K80上,GPU Boost会自动管理这些频率,来让他们运行的尽可能快。而在其他一些模块中,比如Tesla K40,必须由管理员来指定GPU时钟频率。

查看当前GPU的时钟频率,默认的时钟加速和最小的时钟频率

$ nvidia-smi -q -d CLOCKGPU 0000:07:00.0ClocksGraphics                    : 949 MHzSM                          : 949 MHzMemory                      : 3004 MHzVideo                       : 873 MHzApplications ClocksGraphics                    : 947 MHzMemory                      : 3004 MHzDefault Applications ClocksGraphics                    : 947 MHzMemory                      : 3004 MHzMax ClocksGraphics                    : 1114 MHzSM                          : 1114 MHzMemory                      : 3004 MHzVideo                       : 1024 MHzSM Clock SamplesDuration                    : 10989718.85 secNumber of Samples           : 46Max                         : 1063 MHzMin                         : 324 MHzAvg                         : 948 MHzMemory Clock SamplesDuration                    : 10989718.85 secNumber of Samples           : 46Max                         : 3004 MHzMin                         : 405 MHzAvg                         : 3003 MHzClock PolicyAuto Boost                  : OnAuto Boost Default          : On

理想状态中,你想让所有的时钟都一直运行在比较高的速度,但是对于所有的应用来说是不可能的。可以使用PERFORMANCE参数来查看每个GPU卡当前的状态以及时钟慢下来的原因。

$ nvidia-smi -q -d PERFORMANCE/performance
GPU 0000:07:00.0Performance State               : P0Clocks Throttle ReasonsIdle                        : Not ActiveApplications Clocks Setting : ActiveSW Power Cap                : Not ActiveHW Slowdown                 : Not ActiveSync Boost                  : Not ActiveUnknown                     : Not Active

如果任何一个GPU时钟都以比较慢速度运行的话,那么上面的Clocks Throttle Reasons中的一个或多个将会被标记为active状态。最需要关注的是HW SlowdownUnknown 是否是active状态,如果那样的话很可能是电源或者冷却系统的问题。其余的需要关注设备卡是否是空闲的或者是由管理员手动设置为slower模式。

使用nvidia-smi还可以去监控其他相关指标,-d参数支持MEMORY UTILIZATION ECC TEMPERATURE POWER CLOCK COMPUTE PIDS PERFORMANCE SUPPORTED_CLOCKS PAGE_RETIREMENT ACCOUNTING

查看每块GPU卡的内存使用:

$ nvidia-smi -q -d memoryGPU 0000:06:00.0FB Memory UsageTotal                       : 22939 MiBUsed                        : 21800 MiBFree                        : 1139 MiBBAR1 Memory UsageTotal                       : 32768 MiBUsed                        : 2 MiBFree                        : 32766 MiBGPU 0000:07:00.0FB Memory UsageTotal                       : 11443 MiBUsed                        : 10876 MiBFree                        : 567 MiBBAR1 Memory UsageTotal                       : 16384 MiBUsed                        : 2 MiBFree                        : 16382 MiB

指定GPU卡查看相关指标:

nvidia-smi -i 0 -q -d MEMORY,UTILIZATION,POWER,CLOCK,COMPUTE

5 查看系统的拓扑结构

要适当的利用更先进的NVIDIA GPU优势(例如GPU Direct),因此系统的拓扑结构的正确配置是非常重要的。拓扑结构涉及到PCI-Express(GPUs, InfiniBand HCAs, storage controllers, etc)设备如何连接到其他设备,以及如何连接到系统CPU的。如果配置不正确,可能某些特定的功能性能会比较低甚至不能正常工作。为了解决如上问题,nvidia-smi最近的版本包含了一个可用查看系统拓扑的命令。

# 显示GPU拓扑(-m参数可以看到GPU交流矩阵以及CPU亲和性绑定)
$  nvidia-smi topo -mGPU0	GPU1	GPU2	GPU3	CPU Affinity
GPU0	 X 	PIX	PIX	PIX	0-0,2-2,4-4,6-6,8-8,10-10,12-12,14-14,16-16,18-18,20-20,22-22
GPU1	PIX	 X 	PIX	PIX	0-0,2-2,4-4,6-6,8-8,10-10,12-12,14-14,16-16,18-18,20-20,22-22
GPU2	PIX	PIX	 X 	PIX	0-0,2-2,4-4,6-6,8-8,10-10,12-12,14-14,16-16,18-18,20-20,22-22
GPU3	PIX	PIX	PIX	 X 	0-0,2-2,4-4,6-6,8-8,10-10,12-12,14-14,16-16,18-18,20-20,22-22Legend:X   = SelfSOC  = Connection traversing PCIe as well as the SMP link between CPU sockets(e.g. QPI)PHB  = Connection traversing PCIe as well as a PCIe Host Bridge (typically the CPU)PXB  = Connection traversing multiple PCIe switches (without traversing the PCIe Host Bridge)PIX  = Connection traversing a single PCIe switchNV#  = Connection traversing a bonded set of # NVLinks

以上配置显示我们有四块GOU卡,并且都链接在服务器的第一颗CPU上(物理机2颗6核cpu并开启超线程)。该工具建议推荐我们将job运行在偶数标记的cpu上。并且以上四块GPU卡都是互相通过PCIe switch直连的。

一个可用的GPU矩阵表示如下:

  • X = 表示GPU本身
  • SOC = 表示贯穿PCIe总线和CPU sockets之间的SMP链接。
  • PHB = 贯穿PCIe总线和PCIe Host Bridge
  • PXB = 贯穿多个PCIe switch(不通过PCIe Host Bridge)
  • PIX = 链接单个PCIe switch
  • NV# = 贯穿一组NVLinks设备

划重点啦:其实由上面的GPU拓扑可以看出来,我们系统上的4块设备是两两互相直连的架构!因为4块卡是通过一个PCIe switch来互相通信的。

补充:查看GPU卡之间的邻居和链接关系

# nvidia-smi topo 命令有个参数-n可以用来指定gpu卡以及互联结构来查看和它互联结构
#                   0 = a single PCIe switch on a dual GPU board
#                   1 = a single PCIe switch
#                   2 = multiple PCIe switches
#                   3 = a PCIe host bridge
#                   4 = a socket-level link# 查看每个GPU卡所在的socket上链接的其他GPU卡设备
for uuid in `nvidia-smi --query-gpu=uuid --format=csv | grep GPU  | xargs`;do nvidia-smi topo -i $uuid -n 4;done
# 查看每个GPU卡所在的PCIe host bridge 上链接的其他GPU卡设备
for uuid in `nvidia-smi --query-gpu=uuid --format=csv | grep GPU  | xargs`;do nvidia-smi topo -i $uuid -n 3;done
# 查看每个GPU卡所在的PCIe switch 上链接的其他GPU卡设备
for uuid in `nvidia-smi --query-gpu=uuid --format=csv | grep GPU  | xargs`;do nvidia-smi topo -i $uuid -n 1;done

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/5566.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

在做题中学习(48):朴素的二分查找

. - 力扣(LeetCode) 解法一: 暴力求解 for循环中,从nums[0]枚举到nums[n-1],依次判断,返回 target的值。 时间复杂度 : O(N) :因为要遍历一遍数组 解法二:二分查找 因为此数组为有序的…

Mybatis进阶(动态SQL)

文章目录 1.动态SQL1.基本介绍1.为什么需要动态SQL2.基本说明3.动态SQL常用标签 2.环境搭建1.新建子模块2.删除不必要的两个文件夹3.创建基本结构4.父模块的pom.xml5.jdbc.properties6.mybatis-config.xml7.MyBatisUtils.java8.MonsterMapper.java9.MonsterMapper.xml10.测试Mo…

如何将安卓手机投屏到Windows 10电脑上

诸神缄默不语-个人CSDN博文目录 我之所以要干这个事是为了用手机直播的时候在电脑上看弹幕…… 文章目录 1. 方法一:直接用Win10内置的投影到此电脑2. 方法二:用AirDroid Cast投屏到电脑上 1. 方法一:直接用Win10内置的投影到此电脑 在设置…

C++ 多态详解

文章目录 1. 多态的概念2. 多态的定义及实现2.1 多态的构成条件2.2 虚函数2.3 虚函数的重写2.3.1 虚函数重写的两个例外 2.4 C11 override 和 final2.5 重载、覆盖(重写)、隐藏(重定义)的对比 3. 多态的原理3.1 虚函数表3.2多态的原理 4. 单继承和多继承关系的虚函数表4.1 单继…

5个数据科学中常用的高级SQL操作

大家好,在数据科学领域,SQL(结构化查询语言)发挥着重要作用,不仅是数据管理的基石,更是深入挖掘和分析数据中宝贵信息的强有力工具。虽然基础的SQL命令对于数据查询不可或缺,但精通高级SQL技巧则…

docker安装【zookeeper】【kafka】【provectuslabs/kafka-ui】记录

目录 1.安装zookeeper:3.9.2-jre-172.安装kafka:3.7.03.安装provectuslabs/kafka-ui (选做)新环境没有jdk,安装jdk-17.0.10备用 mkdir -p /export/{data,apps,logs,conf,downloads}cd /export/downloadscurl -OLk https://download.oracle.…

新品发布!无人机装调检修实训系统

近年,我国密集出台相关产业政策,推动低空经济从探索走向发展,根据新华网数据,2030年低空经济规模有望达2万亿。无人机专业属于跨学科的综合性专业,其中装调检测技术是无人机教培的重要组成部分。 天途推出无人机装调检…

Apache SeaTunnel k8s 集群模式 Zeta 引擎部署指南

SeaTunnel提供了一种运行Zeta引擎(cluster-mode)的方法,可以让Kubernetes在本地运行Zeta引擎,实现更高效的应用程序部署和管理。在本文中,我们将探索SeaTunnel k8s运行zeta引擎(cluster-mode模式)的更多信息,了解如何更好地利用Ze…

安装PyKDL库: No module named ‘PyKDL

我的python路径是/home/lsw/miniconda3/bin/python python版本是Python 3.8.17 怎么设置为默认 要将你的 Python 路径 /home/lsw/miniconda3/bin/python 设置为默认的 Python 版本,你可以使用 update-alternatives 命令(适用于 Debian/Ubuntu 等基于 Deb…

HTML:元素分类

HTML:元素分类 概述块级元素(Block-level Elements)内联元素(Inline Elements)替换元素(Replaced Elements)表单元素(Form Elements) 概述 HTML(HyperText M…

Docker容器:网络模式与资源控制

目录 一、Docker 网络模式 1、Docker 网络实现原理 2、Docker 网络模式概述 2.1 Host 模式 2.2 Container 模式 2.3 None 模式 2.4 Bridge 模式 2.5 自定义网络(user-defined network) 3、配置 docker 网络模式 3.1 查看网络基础命令 3.1.1 查…

css利用transform:skew()属性画一个大屏的背景斜面四边形特效

在工作工程中需要写一个如下的大屏背景&#xff0c;是由几个斜面做成的效果 使用css transform function中的skew()方法实现画其中一个斜面&#xff0c;然后调整背景色实现 写一个div <div class"skew_container test-2"><div class"skew_container_it…

React中,双花括号和单花括号的区别(四)

在React中&#xff0c;花括号 {} 用于在JSX中插入JavaScript表达式。 单花括号 {}&#xff1a;通常用于在JSX中嵌入JavaScript表达式。这些表达式可以是变量、函数调用、对象字面量、数组等。React会评估这些表达式&#xff0c;并将结果插入到JSX中。 例如&#xff0c;在你的代…

【python笔记】datafram的时间动态可视化 pyecharts地图

import pandas as pd# 假设DataFrame是这样的&#xff1a; df pd.DataFrame({ year: [2014, 2015, 2016, 2014, 2015, 2016, 2014, 2015, 2016], province: [广东省, 广东省, 河南省, 湖南省, 北京市, 北京市, 上海市, 新疆维吾尔自治区, 上海市], values: [100, 150, 75…

Servlet文件嵌套<script>来显示提示框而出现乱码的解决方案

主要出现的原因就是编码不统一导致无法解析对话框中的字符串 我的解决方案: 使用 URL 的编码格式&#xff0c;然后再使用js中的decodeURIComponent函数解析URL编码的字符串&#xff0c;并且恢复其原始字符串内容 将你写的传统的编码格式改为 PrintWriter out resp.getWriter(…

多目标应用:MSSA多目标樽海鞘优化算法求解无人机三维路径规划(MATLAB代码)

一、无人机多目标优化模型 无人机三维路径规划是无人机在执行任务过程中的非常关键的环节&#xff0c;无人机三维路径规划的主要目的是在满足任务需求和自主飞行约束的基础上&#xff0c;计算出发点和目标点之间的最佳航路。 1.1路径成本 无人机三维路径规划的首要目标是寻找…

YOLOV8 pycharm

1 下载pycharm 社区版 https://www.jetbrains.com/zh-cn/pycharm/download/?sectionwindows 2 安装 3 新建 4 选择 文件-> setting 配置环境变量 5 添加conda 环境

基本STL使用

一 、关于vector 在STL中有一个称为vector的数据结构&#xff0c;可以用来代替数组。 定义Book特性 private:vector<string> shelf_books;Notic : 类中不能使用类似的定义&#xff1a;vector<sttring> shelf_boos( 10 ); 定义Book方法 public:void setName(str…

5.C++动态内存管理(超全)

目录 1 .C/C 内存分布 2. C语言中动态内存管理方式&#xff1a;malloc/calloc/realloc/free 3. C内存管理方式 3.1 new/delete操作内置类型 3.2 new和delete操作自定义类型 3.3 operator new函数 3.4 定位new表达式(placement-new) &#xff08;了解&#xff09; 4. 常…

Java 基础重点知识-(Java 语言特性、数据类型、常见类、异常)

文章目录 Java 语言特性形参和实参的区别是什么?值传递和引用传递的区别?Java 是值传递还是引用传递?final 的作用是什么?final finally finalize 有什么不同?static 的作用是什么?static 和 final 的区别是什么? Java 数据类型Java基本数据类型有几种? 各占多少位?基…