gpt4 book ai didi

c++ - 尝试使用 CUDA 分配内存时出现访问冲突写入位置错误

转载 作者:行者123 更新时间:2023-11-28 05:01:01 25 4
gpt4 key购买 nike

我刚开始学习如何使用 CUDA api,我是从这个介绍指南开始的:https://devblogs.nvidia.com/parallelforall/even-easier-introduction-cuda/

我正在按照教程进行操作,但是在我尝试使用 cudaMallocManaged() 分配内存之后,我想初始化数组,但是在尝试初始化数组时,抛出了一个异常,它说:

Exception thrown at 0x003983D7 in VectorAdd.exe: 0xC0000005: Access violation writing location 0x00000000.

该程序可以识别我的 GPU,我知道这一点,因为我编写了一个函数来写入我所有的 CUDA 设备,而我的 GPU 就在那里。

这是我的代码,正如教程中所示:

int main(void)
{
PrintCudaDevices();

int N = 1 << 20; //1M elements

float *x, *y;

cudaMallocManaged(&x, N * sizeof(float));
cudaMallocManaged(&y, N * sizeof(float));

for (int i = 0; i < N; i++)
{
x[i] = 1.0f;
y[i] = 2.0f;
}
}

我用谷歌搜索了这个问题,但没有找到任何可行的解决方案。

最佳答案

问题是我用 x86 编译它,但是当我在 x64 上编译它时它运行良好。它不适用于 x86,因为统一内存需要 x64 位操作系统。此外,如果您想在完成后使用其结果,请不要忘记在任何内核之后调用 cudaDeviceSynchronize()

关于c++ - 尝试使用 CUDA 分配内存时出现访问冲突写入位置错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45966515/

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