GPU利用率

英伟达官方的GPU利用率的定义如下:
G P U U t i l r a t e = n u m b e r   o f   a c t i v e   S M n u m b e r   o f   t o t a l   S M × 100 % GPU Util rate = \frac{number \ of \ active \ SM}{number \ of \ total \ SM} \times 100\% GPUUtilrate=number of total SMnumber of active SM×100%

nvidia-smi 中的GPU利用率

#include <stdio.h>

__global__ void simple_kernel() {
    while (true) {}
}

int main() {
    simple_kernel<<<1, 1>>>();
    cudaDeviceSynchronize();
}

上述代码片段将在单个流多处理器(SM)上启动指定的内核(线程)。根据常规理解,GPU的“利用率”应该计算为 1 n u m _ s m \frac{1}{num\_sm} num_sm1。但 nvidia-smi 却显示GPU利用率为100%:

nvidia-smi

根据NVML的定义,“利用率”是指在过去的样本期间内发生某些活动的时间百分比。具体来说:

  • GPU利用率:这表示一个或多个内核在GPU上执行的时间百分比

NVML的定义完全不符合我们日常开发中的“利用率”理解。它仅测量给定采样周期内设备使用的时间部分,而不考虑该时间内使用的流式多处理器(SM)的数量。

通常,我们将“利用率”视为正在使用的GPU处理器的部分,用专业术语说就是“饱和度”:

资源具有无法服务的额外工作的程度

我们可以用 dcgm-exporter 来收集GPU的饱和度信息,这里引用Tim在路上的图片:

gpu-util

sm

上图可以看到当GPU利用率为100%时,SM占用率非常低(<20%),浮点运算(FP32/FP16/TensorCore)也保持在非常低的百分比,这表明GPU还没有饱和,而这才是真实的GPU利用现状。


参考

  • 21
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值