我刚刚开始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 %dn", a, b, c);
cudaFree(dev_c);
return 0;
}
出于调试目的,您应该在内核中使用printf。但我认为你的问题是dev_c不是原始指针,所以 cudaMemcpy 效果不佳
cudaMemcpy(&c, dev_c, sizeof(int(, cudaMemcpyDeviceToHost(;