从理论上讲,当SM中的线程数增加直到达到峰值吞吐量时,吞吐量应该达到饱和,这意味着进一步增加线程,没有加速增益,并且吞吐量线应该是平坦的。
内核如下:
#pragma unroll UNROLL
for( int i = 0; i < N_ITERATIONS; i++ )
{
a = a * b + a;
}
但是,此内核的吞吐量在达到最大吞吐量后下降。经纱数量达到最大吞吐量(7.9个操作/时钟)为6经纱。我想知道什么因素会影响6次扭曲后吞吐量的下降。GPU是Tesla C1060,所有变形都在一个块中。
预先感谢您的时间和评论。
特斯拉架构的翘曲可以每4个调度周期发出一条指令,因此至少需要4条翘曲才能隐藏延迟。一些相关的指令等待时间和提取等待时间可能需要额外的扭曲来隐藏等待时间。所引用的内核是一串相关的ALU指令,这些指令可通过指令RAM快速发布。添加更多的扭曲可能会对获取单元施加压力。通常,长等待时间的存储器指令可减轻获取单元的负担。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句