A (sadly) brief look at GP GPU Computing in MATLAB 2010b

September 13th, 2010 | Categories: CUDA, matlab | Tags:

One of the new features in MATLAB 2010b that’s getting me very excited is the CUDA based GP-GPU (General Purpose computation on Graphical Processing Units) integration that’s become available in the Parallel Computing Toolbox. As soon as I had MATLAB 2010b installed on my CUDA capable laptop (Dell XPS M1330 with a GeForce 8400M GS) running Ubuntu I wanted to try out as much of this new functionality as my low-end hardware would allow me. I’ve installed and played with CUDA on this machine in the past and so I fired up MATLAB 2010b and issued the following command to ask MATLAB how many CUDA enabled devices it thought I had on my system

gpuDeviceCount

??? Error using ==> feval
The CUDA driver was found, but it is too old. The CUDA driver on your system is version: 3.
The required CUDA version is: 3.1 or greater.

The practical upshot of the above error message is that I needed to upgrade my NVidia graphics driver which was at version 195.36.24.  I went for the latest version which, at the time of writing, is version 256.53.  I did this from the NVIDIA-Linux-x86-256.53.run file which I got direct from NVidia and all I’ll say about the process is that it ruined an otherwise perfectly good Sunday morning.  I did get there in the end though!

So, I had the shiniest version of the graphics driver up and running.  Time to fire up MATLAB again:

>> gpuDeviceCount
Warning: The device selected (device 1, "GeForce 8400M
GS") does not have sufficient compute capability to be
used. Compute capability 1.3 (or greater) is required,
the selected device has compute capability 1.1.
> In deviceCount at 7
  In GPUDevice.GPUDevice>GPUDevice.count at 27
  In gpuDeviceCount at 10

Or, to put it another way, “Please insert new laptop to continue.” With that, my MATLAB/CUDA experiments are brought to an end.

Can anyone recommend a reasonably priced laptop that contains a CUDA capable graphics card at compute level 1.3 or above?

Update (16th September 2010): Several people have emailed me to defend The Mathwork’s design decision so I’d like to make something very clear: I completely agree with The Matworks in their insistence on CUDA compute level 1.3 or above.  As one correspondent pointed out, this ensures that not only does the hardware support double precision but it is also IEEE-compliant and IEEE-compliance is a good thing!  This blog post was never meant to criticize The Mathworks over this, I wrote it partly to ensure that more people are aware of the requirements and partly because I needed to vent over the sudden obsolescence of my relatively new laptop.

  1. gpu_guru
    September 13th, 2010 at 22:07
    Reply | Quote | #1

    Seems like you’d be much better off with Jacket. Jacket will run on any CUDA-capable card and has way better support than R2010B and way better performance (look at forums.accelereyes.com). You can’t even index into matrices with R2010B, and you’ve been able to do that with Jacket since 2008. Just my 2 cents.

  2. JP
    September 14th, 2010 at 15:27
    Reply | Quote | #2

    Looking at http://en.wikipedia.org/wiki/Comparison_of_Nvidia_graphics_processing_units#Compute_capability_table.28version_of_CUDA_supported.29
    Compute capability 1.3 is the lowest that supports double-precision floating-point operations – so its not surprising that that is a restriction.

    Looks like you’d need a laptop with a GeForce 400M series GPU which were new as of September 3, 2010. So an extremely new laptop.

  3. September 14th, 2010 at 16:19
    Reply | Quote | #3

    Hi JP

    I agree, it’s not surprising. All decent GPUs will be 1.3 or above in the near future and double precision is the way to go so Mathworks are doing the right thing IMHO. I’m just a bit depressed that my relatively new laptop is effectively obsolete.

    Cheers,
    Mike

  4. September 15th, 2010 at 08:44
    Reply | Quote | #4