ubuntuusers.de

ubuntuusers.deWikiHybrid-GrafikkartenPRIME

PRIME

Achtung!

Diese Seite wird aktuell überarbeitet. Bitte hier keine Änderungen mehr vornehmen, sondern in Baustelle/Hybrid-Grafikkarten/PRIME!

Achtung!

Für 12.04 muss der LTS Hardware Enablement Stack installiert sein. In einer frischen Installation ab 12.04.3 (ab 23.8.2013) sind die Voraussetzungen bereits erfüllt. Ubuntu 12.04.4 (ab 6.2.2014) bringt weitere kleine Annehmlichkeiten mit, wenn man den Nvidia-Treiber nutzen möchte.

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:

Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:

Dave Airlies "PRIME" bezeichnet die in Randr 1.4, Kernel und X-Stack eingeflossenen Erweiterungen, die es erlauben, auf Systemen mit mehreren GPUs auszuwählen, welche GPU die Grafik berechnet und welche GPU die Grafik darstellt; hierbei schreibt bei Bedarf (grafikintensive Anwendungen auf der leistungsstärkeren GPU) die berechnende GPU in den Bildspeicher der darstellenden GPU. Somit lässt sich bei Hybridlaptops auch eine GPU nutzen, die nicht direkt mit einem Bildschim "verdrahtet" ist; auf Desktopsystemen mit einer in die CPU integrierten GPU und einer zusätzlichen Grafikkarte lassen sich beide GPUs und deren Treiber parallel an einem XServer nutzen.

Aufgrund lizenzrechtlicher Probleme mit der Kernelschnittstelle ließ sich PRIME anfänglich nur mit den freien Grafiktreibern (nouveau, radeon, Intel) nutzen, weshalb Nvidia eine eigene Schnittstelle in den Kernel implementierte: nvidia-prime nutzt diese, um ein Zusammenspiel des proprietären Nvidia-Treibers mit dem Intel-Treiber zu ermöglichen.

PRIME unter Verwendung der freien Grafiktreiber

Anwendungen auf der Nvidia-/AMD-GPU können durch das Prefix DRI_PRIME=1 gestartet werden. So lautet z.B. der Befehl [1] für das Spiel OpenArena:

DRI_PRIME=1 openarena 

Als weiteres Beispiel glxinfo:

DRI_PRIME=1 glxinfo | grep OpenGL 

...was den freien Treiber zeigen sollte. Beispielausgabe (hier nouveau auf der Nvidia-GPU NVC1) :

OpenGL vendor string: nouveau
OpenGL renderer string: Gallium 0.4 on NVC1
OpenGL version string: 3.0 Mesa 9.0
OpenGL shading language version string: 1.30

Zum Vergleich den Intel-Treiber auf der integrierten GPU (hier Ironlake M):

glxinfo | grep OpenGL 

OpenGL vendor string: Intel Open Source Technology Center
OpenGL renderer string: Mesa DRI Intel(R) Ironlake Mobile 
OpenGL version string: 2.1 Mesa 9.0
OpenGL shading language version string: 1.20

Problembehebung

  • Sollte eine 3D-Anwendung mit nouveau oder radeon als Provider nur ein schwarzes oder gestörtes Fenster anzeigen, kann es helfen, das Fenster zu vergrößern oder zu verkleinern oder die Anwendung zuerst auf der Intel GPU zu starten, um eine andere Auflösung oder Vollbild zu wählen und diese zu speichern.

  • Bumblebee mit proprietärem Nvidia-Treiber darf nicht installiert sein.

PRIME und der proprietäre Nvidia-Treiber – nvidia-prime

Baustelle/Hybrid-Grafikkarten/PRIME/nvidia-prime-profiles-1.jpg

Zur Zeit ist es nicht wie mit den freien Treibern möglich, den Desktop von der stromsparenden integrierten GPU berechnen zu lassen und nur bei Bedarf Anwendungsgesteuert die leistungsstärkere dedizierten GPU zu starten. Allerdings kann man den gesamten Desktop von der dedizierten GPU berechnen lassen, die dann die integrierte zur Darstellung nutzt. Hierbei hat man die bestmögliche Grafikleistung, allerdings sinkt die Akkulaufzeit dementsprechend. Als Einschränkung ist ein Tearing zu erwähnen, was z.B. beim Scrollen, Verschieben von Fenstern und schnellen Shootern auffallen kann.

Ab Ubuntu 12.04.4 ist sowohl die Benutzung von LightDM, alsauch KDM oder GDM möglich. Voreingestellt ist LightDM.

Installation

Das Paket nvidia-prime wird auf Nvidia_Optimus Laptops ab 12.04.3 automatisch installiert, wenn man im restricted-driver-manager einen Nvidia-Treiber auswählt und installiert.

Unter Ubuntu 13.10 funktioniert dies z.Z. nicht automatisch. Alternativ:

  • nvidia-prime

  • nvidia-319-updates

  • mesa-utils

Wiki/Vorlagen/Installbutton/button.png mit apturl

Paketliste zum Kopieren:

sudo apt-get install nvidia-prime  nvidia-319-updates mesa-utils 

sudo aptitude install nvidia-prime  nvidia-319-updates mesa-utils 

Zusätzliche Anpassungen für Kubuntu 12.04.3

nvidia-prime installiert als Abhängigkeit LightDM, welcher manuell anstelle von KDM ausgewählt werden muss mittels:

