我刚开始学习如何使用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()
我搜索了这个问题,但我没有找到任何有效的解决方案。
答案 0 :(得分:1)
问题是我用x86编译它,但是当我在x64上编译它时它工作得很好。它不适用于x86,因为统一内存需要x64位操作系统。此外,如果您想在结束后使用其结果,请不要忘记在任何内核之后调用cudaDeviceSynchronize()
。