Unable to compile CUDA mex in Matlab R2010a 64bit CUDA

Hello guys and girls. I’ve looked through numerous topics on matlab cuda compilation problems but Im unable to find any sufficient info on this exact setup. That is, compiling CUDA extended mex c code files on Windows 7 64-bit, Matlab R2010a 64-bit (why is there no windows 7 forum?).

The nvmex plugin gives the following error:

nvmex
WARNING: $ARCH (UNKNOWN) not set correctly [win64]

C:\PROGRA~1\MATLAB\R2010A\BIN\NVMEX.PL:
Error: Using options file:
C:\Users\Kasper\AppData\Roaming\MathWorks\MATLAB\R2010a\mexopts.bat
You cannot use this file with the UNKNOWN architecture because it enables
a compiler for a different architecture.
Running mex -setup may resolve this problem.

??? Error using ==> nvmex at 206
Unable to complete successfully.

Invoking “system(sprintf('nvcc -I”%s/extern/include" --cuda “mexfun.cu” --output-file “mexfun.cpp”', matlabroot));" gives the following error:

nvcc fatal : Cannot find compiler ‘cl.exe’ in PATH

Even though I’ve added “C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin” where cl.exe is located to “Set Path…” under the files menu.

Do you know what I’m doing wrong?

Perhaps if I clarify my situation further it is easier for you to help me. I downloaded the following package from the file mathworks file exchange: http://www.mathworks.com/matlabcentral/fil…grams-in-matlab. I ran setup_cuda_mex which generated cudamexopts.bat, cuda_nex.pl, cuda_mex.m and cuda_mex_helper.m correctly. However, when it tries to compile the provided “example.cu” I get the first error message in the post above.

WARNING: $ARCH (UNKNOWN) not set correctly [win64] 

C:\PROGRA~1\MATLAB\R2010A\BIN\CUDA_MEX.PL:  

  Error: Using options file: 

		 C:\Users\Kasper\AppData\Roaming\MathWorks\MATLAB\R2010a\cudamexopts.bat 

		 You cannot use this file with the UNKNOWN architecture because it enables 

		 a compiler for a different architecture. 

		 Running mex -setup may resolve this problem.

My cudamexopts.bat looks like this:

@echo off

rem MSVC90OPTS.BAT

rem

rem	Compile and link options used for building MEX-files

rem	using the Microsoft Visual C++ compiler version 9.0 SP1

rem

rem	$Revision: 1.1.6.6 $  $Date: 2009/05/18 19:49:43 $

rem	Copyright 2007-2009 The MathWorks, Inc.

rem

rem StorageVersion: 1.0

rem C++keyFileName: MSVC90OPTS.BAT

rem C++keyName: Microsoft Visual C++ 2008

rem C++keyManufacturer: Microsoft

rem C++keyVersion: 9.0

rem C++keyLanguage: C++

rem

rem ************************************************************

********

rem General parameters

rem ************************************************************

********

set MATLAB=%MATLAB%

set VSINSTALLDIR=

set VCINSTALLDIR=%VSINSTALLDIR%\VC

rem In this case, LINKERDIR is being used to specify the location of the SDK

set LINKERDIR=C:\Program Files\Microsoft SDKs\Windows\v6.0A\

set PATH=%VCINSTALLDIR%\bin\amd64;%LINKERDIR%\bin\x64;%VCINSTALLDIR%\BIN;%VSINSTALLDIR%\Common7\Tools;%VSINSTALLDIR%\Common7\Tools\bin;%MATLAB_BIN%;%PATH%

set INCLUDE=%LINKERDIR%\include;%VCINSTALLDIR%\ATLMFC\INCLUDE;%VCINSTALLDIR%\INCLUDE;%VCINSTALLDIR%\VCPackages;%INCLUDE%;%CUDA_INC_PATH%;%NVSDKCUDA_ROOT%\common\inc

set LIB=%LINKERDIR%\LIB\x64;%VCINSTALLDIR%\LIB\amd64;%VCINSTALLDIR%\ATLMFC\LIB\amd64;%MATLAB%\extern\lib\win64;%LIB%;%CUDA_LIB_PATH%;%NVSDKCUDA_ROOT%\common\lib

set MW_TARGET_ARCH=win64

rem ************************************************************

********

rem Compiler parameters

rem ************************************************************

********

set COMPILER=nvcc

set COMPFLAGS=-c -Xcompiler "/c /Zp8 /GR /W3 /EHs /D_CRT_SECURE_NO_DEPRECATE /D_SCL_SECURE_NO_DEPRECATE /D_SECURE_SCL=0 /DMATLAB_MEX_FILE /nologo /MD"

set OPTIMFLAGS=-Xcompiler "/O2 /Oy- /DNDEBUG"

set DEBUGFLAGS=-Xcompiler "/Z7"

set NAME_OBJECT=-o ""

rem ************************************************************

********

rem Linker parameters

rem ************************************************************

********

set LIBLOC=%MATLAB%\extern\lib\win64\microsoft

set LINKER=link

set LINKFLAGS=/dll /export:%ENTRYPOINT% /LIBPATH:"%LIBLOC%" libmx.lib libmex.lib libmat.lib /MACHINE:X64 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /incremental:NO /implib:"%LIB_NAME%.x" /MAP:"%OUTDIR%%MEX_NAME%%MEX_EXT%.map"  cudart.lib

set LINKOPTIMFLAGS=

set LINKDEBUGFLAGS=/DEBUG /PDB:"%OUTDIR%%MEX_NAME%%MEX_EXT%.pdb"

set LINK_FILE=

set LINK_LIB=

set NAME_OUTPUT=/out:"%OUTDIR%%MEX_NAME%%MEX_EXT%"

set RSP_FILE_INDICATOR=@

rem ************************************************************

********

rem Resource compiler parameters

rem ************************************************************

********

set RC_COMPILER=rc /fo "%OUTDIR%mexversion.res"

set RC_LINKER=

set POSTLINK_CMDS=del "%LIB_NAME%.x" "%LIB_NAME%.exp"

set POSTLINK_CMDS1=mt -outputresource:"%OUTDIR%%MEX_NAME%%MEX_EXT%;2" -manifest "%OUTDIR%%MEX_NAME%%MEX_EXT%.manifest"

set POSTLINK_CMDS2=del "%OUTDIR%%MEX_NAME%%MEX_EXT%.manifest"

set POSTLINK_CMDS3=del "%OUTDIR%%MEX_NAME%%MEX_EXT%.map"

As mentioned before, I’m running Windows 7 64-bit, Matlab R2010a 64-bit and Visual Studio 2008 Professional.

Have you tried looking at this? I had a similar problem, but this seems to have let me compile the mex files.

[url=“The Official NVIDIA Forums | NVIDIA”]The Official NVIDIA Forums | NVIDIA