Optimus + CUDA in Fedora 20

Recent laptops mostly come with hybrid-graphics system (two GPUs in one machine: an integrated GPU and a discrete GPU). It was first designed to control power consumption in laptops. By default, the operating system will use the integrated GPU which is less power consumption. Only when heavy activities (gaming, graphic rendering, GPU computing, etc) are performed, then operating system will move the workload to the discrete GPU.

For laptop with NVIDIA GPU, there is NVIDIA Optimus Technology for auto-switching between integrated GPU and discrete GPU. Unfortunately, NVIDIA support for this technology in Linux is not as good as in Windows. Since discrete GPU is a secondary card, installing the driver for NVIDIA GPU is not easy and may cause problem with the display manager in Linux.

But, thankfully, there is an open-source project called Bumblebee-project that develop and provide support for the NVIDIA Optimus Technology in Linux. It provides access to the discrete GPU including running CUDA applications. And here are the steps to make Optimus and CUDA work in Fedora 20:

1. Install virtualgl, bbswitch, bumblebee, and bumblebee-nvidia. Follow instructions in this link (fedoraproject.org/wiki/Bumblebee)

2. Download cuda repo from NVIDIA website (developer.nvidia.com/cuda-downloads)

3. Install cuda-toolkit (yum -y install cuda-toolkit). NOTE: it must be “cuda-toolkit” because we have to exclude the cuda-drivers package.

4. To run cuda application, we have to use optirun command.
$> optirun [your_cuda_application]

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.