gpt4 book ai didi

cuda - 有没有办法甚至可能在一段时间内获得 GPU 的整体利用率?

转载 作者:行者123 更新时间:2023-12-04 22:47:19 25 4
gpt4 key购买 nike

我试图在一段时间内获取有关 GPU 整体利用率的信息(我的是 NVIDIA Tesla K20,在 Linux 上运行)。
“整体”是指计划运行多少个流式多处理器,以及计划运行多少个 GPU 内核(我想如果一个内核正在运行,它将以其全速/频率运行?)。如果我能得到以 flops 衡量的整体利用率,那就太好了。

当然,在这里提出问题之前,我已经搜索并调查了几个现有的工具/库,包括 NVML(以及基于它构建的 nvidia-smi)、CUPTI(和 nvprof)、PAPI、TAU 和 Vampir。但是,似乎(但我还不确定)他们都无法为我提供所需的信息。例如,NVML 可以按百分比报告“GPU 利用率”,但根据其文档/评论,此利用率是“过去一秒内一个或多个内核在 GPU 上执行的时间百分比”,这显然不够准确.对于 nvprof,它可以报告单个内核的失败(开销非常高),但我仍然不知道 GPU 的利用率如何。

PAPI 似乎能够获得指令计数,但它不能与其他浮点运算不同。我还没有尝试过其他两种工具(TAU 和 Vampir),但我怀疑它们能否满足我的需求。

所以我想知道是否有可能获得 GPU 的整体利用率信息?如果不是,估计它的最佳选择是什么?我这样做的目的是为在 GPU 上运行的多个作业找到更好的时间表。

我不确定我是否已经足够清楚地描述了我的问题,所以请告诉我是否可以添加任何内容以获得更好的描述。

非常感谢你!

最佳答案

英伟达 Nsight Visual Studio 的插件具有非常好的图形功能,可以提供您想要的统计信息。但我感觉你有一台 Linux 机器,所以 Nsight 无法工作。

我建议使用 nVidia Visual Profiler .

指标引用相当完整,可以找到 here .这就是我收集您感兴趣的数据的方式:

  • 有源 SMX 单元 - 查看 sm_efficiency .它应该接近 100%。如果它较低,则某些 SMX 单元未激活。
  • 有源内核/SMX - 这取决于 . K20 有一个带有双指令问题的 Quad-warp 调度程序。经线发射 32 个 SM 核心。 K20 有 192 个 SP 核心和 64 个 DP 核心。你需要看看工控机 公制(每个周期的指令)。如果您的程序是 DP 并且 IPC 是 2,那么您有 100% 的利用率( 用于整个工作负载执行 )。这意味着 2 个 warp 计划指令,因此所有 64 个 DP 核心都处于事件状态在所有周期中 .如果你的程序是 SP,理论上你的 IPC 应该是 6。但实际上这很难得到。 IPC 为 6,意味着 3 个调度程序每个启动 2 个 warp,并将工作分配给 3 x 2 x 32 = 192 个 SP 内核。
  • FLOPS - 好吧,如果您的程序使用浮点运算,那么我会查看 flop_count_sp 并将其除以经过的秒数。

  • 关于频率,我不担心,但检查 nvidia-smi 并没有什么坏处。如果您的卡有足够的冷却,那么它将在运行时保持在峰值频率。

    检查指标引用,因为它将为您提供更多有用的信息。

    我认为 NVprof 也支持多个进程。查看 here .您还可以按进程 ID 过滤。因此,您可以“多上下文”或“单上下文”收集这些指标。在指标引用表中,您有一列说明是否可以在这两种情况下收集它们。

    备注 :使用硬件性能计数器和驱动程序级别分析计算指标。如果 nvidia 工具不能提供更多,那么其他工具不太可能提供更多。但我认为正确组合这些指标可以告诉您有关应用运行的所有信息。

    关于cuda - 有没有办法甚至可能在一段时间内获得 GPU 的整体利用率?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26786658/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com