Cuda 关于Nvidia VisualProfiler,翘曲效率意味着什么? 我指的是确切的定义,为什么英伟达分析器总是告诉我,由于SM3.5中的经纱中的分支分支,我的代码具有很差的翘曲效率? 我的代码尽可能避免了在一个扭曲中的分支,如果我的代码是用SM 2构建的,英伟达分析器会告诉我,扭曲效率接近100%。

Cuda 关于Nvidia VisualProfiler,翘曲效率意味着什么? 我指的是确切的定义,为什么英伟达分析器总是告诉我,由于SM3.5中的经纱中的分支分支,我的代码具有很差的翘曲效率? 我的代码尽可能避免了在一个扭曲中的分支,如果我的代码是用SM 2构建的,英伟达分析器会告诉我,扭曲效率接近100%。,cuda,nvidia,profiler,Cuda,Nvidia,Profiler,但在同一张卡上,如果我的代码是用SM 3.5构建的,那么扭曲效率会突然下降到35%-40%,这是难以置信的低效率 而指令发布模式是:双重发布大约是每个warp单次发布案例的50% 所有其他的都很好,那么有人能告诉我关于经纱效率的确切定义是什么吗?它们不是指在任何给定时间并发运行的经纱中的活动线程数量除以经纱大小吗 那么,为什么我的代码在使用不同的SM版本构建时,在同一个nvidia gpu上报告的扭曲效率(SM3.5的扭曲效率约为35%,SM2.0的扭曲效率接近100%)有如此显著的不同呢?对于

但在同一张卡上,如果我的代码是用SM 3.5构建的,那么扭曲效率会突然下降到35%-40%,这是难以置信的低效率

而指令发布模式是:双重发布大约是每个warp单次发布案例的50%

所有其他的都很好,那么有人能告诉我关于经纱效率的确切定义是什么吗?它们不是指在任何给定时间并发运行的经纱中的活动线程数量除以经纱大小吗


那么,为什么我的代码在使用不同的SM版本构建时,在同一个nvidia gpu上报告的扭曲效率(SM3.5的扭曲效率约为35%,SM2.0的扭曲效率接近100%)有如此显著的不同呢?

对于报告的扭曲效率较低的特定内核,可以使用“发散分支”分析哪些特定分支(如果有的话)会导致差异,从而导致扭曲效率低下。

您最近已经问过了,对吗?您在哪个GPU上执行代码?您可能会生成ptx代码,并查看编译器输出的不同之处。你也可以发布一个简单的、可编译的复制程序,如果你能创建一个的话。@是的,我有,但没有人回答,我已经修改了代码的所有剩余部分,以便探查器告诉我所有剩余部分都是好的,只是这个悬而未决的问题,所以现在我想弄清楚这有什么问题,运行此代码的GPU是gk110。如果您提供一个可复制的问题,您就更有可能得到答案。度量扭曲执行效率定义为“每个扭曲的平均活动线程数与多处理器上支持的每个扭曲的最大线程数之比”。如果您指的是此度量或其他度量,我不确定是否使用“扭曲效率”。如果您启动32个线程的非倍数,如果扭曲中的线程提前退出,或者如果您有不同的线程执行,则该值将较低。只需要一个发散分支,这个数字就会非常低。