CUDA 添加向量示例给出不正确的答案



我刚刚开始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(;

相关内容

  • 没有找到相关文章

最新更新