我刚刚设法在Linux Ubuntu 10.04下安装我的cuda SDK.我的显卡是NVIDIA geForce GT 425M,我想用它来解决一些繁重的计算问题.我想知道的是:有没有办法使用一些无符号的128位int var?当使用gcc在CPU上运行我的程序时,我使用的是__uint128_t类型,但是将它与cuda一起使用似乎不起作用.在cuda上有128位整数可以做些什么吗?
非常感谢Matteo Monti Msoft编程
我一直在GPU上开发一种加密算法,目前坚持使用算法来执行大整数加法.大整数以通常的方式表示为一堆32位字.
例如,我们可以使用一个线程来添加两个32位字.为简单起见,假设要添加的数字具有相同的长度和每个块的线程数==字数.然后:
__global__ void add_kernel(int *C, const int *A, const int *B) {
int x = A[threadIdx.x];
int y = B[threadIdx.x];
int z = x + y;
int carry = (z < x);
/** do carry propagation in parallel somehow ? */
............
z = z + newcarry; // update the resulting words after carry propagation
C[threadIdx.x] = z;
}
Run Code Online (Sandbox Code Playgroud)
我很确定有一种方法可以通过一些棘手的减少程序来进行传播,但是无法弄明白.
我看了一下CUDA推力扩展但是大整数包似乎还没有实现.也许有人可以给我一个提示如何在CUDA上做到这一点?