每条指令CUDA的时钟周期数

问题描述

我是CUDA的初学者。现在,我正在计算每条指令的时钟周期数(例如加法)。在https://docs.nvidia.com/cuda/cuda-c-programming-guide/index.html#arithmetic-instructions中,它仅给出不同算术运算的指令吞吐量。例如,对于32位浮点加法,7.x中的吞吐量为64。那么,我可以将64/32 = 2作为每条指令的时钟周期数吗?如果没有,我该如何计算?

解决方法

在一般情况下,CUDA文档没有为您提供足够的信息来计算特定指令所需的时钟周期数。这将与指令的流水线深度有关(即为服务该指令的功能单元的深度),这没有记录。吞吐量表在此练习中基本没有用。

这就是为什么您会找到CUDA的各种微基准测试论文的原因之一。 Here is one such example

对于每种感兴趣的体系结构和每种感兴趣的SASS instruction,都必须凭经验(仔细)进行测量;它没有记录。