【问题标题】:64 bit number support in CUDACUDA 中的 64 位数字支持
【发布时间】:2013-05-30 20:49:32
【问题描述】:

我发现了关于这个话题的各种意见,所以这就是我决定在这里问的原因。我的问题是从 CUDA 支持的 int64_t 的计算能力开始。我在 Quadro770M 上运行 cuda 5,以下代码可以正常工作,尽管我读到从计算能力 1.3 开始支持 64 位无符号。那么这个问题的真正答案是什么?

__device__ void printBinary(int64_t a) {
    int bits[64];
    int i;

    for (i = 0; i < 64; i++) {
        bits[63 - i] = (a >> i) & 1; 
    }

    for (int i = 0; i < 64; ++i) {
        cuPrintf("%d", bits[i]);
    }
    cuPrintf("\n");
    cuPrintf("%016llX", a);
}

【问题讨论】:

    标签: cuda 64-bit nvidia


    【解决方案1】:

    所有支持 CUDA 的硬件都支持 64 位整数(有符号和无符号)(尽管对它们的操作映射到多个本机 32 位指令)。

    计算能力 1.3 引入了 64 位 浮点 数字(本机支持)。

    【讨论】:

    • 我现在明白了。那么使用 64 位数字是否会由于操作映射而对性能造成显着影响?
    • 这取决于操作。 64 位加法和减法可以从 32 位运算(2 或 3 条指令,具体取决于计算能力)高效合成。乘法需要更长的指令序列(大约 10 到 20 条指令,具体取决于架构),除法和取模需要大量的仿真序列(60-100 多条指令,具体取决于架构)。您可以通过使用 cuobjdump 反汇编代码来检查所有细节。
    猜你喜欢
    • 2015-03-21
    • 1970-01-01
    • 2020-03-08
    • 2012-03-27
    • 1970-01-01
    • 2019-11-12
    • 1970-01-01
    • 1970-01-01
    • 2011-01-23
    相关资源
    最近更新 更多