关于GPU上的延迟和指令级并行性

时间:2018-07-19 13:42:01

标签: gpu nvidia latency

我正在研究GPU,并开始阅读《 NVIDIA编程指南》,其中指出(第5.2.3节):

  

变形不准备执行下一个变形的最常见原因   指令是指令的输入操作数不可用   

我对第一段表示满意:-)

  

如果所有输入操作数都是寄存器,则延迟是由寄存器引起的   依赖关系,即某些输入操作数由某些   尚未完成执行的先前指令。在里面   背靠背寄存器依赖性的情况(即某些输入操作数   由上一条指令编写),等待时间等于   前一条指令和翘曲调度程序的执行时间   必须在这段时间内安排不同的经纱的使用说明。   执行时间根据指示而不同,但是   计算能力为3.x的设备通常大约需要11个时钟周期,   转换为计算能力为3.x的设备的44个扭曲   (假设warp以最大的吞吐量执行指令,   否则,需要的翘曲更少)。这也假设   指令级并行性,以便调度程序始终能够   发出每条经线的成对指令。

我对句子“执行时间因指令而异,但对于计算能力3.x的设备通常大约是11个时钟周期,对于计算能力3.x的设备而言大约是44个扭曲”却感到困惑。数字44是哪里来的?要使GPU保持繁忙,是否需要这44个扭曲?

  

如果某些输入操作数驻留在片外存储器中,则延迟很长   更高:计算能力为3.x的设备为200至400个时钟周期。   保持调度程序繁忙期间所需的经线数量   如此高的延迟时间取决于内核代码及其程度   指令级并行性。通常,如果需要,则需要更多的变形   没有片外存储器的指令数之比   操作数(大多数情况下为算术指令)   带有片外存储器操作数的指令数量很低(这是   比率通常称为程序的算术强度)。对于   例如,假设此比率为30,也假定延迟为300   在具有计算能力3.x的设备上循环。然后大约有40个经线   计算能力3.x的设备所需的(具有相同   上段的假设)。

这里也是一样。 40的数字来自哪里?奇怪的是,这个数字非常接近我们在上一段(44)中获得的数字,在该段落中,计算不需要任何对内存的访问。

我将非常有兴趣了解其工作原理...

谢谢您的帮助

0 个答案:

没有答案