Code covered by the BSD License  

Highlights from
NVCC cuda compiler wraper

4.5

4.5 | 4 ratings Rate this file 23 Downloads (last 30 days) File Size: 3.55 KB File ID: #29611
image thumbnail

NVCC cuda compiler wraper

by

 

02 Dec 2010 (Updated )

Compile cuda kernels in Matlab, like nvcc('example.cu')

| Watch this File

File Information
Description

 This function NVCC is a wraper for the NVIDIA Cuda compiler NVCC.exe
 in combination with a Visual Studio compiler. After this Cuda
 files can be compiled into kernels
 
 If you call the code the first time, or with "nvcc -config":
 1) It will try to locate the "The NVIDIA GPU Computing Toolkit", which
 can be downloaded from www.nvidia.com/object/cuda_get.html
 Typical Location :
   C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v3.2\bin
 2) It will try to locate the visual studio compiler
 Typical Location :
   C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin\
 3) It creates a file nvccbat.bat with the compiler information.

 After this configuration procedure, you can compile files with:

  nvcc(filename);

  or
 
  nvcc(options,filename)

  filename : A string with the filename, for example 'example.cu'
  options : NVCC Compiler options for example,
               nvcc(option1, option2, option3,filename)
       
  For help on NVCC config options type, "nvcc --help"
  

  Note!
  If the NVCC fails to locate the compiler you can try to
  write your own "nvccbat.bat" file in a text-editor, for example:
    echo off
    set PATH=C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin\;PATH
    set PATH=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v3.2\bin;PATH
    call vcvars32.bat
    nvcc 1 2 3 4 5 6 7 8 9

  1 Example, Configuration
     Locate Cuda and VS compiler
    nvcc -config
    
     Show the NVCC compiler options
    nvcc --help

     Test some input options
    nvcc --dryrun -ptx example.cu

  2 Example,

     Locate Cuda and VS compiler
    nvcc -config
     Compile the code
    nvcc('example.cu');
     It the same as :
     nvcc -ptx example.cu

     Make the kernel
    Kernel = parallel.gpu.CUDAKernel('example.ptx', 'example.cu');

     We want to execute this kernel 100 times
    Kernel.ThreadBlockSize=100;

     We make an array with 100 random files
    Data=rand(100, 1, 'single');
    DataCuda= gpuArray(Data);
     
     We will add the value 1
    OneCuda = parallel.gpu.GPUArray.ones(1,1);

     Execute the kernel
    DataOneCuda = feval(Kernel, DataCuda, OneCuda);

     Get the data back
    DataOne=gather(DataOneCuda);
   
     Show the result
    figure, hold on;
    plot(Data,'b');
    plot(DataOne,'r');

Required Products Parallel Computing Toolbox
MATLAB release MATLAB 7.11 (R2010b)
Other requirements Windows NVIDIA GPU Computing Toolkit Visual Studio or Visual Studio Express
Tags for This File   Please login to tag files.
Please login to add a comment or rating.
Comments and Ratings (5)
22 Feb 2012 Gunnar Läthén

A minor possible improvement: I needed to pass several defines (-D) to the compiler, but currently the bat file only supports 9 arguments. You can replace the %1 %2 ... with a single %* to support more arguments (at least in Windows 7).

22 Feb 2012 Gunnar Läthén  
30 Jul 2011 Michael Knap

Good work, however it seems to be platform specific. I am working on a similar implementation for linux.

03 Dec 2010 Leon Su  
03 Dec 2010 John Melonakos

Nice and helpful post. For those of you using Jacket, you'll recognize this concept as GLAUNCH, documentation here: http://wiki.accelereyes.com/wiki/index.php/GLAUNCH

Enjoy!

Updates
06 Dec 2010

Now allows NVCC.EXE extra configuration options. And will store the main .bat file with the configuration always in the same folder.

Contact us