CUDA让程序员可以编写类似a & b | ~ c
(a
,b
,c
为unsigned int
s)的内容。
GPU内部有什么作用?它是否以某种方式“模拟”整数上的按位运算,或者它们是否像传统CPU一样高效?
答案 0 :(得分:5)
根据CUDA Programming Guide v2.3(第5.1.1.1节),按位运算以全速运行(每个时钟周期运行8次)。
整数算术
整数加的吞吐量为8 每个时钟周期的操作。
32位整数的吞吐量 乘法是每次2次操作 时钟周期,但mul24提供24位 整数乘以a 每时钟输出8次操作 周期。在未来的架构上 但是,mul24会慢于 32位整数乘法,所以我们 建议提供两个内核,一个 使用mul24和另一个使用 通用的32位整数乘法, 被称为适当的 应用
整数除法和模运算 特别昂贵,应该是 尽可能避免或替换为 尽可能按位运算: 如果n是2的幂,则(i / n)是 相当于(i>> log2(n))和(i%n) 相当于(i&(n-1));该 编译器将执行这些 如果n是字面值,则转换。
比较 compare,min,max的吞吐量是每个时钟8次操作 周期。
按位运算任何按位运算的吞吐量为8次运算 每个时钟周期。