MathGroup Archive 2011

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: nVidia Optumus prevents using CUDA?

  • To: mathgroup at smc.vnet.net
  • Subject: [mg122768] Re: nVidia Optumus prevents using CUDA?
  • From: "Oleksandr Rasputinov" <oleksandr_rasputinov at hmamail.com>
  • Date: Thu, 10 Nov 2011 06:51:38 -0500 (EST)
  • Delivered-to: l-mathgroup@mail-archive0.wolfram.com
  • References: <j8nuj1$ee5$1@smc.vnet.net> <j8r9hu$3jk$1@smc.vnet.net>

On Wed, 09 Nov 2011 11:34:14 -0000, Alexander Vorobiev  
<alexander.vorobiev at removethis.gmail.com> wrote:

> "Oleksandr Rasputinov" <oleksandr_rasputinov at hmamail.com> writes:
>
>> 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"]
>

Treating MinGW-w64 as a generic compiler as described in the documentation  
gives one the ability to call it from Mathematica, but does not enable the  
same level of functionality available with compilers for which proper  
support has been provided. For example, apart from the CUDA issue you  
noticed, nothing using MathLink or the Wolfram Library runtime will work  
either because libraries have not been provided for this.  
CCompilerDriver`GenericCCompiler.m avoids link errors only because it does  
not attempt to link with any libraries. In other words, the approach  
suggested in the documentation achieves only barely minimal support and is  
not enough for proper operation. For example:

In[1]:=
Needs["CCompilerDriver`"];

In[2]:=
(* With proper support *)
$CCompiler=CCompilerDriver`MinGWCompiler`MinGWCompiler;
CreateLibrary[
{"C:\\Program Files\\Wolfram  
Research\\Mathematica\\8.0\\SystemFiles\\Links\\LibraryLink\\LibraryResources\\Source\\demo_mathlink.c"},"demo_mathlink"
]

Out[3]=
"C:\\Users\\Oleksandr\\Application  
Data\\Mathematica\\SystemFiles\\LibraryResources\\Windows-x86-64\\demo_mathlink.dll"

In[4]:=
(* Using GenericCCompiler` as suggested in the documentation *)
$CCompiler={"Name"->"MinGW64","Compiler"->CCompilerDriver`GenericCCompiler`GenericCCompiler,"CompilerInstallation"->"C:\\MinGW-w64","CompilerName"->"x86_64-w64-mingw32-gcc.exe"};
CreateLibrary[
{"C:\\Program Files\\Wolfram  
Research\\Mathematica\\8.0\\SystemFiles\\Links\\LibraryLink\\LibraryResources\\Source\\demo_mathlink.c"},"demo_mathlink",
"ShellOutputFunction"->Print
]

During evaluation of In[5]:=
C:\MinGW-w64\bin\x86_64-w64-mingw32-gcc.exe -shared -o  
"C:\Users\Oleksandr\Application  
Data\Mathematica\SystemFiles\LibraryResources\Windows-x86-64\Working\demo_mathlink.dll"  
-I"C:\Program Files\Wolfram  
Research\Mathematica\8.0\SystemFiles\IncludeFiles\C" -I"C:\Program  
Files\Wolfram  
Research\Mathematica\8.0\SystemFiles\Links\MathLink\DeveloperKit\Windows-x86-64\CompilerAdditions\mldev64\include"  
"C:\Program Files\Wolfram  
Research\Mathematica\8.0\SystemFiles\Links\LibraryLink\LibraryResources\Source\demo_mathlink.c"  
-L"C:\Program Files\Wolfram  
Research\Mathematica\8.0\SystemFiles\Links\MathLink\DeveloperKit\Windows-x86-64\CompilerAdditions\mldev64\lib"  
-L"C:\Program Files\Wolfram  
Research\Mathematica\8.0\SystemFiles\Libraries\Windows-x86-64" 2>&1
C:\Users\Oleksandr\Temp\ccCKP9sc.o:demo_mathlink.c:(.text+0x54): undefined  
reference to `MLCheckFunction'
C:\Users\Oleksandr\Temp\ccCKP9sc.o:demo_mathlink.c:(.text+0x70): undefined  
reference to `MLGetInteger'
C:\Users\Oleksandr\Temp\ccCKP9sc.o:demo_mathlink.c:(.text+0x84): undefined  
reference to `MLGetInteger'
C:\Users\Oleksandr\Temp\ccCKP9sc.o:demo_mathlink.c:(.text+0x94): undefined  
reference to `MLNewPacket'
C:\Users\Oleksandr\Temp\ccCKP9sc.o:demo_mathlink.c:(.text+0xb7): undefined  
reference to `MLPutInteger'
C:\Users\Oleksandr\Temp\ccCKP9sc.o:demo_mathlink.c:(.text+0x1bc):  
undefined reference to `MLCheckFunction'
C:\Users\Oleksandr\Temp\ccCKP9sc.o:demo_mathlink.c:(.text+0x1d8):  
undefined reference to `MLGetString'
C:\Users\Oleksandr\Temp\ccCKP9sc.o:demo_mathlink.c:(.text+0x1e8):  
undefined reference to `MLNewPacket'
C:\Users\Oleksandr\Temp\ccCKP9sc.o:demo_mathlink.c:(.text+0x20c):  
undefined reference to `MLPutString'
C:\Users\Oleksandr\Temp\ccCKP9sc.o:demo_mathlink.c:(.text+0x23f):  
undefined reference to `MLReleaseString'
collect2: ld returned 1 exit status

Out[5]= $Failed



  • Prev by Date: Re: nVidia Optumus prevents using CUDA?
  • Next by Date: Re: Converting a list of strings to a single space-delimited string
  • Previous by thread: Re: nVidia Optumus prevents using CUDA?
  • Next by thread: Re: nVidia Optumus prevents using CUDA?