如果有多个在线资源(包括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)我正在运行CUDA 5.0,并使用nvcc -m64 -arch = sm_30进行编译。
1)我正在运行我的内核的仅数学版本,并且因为它没有寄存器压力,所以全局内存访问的数量可以忽略不计。
2)我无法访问nVidia视觉分析器,因此我不确定它是否会给我不同于上述的答案。
非常感谢,如果这很愚蠢,请提前道歉。
答案 0 :(得分:2)
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