如果需要在程序中实时获取nvidia gpu的设备使用率,比如pwr
、sm
、pclk
等信息,可以借用int system(const char *command)
[1] 函数把 nvidia-smi 使用命令传给要被命令处理器执行的主机环境,并在命令完成后返回,由此将当前设备信息打印到屏幕上或者保存到日志文件。
#include <stdlib.h>
system("nvidia-smi dmon -c 1");
# 打印结果
# gpu pwr gtemp mtemp sm mem enc dec mclk pclk
# Idx W C C % % % % MHz MHz
0 28 55 - 2 0 0 0 5000 900
0 28 55 - 2 0 0 0 5000 900
# 监控指标(默认为puc),其中:
# p:电源使用情况和温度(pwr:功耗,temp:温度)
# u:GPU使用率(sm:流处理器,mem:显存,enc:编码资源,dec:解码资源)
# c:GPU处理器和GPU内存时钟频率(mclk:显存频率,pclk:处理器频率)
# v:电源和热力异常
# m:FB内存和Bar1内存
# e:ECC错误和PCIe重显错误个数
# t:PCIe读写带宽
-
C 库函数 - system() https://www.runoob.com/cprogramming/c-function-system.html ↩