0

哪个“+”计算更快?1) uint2 a, b, c; c = a + b; 2)乌龙a、b、c;c = a + b;

4

1 回答 1

1

AMD GCN 没有原生的 64 位整数向量支持,因此第二个语句将被转换为两个 32 位加法,一个 V_ADD_U32 后跟一个 V_ADDC_U32,它将第一个 V_ADD_U32 的进位标志考虑在内。

因此,要回答您的问题,它们在指令数方面都是相同的,但是第一个可以并行计算(指令级并行性)并且如果您的内核受占用限制(即使用大量寄存器)可能会更快。

如果您的语句可以由标量单元执行(即它们不依赖于线程索引),那么游戏会改变,第二条指令将只是一条指令(相对于两条),因为标量单元具有本机 64 位整数支持。

但是请记住,您的第一个语句与第二个语句不同,您将丢失进位标志。

于 2018-10-05T13:24:04.893 回答