nvidia-smi GPU 性能测量没有意义

Posted

技术标签:

【中文标题】nvidia-smi GPU 性能测量没有意义【英文标题】:nvidia-smi GPU performance measure does not make sense 【发布时间】:2015-08-20 05:26:20 【问题描述】:

我正在使用 Nvidia GTX Titan X 做深度学习实验。 我正在使用 nvidia-smi 来监控 GPU 运行状态,但是工具提供的 perf(ormance) 状态没有意义。

我查看了 nvidia-smi 手册,上面写着:

性能状态 GPU 的当前性能状态。状态范围从 P0(最高性能)到 P12(最低性能)。

GPU 上没有运行任何进程(空闲状态),GPU 性能状态为 p0。 但是,当运行一些计算量大的进程时,状态变为 p2。

我的问题是,为什么我的 GPU 在空闲时处于 P0 状态,但在运行繁重的计算任务时切换到 P2?不应该是相反的吗?

另外,有没有办法让我的 GPU 始终运行在 P0 状态(最高性能)?

【问题讨论】:

【参考方案1】:

令人困惑。

不过,nvidia-smi 手册是正确的。

当一个 GPU 或一组 GPU 空闲时,在机器上运行 nvidia-smi 的过程通常会使其中一个 GPU 脱离空闲状态。这是因为该工具正在收集信息 - 它需要唤醒其中一个 GPU。

此唤醒过程最初会将 GPU 带到 P0 状态(最高性能状态),但 GPU 驱动程序将监视该 GPU,并最终开始降低性能状态以节省电量,如果 GPU 空闲或不是特别忙。

另一方面,当 GPU 在工作负载上处于活动状态时,GPU 驱动程序将根据自己的启发式方法不断调整性能状态以提供最佳性能,同时将性能状态与实际工作负载相匹配。如果未达到热或功率限制,则性能状态应达到其最高水平 (P0),以应对最活跃和最繁重的连续工作负载。

周期性繁重但不连续的工作负载可能会导致 GPU 电源状态在 P0-P2 级别左右波动。由于热(温度)或电源问题而“节流”的 GPU 也可能会看到 P 状态降低。这种类型的限制很明显,并且在 nvidia-smi 中单独报告,但这种类型的报告可能并不适用于所有 GPU 类型。

如果您想查看 GPU 上的 P0 状态,我能提供的最佳建议是运行一个短暂、繁重、连续的工作负载(例如,执行大型 sgemm 操作的工作),然后在运行期间监控 GPU那个工作量。在那种情况下应该可以看到 P0 状态。

如果您正在使用一个使用 cuDNN 库的机器学习应用程序(例如 Caffe),并且您正在训练一个大型网络,则应该可以不时看到 P0,因为 cuDNN 执行的操作类似于sgemm 在这种情况下,通常。

但对于零星的工作负载,最常观察到的状态很可能是 P2。

要始终“强制”P0 电源状态,您可以通过nvidia-smi 工具尝试使用持久性模式和应用程序时钟。使用 nvidia-smi --help 或 nvidia-smi 的手册页来了解这些选项。

虽然我认为这通常不适用于 Tesla GPU,但某些 NVIDIA GPU 可能会在计算负载下将自身限制为 P2 电源状态除非应用程序时钟专门设置得更高。使用nvidia-smi -a 命令查看当前应用程序时钟、默认应用程序时钟和 GPU 可用的最大时钟。 (某些 GPU,包括较旧的 GPU,可能会在这些字段中显示 N/A。这通常表明应用程序时钟无法通过 nvidia-smi 修改。)如果卡在计算负载期间似乎以 P2 状态运行,您可以能够通过将应用程序时钟增加到最大可用(即 Max Clocks)将其增加到 P0 状态。使用 nvidia-smi --help 了解如何格式化命令以更改 GPU 上的应用程序时钟。修改应用程序时钟或启用可修改的应用程序时钟可能需要 root/admin 权限。也可能需要或必须设置 GPU 持久性模式。这将防止驱动程序在 GPU 活动期间“卸载”,这可能会导致在重新加载驱动程序时重置应用程序时钟。

对于在这种情况下受影响的显卡,在计算负载下限制为 P2 的默认行为是设计的 GPU 驱动程序。

This 有点相关的问题/答案也可能很有趣。

【讨论】:

强制P0的指南cryptomining-blog.com/… 我不认为通过 nvidia-smi 或 nvidia-settings 设置内存/核心时钟适用于 1000 和 2000 系列卡 很好的信息。我想有时我们必须耐心等待 P2。例如,84C 的 Titan V 似乎不想超过 P2(功率在 180W 左右振荡)。 nvidia-smi -a 显示 SW Thermal Slowdown : Active - 驱动程序限制的迹象? 太热了。热减速Active 意味着软件正在读取 GPU 温度传感器并限制时钟速度以防止其变热。我通常会质疑您的冷却环境。系统机箱内部可能过热。您可能需要更多的系统粉丝。

以上是关于nvidia-smi GPU 性能测量没有意义的主要内容,如果未能解决你的问题,请参考以下文章

替代 nvidia-smi 来测量 GPU 利用率?

nvidia-smi

novelaiwebui报错gpucpu

Linux--无进程却显示占用显存,GPU显存释放方法

GPU RAM 已占用但没有 PID

在 TensorFlow 中打印 GPU 和 CPU 使用率