Re: nVidia Optumus prevents using CUDA?
- To: mathgroup at smc.vnet.net
- Subject: [mg122735] Re: nVidia Optumus prevents using CUDA?
- From: Alexander Vorobiev <alexander.vorobiev at removethis.gmail.com>
- Date: Wed, 9 Nov 2011 06:23:28 -0500 (EST)
- Delivered-to: l-mathgroup@mail-archive0.wolfram.com
- References: <j8nuj1$ee5$1@smc.vnet.net> <j8r9hu$3jk$1@smc.vnet.net>
"Oleksandr Rasputinov" <oleksandr_rasputinov at hmamail.com> writes: > Minimal installation of Microsoft Visual C++ 10.0 (2010) SP1 There are two additional steps that I had to take in order to make the 64bit VC compiler work with CUDA: 1. Create the file C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\amd64\vcvars64.bat containing one line: CALL "C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\SetEnv.cmd" /x64 2. Modify the file (substitute your home directory instead of C:\Users\alex of course) C:\Users\alex\AppData\Roaming\Mathematica\Paclets\Repository\CUDAResources-Win64-8.0.4.1\CUDAToolkit\bin\nvcc.profile so that the INCLUDES line looks like this: INCLUDES += "-I$(TOP)/include" "-I$(TOP)/include/cudart" "-IC:/Program Files (x86)/Microsoft Visual Studio 10.0/VC/include" $(_SPACE_) Apparently there is a problem with configuration of NVIDIA CUDA tools shipped with Mathematica. I am not sure it is relevant in this case but if the directory with nvcc.profile is not there, in Mathematica try CUDAResourcesInstall[Update -> True] With the two additions a lot of examples in Mathematica Help involving compilation of CUDA functions (e.g. those in documentation for CUDAFunctionLoad) work. > Personally, I use MinGW-w64 GCC > 4.6.1 rather than Visual C++; this works perfectly well also but does > require modifications to Mathematica which I will not discuss here other > than to say that it would be nice if this compiler could be supported > without need of modifications in a future release. The way to deal with MinGW-w64 is described in the documentaion. Specifically, either define $CCompiler: Needs["CCompilerDriver`"] Needs["CCompilerDriver`GenericCCompiler`"] $CCompiler = {"Name" -> "MinGW64", "Compiler" -> GenericCCompiler, "CompilerInstallation" -> "C:/MinGW64", "CompilerName" -> "x86_64-w64-mingw32-gcc.exe"}; or use the options, e.g. greeter = CreateExecutable[StringJoin[ "#include <stdio.h>\n", "int main(){\n", " printf(\"Hello MinGW-w64 world.\\n\");\n", "}\n"], "hiworld", "Compiler" -> GenericCCompiler, "CompilerInstallation" -> "C:/MinGW64", "CompilerName" -> "x86_64-w64-mingw32-gcc.exe"] Unfortunately that makes the compiler work everywhere in Mathematica (I tested both 8.0.1 and 8.0.4) but not in CUDALink. I suspect the reason is that the NVCCCompiler should be pointed to MinGW-w64 somehow and the documentation is unclear on how to do that. There is an option "XCompilerInstallation" to CUDAFunctionLoad documented as "the directory where NVCC will find the C compiler is installed" but there is neither corresponding "XCompilerName" option nor an example on how to use it. Regards, Alex