Cuda中有错误吗?我在 GTX580 上运行了以下代码,最后 r1 为零。我希望它是一种由于携带传播?我已经使用 Cuda Toolkit 4.2.9 和 5.5 测试了代码,并使用“nvcc -arch=sm_20 bug.cu -o bug && ./bug”来编译和运行它。
#include <stdio.h>
#include <cuda.h>
__global__ void bug()
{
unsigned int r1 = 0;
unsigned int r2 = 0;
asm( "\n\t"
"sub.cc.u32 %0, 0, 1;\n\t"
"addc.cc.u32 %1, 0, 0;\n\t"
: "=r"(r1), "=r"(r2) );
printf("r1 >> %04X\n", r1);
printf("r2 >> %04X\n", r2);
}
int main(void)
{
float *a_d;
cudaMalloc((void **) &a_d, 1);
bug <<< 1,1 >>> ();
cudaFree(a_d);
}
Output
r1 >> FFFFFFFF
r2 >> 0000