CUDA nvvp 提供的报告中的“Instruction Issued”是啥意思?

Posted

技术标签:

【中文标题】CUDA nvvp 提供的报告中的“Instruction Issued”是啥意思?【英文标题】:What does "Instruction Issued" mean in the report provided by CUDA nvvp?CUDA nvvp 提供的报告中的“Instruction Issued”是什么意思? 【发布时间】:2018-04-19 13:17:08 【问题描述】:

我使用 Nvidia 可视化分析器 (nvvp) 在 cublas 内核上执行内核分析。这个链接Latency Distribution是延迟分布结果。

文档是这样解释“指令发出”这个术语的——“指令发出 - 经线发出”,这让我很困惑。 究竟是什么意思?

【问题讨论】:

docs.nvidia.com/cuda/profiler-users-guide/… 感谢您的热心帮助。 【参考方案1】:

首先介绍一下the CUDA execution model的背景。

CUDA warp 是 CUDA GPU 上调度和执行的基本单元。 warp 是一起执行的 32 个线程的固定集合。

因此,在任何给定的时钟周期内,warp 中的一个线程执行的指令始终由 warp 中的所有其他线程执行(尽管它们可能被断言为关闭或被屏蔽为不活动,并且在此讨论中忽略 Volta)。

CUDA 流式多处理器 (SM) 具有调度程序,它查看属于可用 warp 的各种执行线程,并从准备好的执行线程中选择指令,以将这些指令调度到 SM 内的各个执行单元上。

一条指令发出然后,意味着warp调度器选择了一条指令,并将它发出(调度)到一组执行单元上,进行处理。由于 CUDA 执行模型,说“指令已发出”实际上意味着该指令是在整个 warp 范围内发出的,这意味着它被调度到 32 个相关的执行单元上,以便为 warp 中的所有 32 个线程服务该指令。我们可以说“已发出该经线”意味着已为经线中的所有 32 个线程发出指令。

现在,关于分布饼图,您可能需要参考here。

分析器正在使用PC-sampling 来确定样本点处的扭曲状态,然后将如此采样的扭曲状态放入饼图分布图中,以显示特定时间的百分比状态被采样。

warp 可以处于多种状态,我不会尝试对它们进行定义和总结。但是许多状态将对应于“停顿”状态,这意味着处于该状态的扭曲不能从它发出指令(例如,可能是因为下一条指令具有 执行依赖之前发布的尚未完成的指令)。 “不失速”状态,是“指令下达”。 (扭曲状态定义为here。从技术上讲,“未选中”是“停顿”状态,但我将在下面讨论)。

“指令发出”可能是从扭曲角度来看的“最佳”状态。在对 warp 进行采样的时钟周期,它有一条指令准备好被调度,事实上,一条或多条指令实际上是从该 warp 发出的

相比之下,“未选择”(技术上也是“停顿”状态)是“准备好”发布的经线,但由于某种原因,经线调度程序选择从另一个经线中选择要发布的指令在采样的时钟周期内。

【讨论】:

这对我很有帮助。感谢您的详细分析和解释。 ^_^

以上是关于CUDA nvvp 提供的报告中的“Instruction Issued”是啥意思?的主要内容,如果未能解决你的问题,请参考以下文章

GPU运行nvvp失败“A Java Runtime Environment (JRE) or Java Development Kit (JDK)”

GPU运行nvvp失败“A Java Runtime Environment (JRE) or Java Development Kit (JDK)”

GPU运行nvvp失败“A Java Runtime Environment (JRE) or Java Development Kit (JDK)”

银行冲突CUDA共享内存?

在 CUDA 分析期间 <overflow> 是啥意思?

CUDA 结果使用非常大的数组返回垃圾,但不报告错误