CUDA给了程序员编写类似 a & b | ~ c ( a , b , c 存在 unsigned int s)。
a & b | ~ c
a
b
c
unsigned int
GPU在内部做什么?它是以某种方式在整数上“模拟”位操作,还是像在传统CPU上一样高效?
根据 CUDA Programming Guide v2.3 (第5.1.1.1节)位操作全速运行(每时钟周期8次操作)。
整数算术 整数加法吞吐量为8 每个时钟周期的操作。 32位整数吞吐量 乘法是每两个运算 时钟周期,但MUL24提供24位 带A的整数乘法 每钟8次作业的投入 循环。关于未来架构 但是,MUL24将比 32位整数乘法,所以我们 建议提供两粒,一粒 使用MUL24和其他 一般32位整数乘法, 由 应用程序。 整数除模运算 特别昂贵,应该 尽可能避免或替换为 尽可能按位操作: 如果n是2的幂,(i/n)是 相当于(i>>log2(n))和(i%n) 相当于(i&(n-1)); 编译器将执行这些 如果n是文本,则转换。 比较 比较吞吐量,最小值,最大值为每时钟8个操作 周期。 按位运算 任何位操作的吞吐量为8个操作 每个时钟周期。
整数算术
整数加法吞吐量为8 每个时钟周期的操作。
32位整数吞吐量 乘法是每两个运算 时钟周期,但MUL24提供24位 带A的整数乘法 每钟8次作业的投入 循环。关于未来架构 但是,MUL24将比 32位整数乘法,所以我们 建议提供两粒,一粒 使用MUL24和其他 一般32位整数乘法, 由 应用程序。
整数除模运算 特别昂贵,应该 尽可能避免或替换为 尽可能按位操作: 如果n是2的幂,(i/n)是 相当于(i>>log2(n))和(i%n) 相当于(i&(n-1)); 编译器将执行这些 如果n是文本,则转换。
比较 比较吞吐量,最小值,最大值为每时钟8个操作 周期。
按位运算 任何位操作的吞吐量为8个操作 每个时钟周期。