每个SMx 每个cycle计算32个整数乘法,那么只能使用一个wrap scheduler,另外三个wrap scheduler能否发射其他指令,这样gpu在整数乘法达到上限的同时,还能计算其他类型的运算。
如果上面的想法成立,那么下面的两个循环是不是有可能执行时间相同。
Unsigned int a,b,c;
For i from 0 to n
a = a*b +c
End
For i from 0 to n
a = a*b + c
b = b + a
End
每个SMx 每个cycle计算32个整数乘法,那么只能使用一个wrap scheduler,另外三个wrap scheduler能否发射其他指令,这样gpu在整数乘法达到上限的同时,还能计算其他类型的运算。
如果上面的想法成立,那么下面的两个循环是不是有可能执行时间相同。
Unsigned int a,b,c;
For i from 0 to n
a = a*b +c
End
For i from 0 to n
a = a*b + c
b = b + a
End
LZ您好:
1:每个warp scheduler在同一时刻只能为一个warp服务,以及4个warp scheduler同时为4个不同的warp服务。不同warp的执行进度可以是不一样的,所以各scheduler完全可以发射不同的指令。
以及scheduler会根据实际情况发射不同的指令到各个执行单元上,以提高GPU的利用率。但具体调度方式并不公开。
2:scheduler是否能发射不同的指令执行,实际上受限于计算单元的情况,有些指令只能由较少的单元执行,而有些指令多数单元都可以执行。具体情况是不公开的。
综合上述两点可知,在适当的条件下,(比如代码中有合适的指令供scheduler发射而不是整体卡在一个吞吐率低的指令上,以及剩下的执行单元确实可以执行其他所需要执行的 指令的时候),一定配比的混合指令确实有更好的执行效率。
您的代码,简单来说,后者的指令配比可能更合适一些,所以效率会好一些。但因为缺少硬件细节资料,就不继续讨论了。
您可以自己实测一下。以及实测结果可能还受到其他因素影响。
祝您好运~