首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >执行的指令数量怎么会大于发出的指令数量?

执行的指令数量怎么会大于发出的指令数量?
EN

Stack Overflow用户
提问于 2013-03-11 18:55:28
回答 1查看 451关注 0票数 2

如果像包括this one在内的几个在线资源一样,执行的指令数量+重放数量=发出的指令数量,并且重放数量为正,那么CUDA内核如何具有以下属性(来自nvprof)?

代码语言:javascript
运行
复制
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).

代码语言:javascript
运行
复制
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可视化分析器,因此我不确定它是否会给出与上面不同的答案。

非常感谢,如果这是愚蠢的,请提前道歉。

EN

Stack Overflow用户

回答已采纳

发布于 2013-03-11 21:13:55

inst_issue2是发出2条指令的发布插槽的数量。

inst_issued1:每个周期发出的单条指令数

inst_issued2:每个周期发出的双指令数

发出的指令总数的公式为:

代码语言:javascript
运行
复制
inst_issued = (inst_issued2 * 2) + inst_issued1

使用问题中的数字可以得出以下结论:

代码语言:javascript
运行
复制
inst_issued = (inst_issued2 * 2) + inst_issued1
            = (19130919 * 2) + 37263115
            = 75524953
ratio = inst_executed / inst_issued
      = 69161760 / 75524953
      = .916
票数 3
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15336788

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档