gpt4 book ai didi

c - (CUDA C) 为什么它不打印从设备内存复制的值?

转载 作者:行者123 更新时间:2023-11-30 20:23:46 25 4
gpt4 key购买 nike

我现在正在通过 NVIDIA 提供的培训幻灯片学习 CUDA。他们有一个示例程序,展示了如何将两个整数相加。代码如下:

#include <stdio.h>

__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
size_t 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;
c = -3;

//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("For a = %d, b = %d, we get a + b = %d\n", a, b, c);

return 0;
}

但是当我运行程序时,输出是:“对于 a = 2,b = 7,我们得到 a + b = -3”

意味着c的值没有改变!

我做错了什么?

最佳答案

您的代码正确地将 c 的值打印为 9。您需要澄清运行此代码的环境。

关于c - (CUDA C) 为什么它不打印从设备内存复制的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35473495/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com