Installatie van Ubuntu 12.04.3 LTS op een systeem met een NVIDIA OPTIMUS enabled GPGPU kaart en CUDA 5.5 ondersteuning


STAP 1: Installeer Ubuntu 12.04.3 op uw systeem

  • Ga naar lokaal C206 en neem de installatie CD uit de kast
  • Steek de CD in je CD-drive
  • Heropstarten van je systeem + installatie van Ubuntu (kies ook meteen voor online updates)

STAP 2: Updates installeren en je aptitude updaten

  • Na een installatie komt de update manager vragen om heel wat fixes en updates uit te voeren --> doen!
  • Ga naar een terminal en typ de volgende commando's (steeds met sudo/administrator rechten)

sudo apt-get update
sudo apt-get upgrade

STAP 3: zorgen dat er geen enkele nvidia installatie op je systeem staat

  • Is zeker nodig als je een bestaand systeem gebruikt
  • Wordt gebruikt om de bestaande drivers van nvidia te verwijderen en stap voor stap de correcte te installeren
  • In terminal geef je volgende commando's

nvidia-uninstall
sudo apt-get remove --purge nvidia*

STAP 4: installeer Bumblebee en de bijhorende Nvidia drivers

  • Download geen drivers via de NVIDIA website maar doe alles via apt - repositories
  • Verwijder de standaard linux headers (geven problemen in 12.04.3)

sudo apt-get remove linux-headers-generic

  • In terminal geef je volgende commando's

sudo add-apt-repository ppa:bumblebee/stable
sudo add-apt-repository ppa:ubuntu-x-swat/x-updates
sudo apt-get update
sudo apt-get install bumblebee bumblebee-nvidia virtualgl linux-headers-generic-lts-raring
sudo reboot

  • Dit zorgt dat de nvidia-304 drivers geinstalleerd worden via het nvidia-current package. CUDA5.5 wordt door deze driver niet ondersteund en dus moeten we een recentere driver installeren in de volgende stap.

STAP 5: Installeer de laatste nieuwe nvidia drivers voor Ubuntu 12.04.3 zodat CUDA 5.5 ondersteund wordt

  • Installeer de recentste ondersteunde drivers voor deze kernel via

sudo apt-get install nvidia-319-updates nvidia-settings-319-updates
sudo reboot

STAP 6: Configureer bumblebee correct, zodanig dat je optirun kan gebruiken

  • Optirun is de manier om via bumblebee te zeggen dat je software op de NVIDIA GPU wil uitvoeren en niet de zwakkere intel GPU die aanwezig is
  • Eerst zorgen dat je in /etc/bumblebee/bumblebee.conf de bumblebee configuratie bijstuurt. Stel volgende zaken opnieuw in

[bumblebeed]
Driver=nvidia

[driver-nvidia]
KernelDriver=nvidia-319-updates
LibraryPath=/usr/lib/nvidia-319-updates:/usr/lib32/nvidia-319-updates
XorgModulePath=/usr/lib/nvidia-319-updates/xorg,/usr/lib/xorg/modules

  • Add a line in /etc/bumblebee/xorg.conf.nvidia using the correct guidelines. We will explicitly specify the bus address of the nvidia GPU card.

Section "Device"
Identifier "DiscreteNvidia"
Driver "nvidia"
VendorName "NVIDIA Corporation"
BusID "PCI:01:00:0"

  • Herstart de bumblebee deamon zodat de wijzigingen opgenomen worden

sudo service bumblebeed restart


Op dit moment zou je een werkende bumblebee deamon moeten hebben die doet wat noodzakelijk is. Je kan dit testen via de volgende stappen:

  • Controleer of bumblebee deamon correct opstart door het process expliciet op te starten met een debugger

sudo bumblebeed --debug

  • Controleer zeker in de debug output of de driver (nvidia-319-updates) correct geinitialiseerd wordt een je bericht krijgt dat de deamon op messages wacht.
  • Controleer nu of je software kan opstarten via de NVIDIA GPU (in feite de rendering die gedaan wordt op GPU via de bumblebee pipeline)

optirun -vv firefox

  • Als alles correct werkt, zal een firefox venster openen. Groot verschil is dat deze visualisatie nu gerenderd wordt door de NVIDIA GPU en niet de onboard Intel GPU.

STAP 7: Installeer CUDA 5.5


sudo service lightdm stop

  • Ga naar je downloads folder, geef executable rechten aan de NVIDIA *.run file en voer uit

