Cuda 当线程数增加到饱和状态后,吞吐量会下降

Cuda 当线程数增加到饱和状态后,吞吐量会下降,cuda,Cuda,理论上,当SM中的线程数增加到达到峰值吞吐量时,吞吐量应该是饱和的,这意味着进一步增加线程,没有加速增益,吞吐量线应该是平坦的 内核如下所示: #pragma unroll UNROLL for( int i = 0; i < N_ITERATIONS; i++ ) { a = a * b + a; } #pragma展开展开展开 对于(int i=0;i

理论上,当SM中的线程数增加到达到峰值吞吐量时,吞吐量应该是饱和的,这意味着进一步增加线程,没有加速增益,吞吐量线应该是平坦的

内核如下所示:

#pragma unroll UNROLL
for( int i = 0; i < N_ITERATIONS; i++ )
{ 
a = a * b + a;
}
#pragma展开展开展开
对于(int i=0;i
但是,这个内核的吞吐量在达到最大吞吐量后会下降。达到最大吞吐量(7.9个操作/时钟)的扭曲数为6个扭曲。我想知道什么因素会影响6次整经后的吞吐量下降。该GPU是特斯拉C1060和所有的翘曲是在一个单一的块


提前感谢您的时间和评论。

特斯拉体系结构warp可以每4个调度周期发出一条指令,因此至少需要4个warp来隐藏延迟。某些相关指令延迟和提取延迟可能需要额外的扭曲来隐藏延迟。被引用的内核是一系列依赖的ALU指令,它们通过指令RAM快速发出。添加更多的翘曲可能会对提取单元施加压力。通常,长延迟内存指令会减轻提取单元的负担