CUDA中的64位数字支持

CUDA中的64位数字支持,cuda,64-bit,nvidia,Cuda,64 Bit,Nvidia,我在这个话题上发现了各种各样的观点,所以这就是我决定在这里提问的原因。我的问题是从CUDA支持什么计算能力开始的。我在Quadro770M上运行cuda 5,下面的代码工作正常,尽管我了解到从compute capability 1.3开始支持64位无符号。那么,这个问题的真正答案是什么 __device__ void printBinary(int64_t a) { int bits[64]; int i; for (i = 0; i < 64; i++) {

我在这个话题上发现了各种各样的观点,所以这就是我决定在这里提问的原因。我的问题是从CUDA支持什么计算能力开始的。我在Quadro770M上运行cuda 5,下面的代码工作正常,尽管我了解到从compute capability 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);
}
\uuuuu设备\uuuuu无效打印二进制文件(int64\u t a){
整数位[64];
int i;
对于(i=0;i<64;i++){
位[63-i]=(a>>i)&1;
}
对于(int i=0;i<64;++i){
cuPrintf(“%d”,位[i]);
}
铜币(“\n”);
铜币(“%016llX”,a);
}
所有支持CUDA的硬件都支持64位整数(有符号和无符号)(尽管它们上的操作映射到多个本机32位指令)


Compute capability 1.3引入了64位浮点数(本机支持)。

我现在明白了。那么,由于操作的映射,使用64位数字是否会对性能造成严重的影响?这取决于操作。64位加法和减法可以从32位操作(2或3条指令,取决于计算能力)有效地合成。乘法需要更长的指令序列(取决于体系结构,指令的数量级为10到20),除法和模运算需要大量的仿真序列(60-100+指令,取决于体系结构)。您可以通过使用cuobjdump反汇编代码来检查所有细节。