如何测量CUDA中的流式多处理器使用/空闲时间?

如何测量CUDA中的流式多处理器使用/空闲时间?,cuda,profiling,multiprocessor,Cuda,Profiling,Multiprocessor,一个简单的问题,真的:我有一个内核,每个流式多处理器(SM)可以运行最大数量的块,我想知道理论上我可以从中获得多大的性能。理想情况下,我想知道空闲的SM周期的百分比,即所有的扭曲在内存访问时被阻塞 我真的很想找到那个号码。我不想找的是 增加入住率的一般提示。我正在使用我能得到的所有占用率,即使我设法获得更多的性能,它也不会告诉我理论上还有多少可能 如何计算理论峰值GFlops。我的计算不是以FP为中心的,还有很多整数运算和逻辑 Nsight Visual Studio第2.1版和第2.2版“效

一个简单的问题,真的:我有一个内核,每个流式多处理器(SM)可以运行最大数量的块,我想知道理论上我可以从中获得多大的性能。理想情况下,我想知道空闲的SM周期的百分比,即所有的扭曲在内存访问时被阻塞

我真的很想找到那个号码。我不想找的是

  • 增加入住率的一般提示。我正在使用我能得到的所有占用率,即使我设法获得更多的性能,它也不会告诉我理论上还有多少可能
  • 如何计算理论峰值GFlops。我的计算不是以FP为中心的,还有很多整数运算和逻辑

Nsight Visual Studio第2.1版和第2.2版“效率实验”提供了您需要的信息。这些计数器/指标应在CUDA 5.0之后的版本中添加到Visual Profiler中

Nsight Visual Studio版 从

“问题效率”提供了有关设备执行以下操作的能力的信息: 发出内核的指令。报告的数据包括 执行依赖项、合格的扭曲和SM暂停原因

对于计算能力为2.x的设备,多处理器有两个扭曲 调度员。每个扭曲计划程序最多管理24个扭曲,总计 每个多处理器有48个扭曲。内核执行配置可能会发生变化 减少运行时限制。有关入住率的信息,请参阅 完成了占用实验。第一个调度程序负责 具有奇数ID的扭曲,第二个调度程序负责扭曲 身份证是均等的

开普勒更新:对于compute capability 3.x,一个多处理器有四个warp调度程序。每个warp scheduler最多管理16个扭曲,每个多处理器总共管理64个扭曲

在每次指令发出时,每个调度程序都将选择一个合格的 从活动扭曲列表中扭曲并发出指令。翘曲 如果已获取指令,则执行单元 说明中要求的信息可用,说明中没有 未满足的依赖项

调度程序报告中的扭曲的以下统计信息 多处理器:

活动扭曲–一个扭曲从计划在某个时间点开始处于活动状态 多处理器,直到完成最后一条指令。主动的 翘曲计数器每周期递增0-48。每小时的最大增量 周期由理论占用率定义

开普勒更新范围为每周期0-64

合格翘曲–如果活动翘曲能够发出下一条指令,则其合格。 不合格的翘曲将报告问题暂停原因。这 计数器将以每个周期0-1的增量递增

在费米上更新问题暂停原因计数器仅在warp scheduler没有合格的warp的周期上更新。在开普勒上,即使warp调度程序发出指令,问题暂停原因计数器也会在每个周期更新

零合格翘曲–如果出现以下情况,此计数器将每个周期递增1 两个计划程序都没有 可以发出的扭曲

一个符合条件的扭曲–此计数器递增 如果两个调度程序中只有一个具有可执行的扭曲,则每个周期将减少1 发布

开普勒更新:开普勒上的计数器是每个调度器的,因此一个合格的Warp意味着Warp调度器可以发出指令。在费米上,两个调度程序都有一个计数器,所以在费米上,您希望一个合格的扭曲计数器尽可能小

翘曲发行孔–此计数器将每个周期递增 不合格的活动扭曲数。这和 活动扭曲减去合格扭曲

长扭曲问题孔–此 按每个周期具有的活动扭曲的数量反向递增 无法发出超过32个时钟周期的指令 周期。长孔表示翘曲在长延迟时停止 障碍和内存操作等原因

问题暂停原因– 每个周期每个不合格翘曲将增加一个问题暂停 理由计数器。所有问题暂停原因计数器的总和相等 要扭曲问题孔。不合格的扭曲将增加指令获取 如果尚未执行下一条装配指令,则为暂停原因 抓到了执行相关性如果输入相关性为 还没有。这可以通过增加 独立指示数据请求如果请求 由于所需资源不可用,当前无法创建, 或被充分利用,或该类型的操作已经过多 杰出的。如果数据请求占整个系统的很大一部分 暂停原因,还应运行内存实验来确定 如果可以根据请求优化现有事务,或者如果需要 重新访问您的算法纹理如果纹理 子系统已充分利用,目前无法接受 进一步的行动同步如果发生翘曲,则停止原因 在一个同步线程()上被阻止。如果这个原因很大,内核 执行配置仅限于少量的块 考虑将内核网格划分为更多的线程块。 可视化分析器5.0 可视化探查器没有解决您的问题的计数器。在添加计数器之前,您可以使用以下计数器:

  • sm_效率[_实例]
  • ipc[_实例]
  • 实现了无人居住
计算能力的目标和最大IPC为:

Compute     Target   Max
Capability  IPC      IPC
2.0         1.7      2.0
2.x         2.3      4.0
3.x         4.4      7.0
目标IPC用于ALU有限计算。内存绑定内核的目标IPC将更少。计算能力2