Nsight Compute 中的指令统计字段是什么意思?它们与经过的周期有什么关系?

问题描述 投票:0回答:1

enter image description here

在我的例子中,执行指令是什么意思?按照字面意思,就是执行了多少条指令

但是它与总使用时间(74.35ms,166170948cycle)有何关系?

平均数的含义是什么?每个调度程序执行的指令?

为什么“每个调度程序执行的指令”是“执行的指令”的 5 倍?

cuda nvidia nsight nsight-compute
1个回答
0
投票

“执行的指令”是执行的物理 GPU 指令的启动网格中所有线程的计数。这些不是 CUDA 指令,甚至不是 PTX 指令,而是具体 GPU 的流式多处理器指令(例如 IADD.3;有关该特定 SASS 指令系列的讨论,请参阅这个问题)。计数还考虑条件执行,即如果 warp 具有 if 块的

then
分支,有 5 条指令要执行,但其中两个线程已经退出 - 对计数的贡献将为 (32-2)*5 = 150 条指令。

请注意,指令执行时间(通常)会有所不同:

  • 不同的指令需要 SM 功能单元活动不同的时间
  • 加载指令将有不同的延迟,具体取决于完成读取所需的时间,例如取决于缓存情况、共享内存的存储冲突等。
  • 在安排执行指令之前总会有等待的时间
  • ...另一方面,当一些扭曲等待时,其他扭曲可能会执行自己的指令(“延迟隐藏”)

因此,虽然执行的指令数量通常与执行时间或经过的时钟周期数正相关,但这种相关性非常复杂。

平均。每个调度程序执行的指令?

每个 NVIDIA GPU 核心(也称为“流式多处理器”)都有多个 warp 调度程序。在每个时钟周期中,调度程序可能会也可能不会找到合适的扭曲并调度它来执行指令。

因此,根据此统计数据,已执行指令的总数除以调度程序的数量,即除以(SM 数量)*(每个 SM 的调度程序数量)。

© www.soinside.com 2019 - 2024. All rights reserved.