在尝试使用CUDA分配内存时,我遇到了访问冲突写入位置错误
I get access violation writing location error when trying to allocate memory using CUDA
我刚开始学习如何使用CUDAapi,我从这个介绍指南开始: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;
}
}
我在谷歌上搜索了那个问题,但没有找到任何有效的解决方案。
问题是我用x86编译它,但当我用x64编译它时,它运行得很好。它不适用于x86,因为统一内存需要x64位操作系统。此外,如果您想在任何内核之后使用它的结果,请不要忘记调用cudaDeviceSynchronize()
。
相关文章:
- 写入位置0x0000000C时发生访问冲突
- 引发异常:读取访问冲突**dynamicArray**为0x1118235.发生
- 链表中写入访问冲突的未知原因
- C++中的openCV Mat访问冲突
- C++尝试深度复制唯一指针时出现内存访问冲突
- C++ 中动态二维数组的访问冲突
- 从嵌套循环中的 std::list 中删除将返回访问冲突
- 写入访问冲突异常
- 在类 12.exe 中0x7B37FF80 (ucrtbased.dll) 引发异常: 0xC0000005:访问冲突读
- 0xC0000005:访问冲突写入位置0xCDCDCDCD动态分配错误
- 读取访问冲突.这0xCDCDCDCD
- 0xC0000005:访问冲突读取位置 0x00000000. 重载 == 运算符的问题
- 插入数组时违反写访问冲突
- 使用 ReadProcessMemory 获取字符串值的访问冲突
- 尝试通过共享指针使用变量时读取访问冲突
- 堆栈上的 C++ 访问冲突写入异常
- 在尝试使用CUDA分配内存时,我遇到了访问冲突写入位置错误
- 调用基构造函数时遇到问题 - 获取读取访问冲突
- C++字符串表达式求解器遇到访问冲突
- 我在删除指针时遇到读取访问冲突