GPU MHZ 利用率

Posted

技术标签:

【中文标题】GPU MHZ 利用率【英文标题】:GPU MHZ Utilization 【发布时间】:2018-07-04 03:45:36 【问题描述】:

我正在为 GPU 卡开发一个监控代理,它能够使用 CUDA 和 NVML 库提供实时遥测。

我想进一步了解 GPU 内核操作与 Intel/AMD CPU 内核的工作原理。

可用于 CPU 的一个公式是(cpumhz 或工作负载平均峰值 CPU 利用率 (MHz)),如下所示:

((CPUSPEED * CORES) /100) * CPULOAD = Workload average peak CPU utilization

更多细节在这里 https://vikernel.wordpress.com/tag/vmware-formulas/

同样的公式可以应用于 GPU 是否正确。例外情况是 CUDA 核心/着色器代替“核心”,或者我可以将当​​前时钟速度乘以实际 gpu 时钟使用情况,因为 GPU 有一个核心时钟用于其 1000 个核心/着色器。

例如:

((GRAPHICS_MHZ * CUDA_CORES) /100) * GPU_LOAD = GPU MHZ utilization

【问题讨论】:

对于 GPU,您将使用 SM 利用率或 SM 调度程序 (SMSP) 作为 (sm[sp]__active_cycles / sm[sp]__elapsed_cycles * 100。) elapsed_cycles 除以 gpu__time_duration 是 SM 时钟频率。给出的指标名称是 PerfWorks 指标。可以通过 CUPTI SDK 收集类似信息,但仅限于单个 CUDA 上下文。我相信对于所有 NVIDIA GPU,nvidia-smi 将报告 1 线程内核启动的 100% 利用率。 【参考方案1】:

查看gpustat,它是nvidia-smi 的包装器。

而GPUtil,它可以获取 GPU 的最大当前相对负载

【讨论】:

您好,感谢您的回复。我知道如何获得 gpuload 和内存负载。当您想查看基于当前图形 mhz 的 gpu 负载消耗了多少 mhz 利用率时,我试图验证我对 gpu 内核与 cpu 内核的工作方式的理解。我可以生成这样的数据:`“gpu_graphics_clock_mhz”:139,“gpu_graphics_load”:76,“gpu_memory_bandwidth”:192.192,“gpu_memory_bandwidth_used”:19.44,“gpu_memory_bus”:192,“gpu_memory_clock_mhz”:405,“gpu_memory_load”:46, “gpu_memory_total”:3072,“gpu_memory_used”:262.49` 不过我会检查这些工具 ;-)【参考方案2】:

我想我是根据 GPU 卡的工作原理找到答案的。由于每个内核都是并行运行的,因此它们比我所读到的 CPU 内核更有效地工作。

有了CPU核心,你可以使用上面的公式,但是如果你想查看gpu卡上使用的mhz,你可以简单地使用:

(GRAPHICS_MHZ * /100) * GPU_LOAD = GPU MHZ utilization

好消息是,您返回的 GPU_LOAD 是从 GPU 卡提供的计算,而不是从 CPU 卡获得的计算。如果有人有不同的意见,我很乐意听到。

【讨论】:

以上是关于GPU MHZ 利用率的主要内容,如果未能解决你的问题,请参考以下文章

使用 tensorflow 数据集的 GPU 利用率低下

gpu使用率一直是0?

如何查看GPU占用率和显存占用率

由于占用率低而说GPU处于利用率低下是啥意思?

GPU 利用率

优化调参提升GPU和CPU的利用率