Nvidia lets down Linux users, Bumblebee to the resuce

July 10th, 2011 | Categories: CUDA, GPU, Linux | Tags:

I recently maxed out my credit card in order to treat myself to a shiny new Dell XPS L720X laptop that comes complete with Intel i7 sandy bridge processor and Nvidia GeForce GT 555M. The NVidia graphics card was one of the biggest selling points for me because I wanted to do some GPU work at home and on the train using both CUDA and OpenCL.  I get asked about these technologies a lot by researchers at The University of Manchester and I wanted to beef up my experience levels.

I wanted this machine to be dual boot Windows 7 and Linux so, before I shelled out my hard-earned cash, I thought I would check that Nvidia’s Linux driver supported the GT 555M. A quick look at their official driver page confirmed that it did so I handed over the credit card. After all, if Nvidia themselves say that it is supported then you’d expect it to be supported right?

It's supported, honest!

Wrong! Here’s my story.

I installed Ubuntu 11.04 from DVD without a hitch and updated all packages to the very latest versions. I then hopped over to NVidia’s website, got the driver (version 275.09.07) and installed it. I’ve gone through this process dozens of times on Desktop machines at work and wasn’t expecting any problems but boy did I get problems. After installing NVidia’s driver, the Dell simply would not boot into Linux. Not only that but it never seemed to fail in exactly the same place twice…the boot process would start just fine and then it would crash…seemingly at random.  So, off to the forums I went where I quickly discovered that my system was not as supported as I originally thought.

You see, my laptop has two graphics systems on it: A relatively low-powered Intel one and the NVidia one. It also comes with some cool sounding technology called Optimus that helps save battery power on systems like mine. Rather than explain the details of Optimus, I’m just going to refer you to both Nvidia’s web page about it along with the Wikipedia page.

Here’s the kicker…Nvidia’s Linux driver does not support optimus, even though Optimus is Nvidia’s own technology. They even say that they don’t support it in the Additional Information tab. Furthermore, they have no plans to support it.  Sadly, I didn’t even realise that my new laptop was an Optimus laptop until I tried to get the Nvidia drivers on it.

If only I had thought to myself ‘Well, Nvidia may say that they support the 555M but do they really mean it?’ If I mis-trusted the information given on the supported products page then perhaps then I would have read the further information tab and trawled the forums. I chose to trust Nvidia and assume that when a product was listed under ‘supported products’ then I didn’t need to worry. Well you live and learn I guess.

Project Bumblebee

One of the fantastic things about the Linux community is that even if you are let down by your hardware vendor then someone, somewhere may well come to your rescue. For Nvidia Optimus, that someone is Martin Juhl. Martin’s project, Bumblebee, brings Optimus support to Linux which is useful since it seems that Nvidia can’t be bothered!

Installation for Ubuntu users is easy.  All you need to do is open up a terminal, type the following and follow the instructions to download and install both the Nvidia drivers along with bumblebee.

sudo apt-add-repository ppa:mj-casalogic/bumblebee
sudo apt-get update && sudo apt-get install bumblebee

To run an application, glxgears for example, you just type the following at the command line

optirun glxgears

Sadly for me this didn’t work.  All I got was the following

 * Starting Bumblebee X server bumblebee
_PS0 Enabling nVidia Card Succeded. [ OK ]

 * Stopping Bumblebee X server bumblebee
_DSM Disabling nVidia Card Succeded.
_PS3 Disabling nVidia Card Succeded.

Nothing else happened. I’d report it as a bug-report but it seems that someone with a very similar configuration to me has already done so and work is being done on it as we speak.  Plenty of other people have reported success with bumblebee though and I am confident that I will be up and running soon.  As soon as I am up and running I’ll owe the developer of bumblebee a beer!

Update 11th July: The bumblebee bug mentioned above has been fixed.  I can now run apps via optirun.  Not done much more than run glxgears though so far.

  1. July 11th, 2011 at 15:36
    Reply | Quote | #1

    Many Jacket and LibJacket users have had troubles with Optimus and CUDA development as well, so you’re not alone :)

    In Windows, we figured out that you have to do some stuff with the NVIDIA Control Panel to get Jacket to work. We posted a YouTube video about that here: http://www.youtube.com/accelereyes#p/a/u/0/GRi9U3x1cgE

    In Linux, I’m not aware of a solution and your approach seems to be the most educated that I’ve seen. We’ll escalate your post with NVIDIA to see if they have something better to say… more to come.

    -John

  2. July 11th, 2011 at 16:23
    Reply | Quote | #2

    Thanks for the extra info John and also for escalating with NVIDIA.
    Cheers,
    Mike

  3. mustafa
    November 2nd, 2011 at 13:17
    Reply | Quote | #3

    Hi Mike,
    my story resembles with yours
    I also have an optimus laptop and installed bumblebee
    Could you manage to run matlab gpuArray() function

  4. Jessica Alfonsi
    May 9th, 2012 at 07:43
    Reply | Quote | #4

    Hi Mike,
    I have an Optimus laptop too (Asus N53SV) and installed the latest bumblebee 3.0 alongside Ubuntu 12.04. While I was able to run “Hello World” compiled with CUDA 4.1, I’m not able to have Mathematica CUDALink recognizing the Nvidia GPU… Mathematica 8.0.4 only sees the Intel on-die graphics…Let’s hope Wolfram will fix this in the next major release…

  5. May 9th, 2012 at 13:37
    Reply | Quote | #5

    Hi Jessica

    I have to confess that I’ve given up on CUDA on Linux for Optimus machines. I just dual boot and use Windows whenever I want to play with CUDA. Works great with Mathematica :)

    Cheers,
    Mike