理论上,当SM中的线程数增加到达到峰值吞吐量时,吞吐量应该是饱和的,这意味着进一步增加线程,没有加速度增益和吞吐量线应该是平坦的。
内核如下:
#pragma unroll UNROLL
for( int i = 0; i < N_ITERATIONS; i++ )
{
a = a * b + a;
}
但是,此内核的吞吐量在达到最大吞吐量后会下降。经线数量达到最大吞吐量(7.9 ops / clock)是6次经线。我想知道在6次扭曲后哪些因素会影响吞吐量下降。 GPU是Tesla C1060,所有的warp都在一个块中。
提前感谢您的时间和意见。
答案 0 :(得分:1)
特斯拉架构warp可以每4个调度周期发出一条指令,因此需要至少4个warp来隐藏延迟。某些相关指令延迟和提取延迟可能需要额外的warp来隐藏延迟。引用的内核是一系列依赖的ALU指令,可以通过指令RAM快速发出。添加更多warp可能会给获取单元带来压力。通常长延迟内存指令会释放获取单元。