GPU(Geforce 9800)如何实现按位整数运算?

phi*_*mue 2 cuda gpu bitwise-operators

CUDA让程序员写类似的可能性a & b | ~ c(a,b,cunsigned intS).

GPU在内部做什么?它是否以某种方式"模拟"整数上的按位运算,或者它们是否像传统CPU一样高效?

wnb*_*ell 5

根据CUDA编程指南v2.3(第5.1.1.1节),按位运算以全速运行(每个时钟周期8次运算).

整数运算

整数加的吞吐量是每个时钟周期8次操作.

32位整数乘法的吞吐量是每个时钟周期2次操作,但是mul24提供24位整数乘法,每个时钟周期的吞吐量为8次.然而,在未来的体系结构中,mul24将比32位整数乘法慢,因此我们建议提供两个内核,一个使用mul24,另一个使用通用的32位整数乘法,由应用程序适当调用.

整数除法和模运算特别昂贵,应尽可能避免或尽可能用逐位运算替换:如果n是2的幂,(i/n)等于(i >> log2(n))和(i) %n)相当于(i&(n-1)); 如果n是文字,编译器将执行这些转换.

比较比较,最小值,最大值的吞吐量是每个时钟周期8次操作.

按位运算任何按位运算的吞吐量是每个时钟周期8次运算.