我正在尝试使用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编译器。
代码本身有效,因为我在其他系统上测试过它。
我不知道我做错了什么。 任何帮助表示赞赏。
答案 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文件路径。然后它应该工作。