尝试使用CUDA分配内存时,我得到访问冲突写入位置错误

时间:2017-08-30 17:31:59

标签: c++ cuda

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

我正在学习本教程,但在尝试使用lst <- regmatches(tweets, gregexpr("(?<=@)\\w+", tweets, perl = TRUE)) do.call(rbind, lapply(lst, `length<-`, max(lengths(lst)))) # [,1] [,2] #[1,] "john" "tom" #[2,] "neel" NA #[3,] NA NA 分配内存之后我想初始化数组,但在尝试初始化数组时,会抛出异常,其中说:

  

VectorAdd.exe中0x003983D7处抛出异常:0xC0000005:访问冲突写入位置0x00000000。

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

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

cudaMallocManaged()

我搜索了这个问题,但我没有找到任何有效的解决方案。

1 个答案:

答案 0 :(得分:1)

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