【发布时间】:2017-08-31 02:54:55
【问题描述】:
我刚开始学习如何使用 CUDA api,我从这个介绍指南开始:https://devblogs.nvidia.com/parallelforall/even-easier-introduction-cuda/
我正在按照教程进行操作,但是在尝试使用 cudaMallocManaged() 分配内存后,我想初始化数组,但是在尝试初始化数组时,会抛出异常,提示:
在 VectorAdd.exe 中的 0x003983D7 处引发异常:0xC0000005:访问冲突写入位置 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;
}
}
我用谷歌搜索了这个问题,但没有找到任何可行的解决方案。
【问题讨论】:
-
这个问题在你链接的博客文章中讨论here。