[英]CUDA and MATLAB: MEX file crashes MATLAB on clearing
我尝试在 MATLAB 中运行一些 CUDA MEX 文件。 (CUDA 5.0, Linux x86, MATLAB R2012a)
问题是:当我从 MATLAB 内部卸载函数时,每个使用某种 cudaMalloc/cudaFree 的 MEX 文件都会崩溃。
这是一个非常简单的示例(但这也适用于官方 NVidia 示例):
#include <stdint.h>
#include "mex.h"
static float* d_test = NULL;
void clearMemory(void)
{
cudaFree(d_test);
}
void cudaTest()
{
if (d_test == NULL)
{
cudaMalloc((void**) &d_test, 10000 * sizeof(float));
}
// Do some CUDA computations here...
}
void mexFunction(int nlhs, mxArray *plhs[],
int nrhs, const mxArray *prhs[])
{
mexAtExit(clearMemory);
cudaTest();
}
这就是我编译代码的方式:
function CUDA_COMPILE( func_name )
eval(sprintf('!nvcc -I"%s/extern/include" --cuda "%s.cu" --output-file "%s.cpp"', matlabroot, func_name, func_name));
mex('-I/usr/local/cuda/include', '-L/usr/local/cuda/lib', '-lcudart', [func_name '.cpp']);
end
代码编译并运行良好,但是一旦我从内存中清除了 MEX 函数,MATLAB 就会崩溃,即:
clear freeCudaMemory
你知道什么可能导致这个问题吗? 提前致谢!
更改声明:
void clearMemory(void)
到:
void *clearMemory(void)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.