Bumblebee 3.0 for Ubuntu

Jakiś czas temu opisywałem program Ironhide do przełączania hybrydowych kart graficznych pod Linuksem - Linux Hybrid Graphics. W dzisiejszym wpisie chciałbym przedstawić kolejny programik - Bumblebee 3.0, za pomocą którego możemy również korzystać z naszej dedykowanej karty graficznej Nvidia, a nie tylko zintegrowanej z procesorem karty graficznej Intel HD Graphics. Ponieważ jest to najbardziej aktualny projekt, jeśli chodzi o technologie NVIDIA Optimus w systemach spod znaku pingwina.

Instalacja

Pierwszą czynnością, jaką powinniśmy najpierw wykonać, to odinstalować bieżący sterownik nvidia-current. Dlatego trzeba zrobić to teraz, bo później zostanie zainstalowany aktualny własnościowy sterownik wraz z programem Bumblebee. Wpisując w konsoli następujące polecenie:


sudo apt-get purge nvidia-current

Kolejną sprawą jest dodanie dwóch repozytoriów, w których znajdują się odpowiednie sterowniki dla naszego systemu, czyli znowu w konsoli:


sudo add-apt-repository ppa:bumblebee/stable
sudo add-apt-repository ppa:ubuntu-x-swat/x-updates

Następnie musimy zaktualizować pakiety oraz uaktualnić system:


sudo apt-get update
sudo apt-get upgrade

Ostatnią i najważniejszą rzeczą jest zainstalowanie programu Bumblebee, który jak wspominałem wcześniej instaluje również aktualne sterowniki do karty graficznej Nvidia. Ponownie w konsoli wpisujemy:


sudo apt-get install bumblebee bumblebee-nvidia

Po zakończonej instalacji musimy jeszcze tylko w konsoli pozwolić na używanie Bumblebee:


sudo usermod -a -G bumblebee $USER

Dokładniej chodzi o to, że w miejsce $USER wpisujemy swój login i naciskamy enter.
Wskutek czego, nie pozostaje nam nic innego, jak wykonać restart systemu.

Test

Dla porównania osiągów obydwu kart graficznych (Nvidia+Intel) możemy wykonać krótki sprawdzian programu Bumblebee, czyli najpierw w konsoli dla karty Intel:


glxspheres

A teraz dla karty Nvidia:


optirun glxspheres

Wyświetli się nam taki oto benchmark do testowania kart graficznych pod Linuksem.

W konsoli znowuż otrzymamy takie wyniki.

Karta graficzna Intel:


    mariusz@Aspire:~$ glxspheres
    Polygons in scene: 62464
    Visual ID of window: 0x94
    Context is Direct
    OpenGL Renderer: Mesa DRI Intel(R) Sandybridge Mobile
    60.029694 frames/sec - 66.993139 Mpixels/sec
    60.167125 frames/sec - 67.146512 Mpixels/sec
    60.188161 frames/sec - 67.169987 Mpixels/sec
    60.156691 frames/sec - 67.134868 Mpixels/sec
    60.181373 frames/sec - 67.162412 Mpixels/sec
    60.158374 frames/sec - 67.136746 Mpixels/sec
    60.167689 frames/sec - 67.147141 Mpixels/sec
    60.132842 frames/sec - 67.108252 Mpixels/sec
    60.136533 frames/sec - 67.112371 Mpixels/sec
    59.211018 frames/sec - 66.079496 Mpixels/sec
    60.149711 frames/sec - 67.127078 Mpixels/sec
    60.132187 frames/sec - 67.107520 Mpixels/sec
    60.066042 frames/sec - 67.033703 Mpixels/sec
    60.281549 frames/sec - 67.274209 Mpixels/sec
    mariusz@Aspire:~$

Karta graficzna Nvidia:


    mariusz@Aspire:~$ optirun glxspheres
    Polygons in scene: 62464
    Visual ID of window: 0x21
    Context is Direct
    OpenGL Renderer: GeForce GT 540M/PCIe/SSE2
    95.820743 frames/sec - 106.935949 Mpixels/sec
    100.468399 frames/sec - 112.122734 Mpixels/sec
    105.005553 frames/sec - 117.186198 Mpixels/sec
    102.770278 frames/sec - 114.691631 Mpixels/sec
    108.868920 frames/sec - 121.497715 Mpixels/sec
    148.306886 frames/sec - 165.510485 Mpixels/sec
    148.856496 frames/sec - 166.123849 Mpixels/sec
    148.558642 frames/sec - 165.791445 Mpixels/sec
    147.905952 frames/sec - 165.063043 Mpixels/sec
    148.047507 frames/sec - 165.221017 Mpixels/sec
    147.886924 frames/sec - 165.041808 Mpixels/sec
    148.385959 frames/sec - 165.598730 Mpixels/sec
    146.777540 frames/sec - 163.803735 Mpixels/sec
    148.439393 frames/sec - 165.658363 Mpixels/sec
    145.090807 frames/sec - 161.921341 Mpixels/sec
    121.980878 frames/sec - 136.130660 Mpixels/sec
    mariusz@Aspire:~$

Oczywiście jest to tylko przykład, jakie osiągi posiadają moje karty graficzne: zintegrowana z procesorem i5 Intel® HD Graphics 3000 (Sandy Bridge) oraz dedykowana karta graficzna nVidia GT540M CUDA (2 GB).

Poza tym możemy, także sprawdzić, że dzięki temu programowi całkowicie wyłączona jest karta graficzna Nvidia, bo jak wiadomo czemu, żeby po prostu móc dłużej pracować na baterii. Tak więc otwieramy konsole i wpisujemy taką formułę:


sudo lshw -c display

mariusz@Aspire:~$ sudo lshw -c display
[sudo] password for mariusz: 
  *-display               
       description: VGA compatible controller
       product: 2nd Generation Core Processor Family Integrated Graphics Controller
       vendor: Intel Corporation
       physical id: 2
       bus info: pci@0000:00:02.0
       version: 09
       width: 64 bits
       clock: 33MHz
       capabilities: msi pm vga_controller bus_master cap_list rom
       configuration: driver=i915 latency=0
       resources: irq:42 memory:d1400000-d17fffff memory:c0000000-cfffffff ioport:3000(size=64)
mariusz@Aspire:~$ 

Wyniku tego polecenia wyświetli się nam własnie taki powyższy komunikat, w którym będzie pokazane, że używamy wyłącznie zintegrowaną kartę graficzną Intel. W tym momencie druga karta jest niewidoczna przez system, a jeśli chcemy uruchomić jakiś program na tejże karcie graficznej (Nvidia), to w konsoli wpisujemy np. :


optirun gedit  

Dlaczego?

Bowiem, że po sieci krążą różne poradniki na temat, jak używać hybrydowe karty graficzne pod Linuksem. Nie do końca poprawnie i wyczerpująco opisujące, to zagadnienie lub są po prostu źle przetłumaczone z języka angielskiego. Niektórzy pewnie posiadają jakąś super teoretyczną wiedzę, ale to nie ma nic wspólnego z praktyką. Toteż mam nadzieję, że komuś przyda się mój przepis testowany na własnej skórze. Tym bardziej, że jak na razie jest cicho sza, jeśli chodzi o Hybrid Graphics for Linux i trzeba właśnie tak kombinować. Może przyłożą się w końcu do roboty i w najbliższej przyszłości się to zmieni, czyli będzie to pełna automatyka, tak jak w najnowszych systemach Windows.

Pozdrawiam.