sudo dpkg-reconfigure lightdm 

Außerdem muss noch das Paket lightdm-kde-greeter installiert werden:

sudo apt-get install lightdm-kde-greeter 

und die /etc/lightdm/lightdm.conf mit einem Editor [2] mit Root-Rechten [4] wie folgt angepasst werden:

1
2
3
4
[SeatDefaults]
greeter-session=lightdm-kde-greeter
user-session=kde-plasma
display-setup-script=/sbin/hybrid-power

Neustart

Nach eine Systemneustart greift die Änderung. Der gesamte Desktop wird dann von der Nvidia-GPU gerendert, was der Befehl

glxinfo | grep renderer 

zeigt.

Optional: Einrichten des "switch"-Skripts

Die in diesem Abschnitt (bis Links) beschriebene Nacharbeit ist in einer frischen Installation von Ubuntu 12.04.4 (ab 6.2.14) nicht mehr erforderlich. Der Umschalter ist in den Nvidia-Settings zu finden (s. Bild).

Achtung!

Achtung, nur getestet für Kubuntu 12.04.3 und 13.10. Funktioniert z.Z. nicht unter Ubuntu/Unity.

Durch ein angelegtes Skript lässt sich der XServer auf der stromsparenden Intel-GPU neustarten, das Bumblebee-Kernelmodul bbswitch {en} schaltet die Nvidia-GPU ab.

Installation von bbswitch

sudo apt-get install --no-install-recommends bbswitch-dkms 

Manuelle Installation von bbswitch in Ubuntu 12.04.3

mkdir -p ~/Downloads/bbswitch && cd ~/Downloads/bbswitch && wget https://launchpad.net/~bumblebee/+archive/stable/+files/bbswitch-dkms_0.7-1%7Epreciseppa2_all.deb
sudo dpkg -i *.deb 

Eintragen des Moduls in die /etc/modules:

sudo sh -c 'echo "bbswitch" >> /etc/modules' 

Weitere Systemkonfiguration

sudo cp /etc/lightdm/lightdm.conf /etc/lightdm/lightdm.conf.orig
sudo sed -i '/^display/d' /etc/lightdm/lightdm.conf.orig
sudo sh -c 'echo "/usr/lib/nvidia-319-updates/xorg\n/usr/lib/nvidia-319-updates\n/usr/lib32/nvidia-319-updates" > /etc/ld.so.conf.d/optimus.conf'
sudo sed -i s/modesetting/intel/g /etc/X11/xorg.conf
sudo cp /etc/X11/xorg.conf /etc/X11/xorg.conf.bak
sudo cp /etc/lightdm/lightdm.conf /etc/lightdm/lightdm.conf.nvidia
sudo cp /etc/ld.so.conf.d/optimus.conf /etc/ld.so.conf.d/optimus.conf.bak
sudo rm /usr/lib/x86_64-linux-gnu/xorg/extra-modules # ACHTUNG! Dieser Befehl muss bei einem eventuellem späteren Update des Nvidia-Treibers wiederholt werden. 

Anlegen des "switch"-Scripts

mit einem Editor [2]. Beispiel für nvidia-319-updates, ggfs. entsprechend anpassen. Einfügen:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#!/bin/bash
stop lightdm
killall Xorg
case "$1" in
0)  rmmod nvidia
    echo '/usr/lib/x86_64-linux-gnu/mesa' > /etc/alternatives/x86_64-linux-gnu_gl_conf
    cp /etc/lightdm/lightdm.conf.orig /etc/lightdm/lightdm.conf
    rm /etc/X11/xorg.conf
    rm /etc/ld.so.conf.d/optimus.conf
    tee /proc/acpi/bbswitch <<<OFF
    ;;
1)  tee /proc/acpi/bbswitch <<<ON
    echo '/usr/lib/nvidia-319-updates' > /etc/alternatives/x86_64-linux-gnu_gl_conf
    echo '/usr/lib32/nvidia-319-updates' >> /etc/alternatives/x86_64-linux-gnu_gl_conf
    cp /etc/lightdm/lightdm.conf.nvidia /etc/lightdm/lightdm.conf
    cp /etc/X11/xorg.conf.bak /etc/X11/xorg.conf
    cp /etc/ld.so.conf.d/optimus.conf.bak /etc/ld.so.conf.d/optimus.conf
    modprobe nvidia
    ;;
*) echo "Nothing to do..."
   ;;
esac
ldconfig
start lightdm

und ausführbar [5] machen.

chmod +x switch 

Neustart

Das System ist abschließend neuzustarten.

Umschalten der GPUs

Hierfür ist in das TTY zu wechseln mittels Strg + Alt + F2 . Achtung, laufende Anwendungen werden beim Neustart des XServers beendet.

sudo ./switch 0 

schaltet auf die Intel-GPU, die Nvidia-GPU wird abgeschaltet. Zurück auf die Nvidia-GPU:

sudo ./switch 1 

Da einige Laptops problematisch darauf reagieren, wenn die Nvidia-GPU beim Shutdown abgeschaltet ist, wird empfohlen, dies zu vermeiden und zum Herunterfahren des Laptops auf die Nvidia-GPU zurückzuschalten.

Diese Revision wurde am 21. Februar 2014 11:53 von aasche erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen: Übersicht, Energieverwaltung, Hardware, Grafikkarten, System