gpt4 book ai didi

c - 为什么 cudaMalloc 返回非法内存访问

转载 作者:行者123 更新时间:2023-11-30 15:22:28 27 4
gpt4 key购买 nike

我正在为 MATLAB 编写一个 mexFunction,并且我已经让 CUDA MEX 功能与 MATLAB 示例一起运行,没有任何问题。

下面是一个简单的“将数据加载到设备”脚本。它返回 3 条消息,第一个在 cudaMalloc 之前,另外两个在 cudaMalloc 函数之后。

没有错误
cudaMalloc 失败!遇到非法内存访问
遇到非法内存访问

系统:Win7 64位、MATLAB 2015a、VS2012 Professional、CUDA 6.5。

有什么想法吗?对我来说它看起来是正确的。

代码:

void process(double *x, double *y, size_t n)
{
float *d_x, *d_y; // Pointers to data on Device.
cudaError_t cudaStatus;

cudaStatus = cudaSetDevice(0);
if (cudaStatus != cudaSuccess) {
mexPrintf("cudaSetDevice failed! Do you have a CUDA-capable GPU installed?");
}

// Check If no Errors with GPU so far
mexPrintf(cudaGetErrorString(cudaGetLastError())); mexPrintf("\n");

// Allocate Memory on Device
cudaStatus = cudaMalloc( (void**)&d_x, n * sizeof(float) );
if (cudaStatus != cudaSuccess) {
mexPrintf("cudaMalloc failed! ");
}
mexPrintf(cudaGetErrorString(cudaGetLastError())); mexPrintf("\n");

cudaStatus = cudaMalloc( (void**)&d_y, n * sizeof(float) );
mexPrintf(cudaGetErrorString(cudaGetLastError())); mexPrintf("\n");

// free the memory allocated on the GPU
cudaFree( d_x );
cudaFree( d_y ); }

最佳答案

我通过重新启动计算机解决了问题,问题中的上述代码工作正常

我只能推测,早期代码迭代中的错误内存分配导致了 GPU 故障。

如果有人对发现此问题有任何见解,或者在不重新启动的情况下重新初始化设备,我很高兴听到!

谢谢

关于c - 为什么 cudaMalloc 返回非法内存访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29218088/

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