哪个“ +”计算更快? 1) uint2 a,b,c; c = a + b; 2) 乌龙a,b,c; c = a + b;
答案 0 :(得分:1)
AMD GCN不支持本机64位整数向量,因此第二条语句将转换为两个32位加法,一个是V_ADD_U32,然后是一个V_ADDC_U32,它考虑了第一个V_ADD_U32的进位标志。
因此,为回答您的问题,它们在指令数量方面都是相同的,但是第一个可以并行计算(指令级并行性),并且如果您的内核被占用(例如,使用大量寄存器),则可以更快地进行计算。
如果您的语句可以由标量单元执行(即,它们不依赖于线程索引),那么游戏将发生变化,第二个则仅是一条指令(相对于第二条指令),因为标量单元具有本机64位位整数支持。
但是请记住,您的第一个陈述与第二个陈述不同,您会丢失进位标记。