【问题标题】:Problems compiling CUDA with MEX in Matlab2014a在 Matlab2014a 中使用 MEX 编译 CUDA 的问题
【发布时间】:2014-11-11 06:31:46
【问题描述】:

我正在尝试在 Matlab2014a 中使用 MEX 编译 CUDA 程序,但无法使其工作。 我安装了最新的 CUDA 工具箱 (6.5) 和驱动程序 (340.62) 并且示例工作正常,所以我猜它安装正确。

我还安装了 MS Visual Studio 2012 Professional 和 Matlab 2014a。

我遵循了 Matlab 帮助中“GPU 计算 -> 示例和如何 -> 运行包含 CUDA 代码的 MEX 函数”中的确切描述。 我的 CUDA 文件以 .cu 结尾(所以我正在尝试编译 Matlab 的标准示例 mexGPUExample.cu,但我得到与其他 .cu 文件相同的错误),mex_CUDA_win64.xml 在同一个文件夹中,环境变量 MW_NVCC_PATH 已设置在用户变量中正确,只是为了确保我还在 Matlab 中调用了“setenv('MW_NVCC_PATH,...)”。

如果我尝试用

编译一个 CUDA 示例

mex -largeArrayDims mexGPUExample.cu

我收到以下错误:

cl : Command line warning D9024 : unrecognized source file type 'mexGPUExample.cu', object file assumed 
cl : Command line warning D9027 : source file 'mexGPUExample.cu' ignored 
cl : Command line warning D9021 : no action performed 

D:\PROGRAMS\MATLAB~1\BIN\MEX.PL: Error: Compile of 'mexGPUExample.cu' failed. 

Unable to complete successfully.

我也尝试使用正确设置编译器

mex -setup

并选择了 MS Visual Studio 编译器。

代码本身有效,因为我在其他系统上对其进行了测试。

我不知道我做错了什么。 任何帮助表示赞赏。

【问题讨论】:

    标签: matlab cuda


    【解决方案1】:

    Matlab 在 R2014a 上只支持 CUDA 5.5,所以你的 CUDA 6.5 默认不能在 Matlab 下编译 mex 文件。 Matlab R2014a 现在支持 VS 2012,但如果您的 Matlab 是 64 位,则需要验证您有 VS 64 位编译器。你可以用 .cpp 源文件编译一个普通的 .mex 文件(matlabroot/extern 文件夹下有很多这些文件),看看 Matlab 是否能很好地与你的 VS 配合使用。

    请注意,Matlab 在支持最新的编译器(VS/gcc 和 Cuda)方面存在滞后。在使用最新的编译器之前,最好通过 Matlab 检查编译器要求。

    还要检查您的 Cuda 套件和图形驱动程序是否已正确安装并与 VS 无缝协作。可以在VS环境下编译运行一些.cu文件。

    如果您已完成上述所有操作并更改为正确版本的编译器,请按照 matheworks 网站上的说明编译 mexGPUExample 文件。如果我没记错的话,需要设置环境变量,将xml文件复制到.mex文件路径下。那么它应该可以工作。

    【讨论】:

    • 如果您想绕过 MATLAB 对 CUDA 5.5 的要求,请参阅 this
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-19
    • 2021-05-31
    • 1970-01-01
    • 2011-08-21
    • 1970-01-01
    相关资源
    最近更新 更多