我刚刚开始使用CUDA和C,我正在努力做一些简单的添加。 当我尝试打印结果时,我得到以下输出: " 3 + 4是1"
要编译代码,我正在运行命令" nvcc test.cu"生成a.out
感谢您的帮助。
这是test.cu:
#include <stdio.h>
__global__ void add(int a, int b, int *c){
*c = a + b;
}
int main(){
int a,b,c;
int *dev_c;
a=3;
b=4;
cudaMalloc((void**)&dev_c, sizeof(int));
add<<<1,1>>>(a,b,dev_c);
cudaMemcpy(&c, dev_c, sizeof(int), cudaMemcpyDeviceToHost);
printf("%d + %d is %d\n", a, b, c);
cudaFree(dev_c);
return 0;
}
答案 0 :(得分:1)
出于调试目的,你应该在内核中使用printf。但我认为您的问题是 dev_c 不是原始指针,因此cudaMemcpy不能正常工作
cudaMemcpy(&amp; c,dev_c,sizeof(int),cudaMemcpyDeviceToHost);