代码之家  ›  专栏  ›  技术社区  ›  phimuemue

GPU(Geforce 9800)如何实现位整数操作?

  •  2
  • phimuemue  · 技术社区  · 15 年前

    CUDA给了程序员编写类似 a & b | ~ c ( a , b , c 存在 unsigned int s)。

    GPU在内部做什么?它是以某种方式在整数上“模拟”位操作,还是像在传统CPU上一样高效?

    1 回复  |  直到 15 年前
        1
  •  5
  •   wnbell    15 年前

    根据 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个操作 每个时钟周期。