簡體   English   中英

CUDA 和 MATLAB:MEX 文件在清除時使 MATLAB 崩潰

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM