在Matlab2014a中用MEX编译CUDA的问题

时间:2014-09-17 09:28:09

标签: matlab cuda

我正在尝试使用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编译器。

代码本身有效,因为我在其他系统上测试过它。

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

1 个答案:

答案 0 :(得分: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文件路径。然后它应该工作。