添加两个数字CUDA

时间:2016-08-18 09:15:43

标签: c cuda

我正在学习CUDA并需要一些帮助。 以下是我在NVIDIA演讲中的节目:

    __global__ void add(int *a, int *b, int *c)
     {
         *c = *a + *b;
     }  

    int main(void) {
        int a, b, c; // host copies of a, b, c
        int *d_a, *d_b, *d_c; // device copies of a, b, c
        int size = sizeof(int);

        // Allocate space for device copies of a, b, c
        cudaMalloc((void **)&d_a, size);
        cudaMalloc((void **)&d_b, size);
        cudaMalloc((void **)&d_c, size);

        // Setup input values
        a = 2;
        b = 7;

        // © NVIDIA Corporation 2011
        // Addition on the Device: main()
        // Copy inputs to device
        cudaMemcpy(d_a, &a, size, cudaMemcpyHostToDevice);
        cudaMemcpy(d_b, &b, size, cudaMemcpyHostToDevice);

        // Launch add() kernel on GPU
        add<<<1,1>>>(d_a, d_b, d_c);

        // Copy result back to host
        cudaMemcpy(&c, d_c, size, cudaMemcpyDeviceToHost);

        // Cleanup
        cudaFree(d_a); cudaFree(d_b); cudaFree(d_c);

        printf("%d",&c);
        return 0;
    }

每次运行此代码时,c的值都不是9。 如何获得c的真正价值?

1 个答案:

答案 0 :(得分:4)

尝试

printf("%d", c);

而不是

printf("%d", &c);

目前您正在打印本地var c的地址而不是其值