如果像包括this one在内的几个在线资源一样,执行的指令数量+重放数量=发出的指令数量,并且重放数量为正,那么CUDA内核如何具有以下属性(来自nvprof)?
Invocations Avg Min Max Event Name
1 69161760 69161760 69161760 inst_executed
1 37263115 37263115 37263115 inst_issued1
1 19130919 19130919 19130919 inst_issued2
(inst_issued = inst_issued1 + inst_issued2 = 37263115 + 19130919; ratio = inst_executed/inst_issued > 1).
是
inst_issued = inst_issued1 + inst_issued2
发出指令总数的正确公式是什么?除了*issued1和*issued2之外,还有内核发出的指令吗?如果是这样,如何对它们进行分析?
在网上,我没有看到我的问题的任何明显的答案。例如,我的nvprof --query-events版本只将上述三个参数作为--events的可能参数。在CUDA编程文档中似乎也没有提到这一点,上面的链接,或者我读到的与CUDA指令优化相关的其他十个左右的链接中的任何一个。
其他信息:
0)我正在运行CUDA5.0,使用nvcc -m64 -arch=sm_30编译。
1)我正在运行我的内核的一个纯数学版本,由于它没有寄存器压力,所以全局内存访问的数量可以忽略不计。
2)我无法访问nVidia可视化分析器,因此我不确定它是否会给出与上面不同的答案。
非常感谢,如果这是愚蠢的,请提前道歉。
发布于 2013-03-11 21:13:55
inst_issue2是发出2条指令的发布插槽的数量。
inst_issued1:每个周期发出的单条指令数
inst_issued2:每个周期发出的双指令数
发出的指令总数的公式为:
inst_issued = (inst_issued2 * 2) + inst_issued1
使用问题中的数字可以得出以下结论:
inst_issued = (inst_issued2 * 2) + inst_issued1
= (19130919 * 2) + 37263115
= 75524953
ratio = inst_executed / inst_issued
= 69161760 / 75524953
= .916
https://stackoverflow.com/questions/15336788
复制相似问题