cd ~
cd Downloads/
chmod +x NVIDIA.run
sudo ./NVIDIA.run

  • Ga met spatiebalk door de license agreement en accepteer
  • Bij de vraag of je de nvidia - driver wil installeren zeg je NO
  • Bij de vraag of je CUDA toolkit wil installeren kies je YES en gebruik je default locatie voor installatie
  • Bij de vraag of je de CUDA examples wil installeren kies je YES en gebruik je default locatie voor installatie
  • Als de installatie ten einde loopt dan ga je terug naar de grafische weergave via

sudo service lightdm start

STAP 8: Test de CUDA installatie via de voorziene samples

  • Er dienen nog enkele configuraties te gebeuren van de juiste source folders
  • Eerst configureren we de correcte PATH initializaties bij het opstarten van een terminal. Om dit niet elke keer te moeten doen, voegen we aan het opstartscript ~/.bashrc enkele zaken toe.

sudo apt-get install emacs (gemakkelijke editor om files aan te passen - keuze is hier natuurlijk vrij)
cd ~
sudo emacs .bashrc

  • Voeg onderaan volgende lijnen toe aan de file

# Extra path data for CUDA toolkit functionality
export PATH=/usr/local/cuda-5.5/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-5.5/lib64:/usr/local/cuda-5.5/lib:$LD_LIBRARY_PATH

  • Installeer nog snel enkele pakketten die nodig zijn voor een goede werking van alle CUDA samples (OpenGL en openMPI)

sudo apt-get install freeglut3-dev build-essential libx11-dev libxmu-dev libxi-dev libgl1-mesa-glx libglu1-mesa libglu1-mesa-dev
sudo apt-get install mpi-default-dev

  • Ga naar samples folder via een terminal en build de examples

cd ~
cd NVIDIA-samples-folder/
make

  • Na de complete build zijn alle examples te vinden in de folder ~/NVIDIA-samples-folder/bin/x86_64/linux/release/
  • Start met het uitvoeren van de deviceQuery app zodanig dat je kan controleren of je CUDA kaart herkend wordt en er eventueel debug info komt rond problemen

sudo optirun ./deviceQuery

  • Het resultaat zou eruit moeten zien als volgt

./deviceQuery Starting...

CUDA Device Query (Runtime API) version (CUDART static linking)

Detected 1 CUDA Capable device(s)

Device 0: "GeForce GT 540M"
CUDA Driver Version / Runtime Version 5.5 / 5.5
CUDA Capability Major/Minor version number: 2.1
Total amount of global memory: 2048 MBytes (2147155968 bytes)
( 2) Multiprocessors, ( 48) CUDA Cores/MP: 96 CUDA Cores
GPU Clock rate: 1344 MHz (1.34 GHz)
Memory Clock rate: 800 Mhz
Memory Bus Width: 128-bit
L2 Cache Size: 131072 bytes
Maximum Texture Dimension Size (x,y,z) 1D=(65536), 2D=(65536, 65535), 3D=(2048, 2048, 2048)
Maximum Layered 1D Texture Size, (num) layers 1D=(16384), 2048 layers
Maximum Layered 2D Texture Size, (num) layers 2D=(16384, 16384), 2048 layers
Total amount of constant memory: 65536 bytes
Total amount of shared memory per block: 49152 bytes
Total number of registers available per block: 32768
Warp size: 32
Maximum number of threads per multiprocessor: 1536
Maximum number of threads per block: 1024
Max dimension size of a thread block (x,y,z): (1024, 1024, 64)
Max dimension size of a grid size (x,y,z): (65535, 65535, 65535)
Maximum memory pitch: 2147483647 bytes
Texture alignment: 512 bytes
Concurrent copy and kernel execution: Yes with 1 copy engine(s)
Run time limit on kernels: Yes
Integrated GPU sharing Host Memory: No
Support host page-locked memory mapping: Yes
Alignment requirement for Surfaces: Yes
Device has ECC support: Disabled
Device supports Unified Addressing (UVA): Yes
Device PCI Bus ID / PCI location ID: 1 / 0
Compute Mode:
< Default (multiple host threads can use ::cudaSetDevice() with device simultaneously) >

deviceQuery, CUDA Driver = CUDART, CUDA Driver Version = 5.5, CUDA Runtime Version = 5.5, NumDevs = 1, Device0 = GeForce GT 540M
Result = PASS

  • Probeer nadien ook wat meer rekenintensieve modules zoals de volumeRender of boxFilter

Je systeem kan nu overweg met CUDA 5.5 en kan visualisaties tunnelen via de bumblebee interface!