gpt4 book ai didi

Cuda统一内存简单测试失败

转载 作者:太空宇宙 更新时间:2023-11-04 02:50:13 25 4
gpt4 key购买 nike

我是一个新手,第一次尝试测试 Cuda6 统一内存。编译并运行后,我期望得到:38、10,但我得到的结果是:5、10。在这种情况下,我做错了什么让我完全愚蠢吗?非常感谢你们!

#include <iostream>
#include <cuda.h>

__global__ void add2(int *a, int *b)
{
*a += 33;
}

int main(){

int a = 5;
int b = 10;

int *p_a, *p_b;

cudaMallocManaged(&p_a,sizeof(int));
cudaMallocManaged(&p_b,sizeof(int));

p_a = &a;
p_b = &b;

add2<<<1,1>>>(p_a, p_b);
cudaDeviceSynchronize();

std::cout << *p_a << " " << b << std::endl;
return 0;
}

最佳答案

cudaMallocManaged 创建分配并相应地设置指针,类似于 malloc。如果你然后用

删除分配的指针
p_a=&a;

您的内核将无法工作。阅读 CUDA 6 编程指南中的部分以了解 UM 的工作原理。

你可以试试

*p_a=a;

对于 b 也是如此。

关于Cuda统一内存简单测试失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22924576/

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