CUDA添加矢量示例给出错误的答案

时间:2017-08-19 20:48:52

标签: cuda gpu

我刚刚开始使用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;                                                                                  
}  

1 个答案:

答案 0 :(得分:1)

出于调试目的,你应该在内核中使用printf。但我认为您的问题是 dev_c 不是原始指针,因此cudaMemcpy不能正常工作

  

cudaMemcpy(&amp; c,dev_c,sizeof(int),cudaMemcpyDeviceToHost);