Jak mogę uzyskać nVidia CUDA lub OpenCL działające na laptopie z dyskretną kartą nVidia / Intel Integrated Graphics?

28

Tło: Jestem artystą 3D (jako hobby) i niedawno zacząłem używać Ubuntu 12.04 LTS jako podwójnego rozruchu z Windows 7. Działa na moim dość nowym 64-bitowym laptopie Toshiba z procesorem graficznym nVidia GeForce GT 540M ( karta graficzna). Ma też jednak zintegrowaną grafikę Intel (którą, jak podejrzewam, używa Ubuntu).

Tak więc, gdy renderuję sceny 3D na obrazy w systemie Windows, mogę wybierać między użyciem procesora lub karty graficznej nVidia (szybciej). Z aplikacji 3D mogę ustawić procesor graficzny tak, aby używał CUDA lub OpenCL. W Ubuntu nie ma opcji GPU.

Po przeprowadzeniu (za dużo?) Badań problemów z Linuksem i technologią nVidia Optimus jestem nieco bardziej oświecony, ale o wiele bardziej zdezorientowany.

Nie obchodzi mnie ani technologia Optimus, ponieważ żywotność baterii nie jest dla mnie żadnym problemem.

Oto moje pytanie: Co mogę zrobić, aby móc korzystać z programów korzystających z CUDA (takich jak Blender) na mojej GPU nVidia w Ubuntu? Czy będę potrzebował sterowników nVidia? (Słyszałem, że nie ładnie grają z ustawieniami Optimusa w systemie Linux). Czy jest przynajmniej sposób na użycie OpenCL na moim GPU w Ubuntu?

Peter Cassetta
źródło

Odpowiedzi:

27

Właśnie przeprowadziłem eksperymenty i mogę potwierdzić stwierdzenia Erica Applemana, że ​​Bumblebee nie jest konieczny dla CUDA. (więcej o Bumblebee : czy Ubuntu obsługuje NVIDIA GeForce z technologią Optimus? )

Jednak, gdy trzeba pokazać przykłady graficznych przy użyciu OpenGL, możesz zrobić coś jak Bumblebee systemów Optimusa, w przeciwnym razie albo nie widać nic na ekranie lub pojawia się błąd:

ERROR: Support for necessary OpenGL extensions missing.

Podczas uruchamiania programu CUDA musisz zainstalować zestaw narzędzi CUDA i sterownik nvidia. Jeśli zamierzasz kompilować programy, potrzebujesz również zestawu SDK. Instalatory można znaleźć na stronie http://developer.nvidia.com/cuda-downloads , przeczytaj poniższe instrukcje przed schowaniem laptopa Optimus.

Instalowanie CUDA

Kierowca

Zalecam instalację sterownika nvidia z menedżera pakietów Ubuntu. Jeśli zainstalujesz Bumblebee, nie musisz martwić się o sterownik. W przeciwnym razie, po instalacji, wyłączyć biblioteki nvidia opisane na https://askubuntu.com/a/107746/6969 . Jeśli nie to zrobić, będziesz tracić 3D acceleraration a może utknąć w niskiej rozdzielczości.

zestaw narzędzi

Zasadniczo musisz pobrać instalator, uczynić go wykonywalnym i uruchomić. - Pobierz instalator. W chwili pisania tego tekstu 4.2.9 jest najnowszym sterownikiem. Jak mam 64-bitowy system operacyjny, używam 64-bitowy pakiet 11,04 Ubuntu (chociaż biegnę 12.04) - Zrób to wykonywalny i umożliwiają instalację do /usr/local/cuda:

chmod +x cudatoolkit_4.2.9_linux_64_ubuntu11.04.run
sudo ./cudatoolkit_4.2.9_linux_64_ubuntu11.04.run

Gdy pojawi się komunikat instalacyjny z pytaniem, gdzie zainstalować CUDA, po prostu naciśnij Enter, aby zaakceptować wartość domyślną /usr/local/cuda:

......................................
Enter install path (default /usr/local/cuda, '/cuda' will be appended):

Po instalacji wydrukuje kilka komunikatów sugerujących umieszczenie katalogu biblioteki cuda w ścieżce wyszukiwania biblioteki:

========================================

* Please make sure your PATH includes /tmp/cuda/cuda/bin
* Please make sure your LD_LIBRARY_PATH
*   for 32-bit Linux distributions includes /tmp/cuda/cuda/lib
*   for 64-bit Linux distributions includes /tmp/cuda/cuda/lib64:/tmp/cuda/cuda/lib
* OR
*   for 32-bit Linux distributions add /tmp/cuda/cuda/lib
*   for 64-bit Linux distributions add /tmp/cuda/cuda/lib64 and /tmp/cuda/cuda/lib
* to /etc/ld.so.conf and run ldconfig as root

* Please read the release notes in /tmp/cuda/cuda/doc/

* To uninstall CUDA, remove the CUDA files in /tmp/cuda/cuda
* Installation Complete

Możesz pominąć ten krok, jeśli chcesz, ale potem musisz ustawić go LD_LIBRARY_PATH=/usr/local/cuda/lib64:/usr/local/cuda/lib:$LD_LIBRARY_PATHpóźniej podczas uruchamiania programu.

SDK

Jeśli chcesz mieć możliwość kompilacji aplikacji CUDA, możesz zainstalować zestaw SDK w podobny sposób, jak opisano powyżej. Pobierz, uruchom go i uruchom (nie jako root, np. Bez sudo!). Podczas kompilacji jego części musiałem wprowadzić pewne zmiany, aby NVIDIA_GPU_Computing_SDK/C/common/common.mk:

  • po około linii 189 OPENGLLIB := -lGL -lGLU -lX11 -lXi -lXmudodaj:

    OPENGLLIB += -L/usr/lib/nvidia-current -L/usr/lib32/nvidia-current
    
  • po około linii 271, swap ${RENDERCHECKGLLIB}z ${OPENGLLIB}takie, że wygląda tak:

    LIB += $(RENDERCHECKGLLIB) ${OPENGLLIB} $(PARAMGLLIB) ${LIB} -ldl -rdynamic
    
  • kilka (5) linii dalej, zrób to samo, ale -lcudateż usuń .
  • kilka (7) linii dalej, zrób to samo, co w linii 271.

Korzystanie z CUDA

CUDA nie potrzebuje do działania serwera X sterowanego przez nvidię. W takim przypadku możesz uruchomić swój losowy program testowy, taki jak:

LD_LIBRARY_PATH = / usr / lib / nvidia-current: / usr / lib32 / nvidia-current: $ LD_LIBRARY_PATH someComputallyIntensiveProgram

Jeśli nie dodałeś CUDA do ścieżki biblioteki, będziesz potrzebować:

LD_LIBRARY_PATH = / usr / lib / nvidia-current: / usr / lib32 / nvidia-current: / usr / local / cuda / lib64: / usr / local / cuda / lib: $ LD_LIBRARY_PATH someComputallyIntensiveProgram

(możesz usunąć z niego 32-bitowe ścieżki, jeśli twój program jest 64-bitowy).

Jeśli program CUDA ma coś do wyświetlenia za pomocą OpenGL, musisz użyć optirun:

 optirun blender

Lub jeśli nie masz CUDA dodanego do domyślnej ścieżki:

LD_LIBRARY_PATH = / usr / local / cuda / lib64: / usr / local / cuda / lib: $ LD_LIBRARY_PATH mikser optirun

Lekensteyn
źródło
Dzięki, dam ci nagrodę (ale zaakceptuję moją odpowiedź na Wiki Wiki).
Peter Cassetta
Ponadto 100 powtórzeń i opinia nie wyrażają dokładnie, jak bardzo doceniam twoją pracę nad projektem Bumblebee. Ty i twoi koledzy sprawili, że jest to świetne oprogramowanie. Więc dziękuję. :)
Peter Cassetta
2
Nie ma za co, mam nadzieję, że czas nagrodzi nas ostatecznym rozwiązaniem w postaci PRIME ze zaktualizowanym stosem xorg + mesa (lub Wayland?) :)
Lekensteyn
1
PRIME , Xorg jest serwerem graficznym odpowiedzialnym za wyświetlanie grafiki, Mesa jest dla OpenGL, Wayland jest możliwym następcą Xorg.
Lekensteyn,
1
Należy zauważyć, że CUDA wymaga minimalnego sterownika NVIDIA. Na przykład CUDA 6.5 wymaga co najmniej NVIDIA 340.21.
Yamaneko,
15

Oto pełna odpowiedź (na podstawie odpowiedzi Alexa Falappy i Lekensteyna ):

Rzeczywiście jest możliwe, aby procesory graficzne nVidia Optimus działały na CUDA na Ubuntu.

Trzmiel nie jest konieczny dla CUDA. (więcej o Bumblebee : czy Ubuntu obsługuje NVIDIA GeForce z technologią Optimus? )

Jednak, gdy trzeba pokazać przykłady graficznych przy użyciu OpenGL, możesz zrobić coś jak Bumblebee systemów Optimusa, w przeciwnym razie albo nie widać nic na ekranie lub pojawia się błąd:

ERROR: Support for necessary OpenGL extensions missing. 

Jeśli potrzebujesz programu intensywnie korzystającego z grafiki, takiego jak Blender, Bumblebee jest obecnie dobrym rozwiązaniem.

Przejdź do Instalowania CUDA, jeśli nie chcesz instalować Bumblebee (tj. Jeśli nie potrzebujesz OpenGL).
W przeciwnym razie czytaj dalej.

Instalowanie Bumblebee

Postępuj zgodnie z instrukcjami na stronie Jak dobrze działają laptopy z Nvidia Optimus?

Są one obecnie aktualizowane przez programistę Bumblebee.

Po zainstalowaniu Bumblebee i ponownym uruchomieniu będziesz mógł wybrać kartę graficzną, która będzie używana podczas uruchamiania programów za pomocą optirunprogramu.
Na przykład:

optirun blender

Aby szybko sprawdzić, czy wszystko działa poprawnie, użyj:

optirun glxspheres

Zobaczysz program z kolorowymi kulkami, jeśli wszystko działa poprawnie.

Sprawdź, czy ciąg dostawcy GL w terminalu zawiera słowo nvidia .
Jeśli uruchomisz tylko glxspheres, zobaczysz, że ciąg dostawcy zawiera kartę Intel.

Podczas uruchamiania programu CUDA musisz zainstalować zestaw narzędzi CUDA i sterownik nvidia. Jeśli zamierzasz kompilować programy, potrzebujesz również zestawu SDK. Instalatory można znaleźć na stronie http://developer.nvidia.com/cuda-downloads , przeczytaj poniższe instrukcje przed schowaniem laptopa Optimus.

Instalowanie CUDA

Kierowca

Zalecam instalację sterownika nvidia z menedżera pakietów Ubuntu. Jeśli zainstalujesz Bumblebee, nie musisz martwić się o sterownik. W przeciwnym razie, po instalacji, wyłączyć biblioteki nvidia opisane na https://askubuntu.com/a/107746/6969 . Jeśli tego nie zrobisz, stracisz przyspieszenie 3D i prawdopodobnie utkniesz w niskiej rozdzielczości.

zestaw narzędzi

Zasadniczo musisz pobrać instalator, uczynić go wykonywalnym i uruchomić. - Pobierz instalator. Na dzień 9 stycznia 2013 r. 5.0.35 jest najnowszym sterownikiem. Ponieważ mam 64-bitowy system operacyjny, korzystam z 64-bitowego pakietu Ubuntu 11.10 (chociaż korzystam z wersji 12.10) - uczyń go wykonywalnym i zezwól na instalację, aby /usr/local/cuda:

chmod +x cudatoolkit_5.0.35_linux_64_ubuntu11.10-1.run
sudo ./cudatoolkit_5.0.35_linux_64_ubuntu11.10-1.run

Gdy pojawi się komunikat instalacyjny z pytaniem, gdzie zainstalować CUDA, po prostu naciśnij Enter, aby zaakceptować wartość domyślną /usr/local/cuda:

......................................
Enter install path (default /usr/local/cuda, '/cuda' will be appended):

Po instalacji wydrukuje kilka komunikatów sugerujących umieszczenie katalogu biblioteki cuda w ścieżce wyszukiwania biblioteki:

========================================

* Please make sure your PATH includes /tmp/cuda/cuda/bin
* Please make sure your LD_LIBRARY_PATH
*   for 32-bit Linux distributions includes /tmp/cuda/cuda/lib
*   for 64-bit Linux distributions includes /tmp/cuda/cuda/lib64:/tmp/cuda/cuda/lib
* OR
*   for 32-bit Linux distributions add /tmp/cuda/cuda/lib
*   for 64-bit Linux distributions add /tmp/cuda/cuda/lib64 and /tmp/cuda/cuda/lib
* to /etc/ld.so.conf and run ldconfig as root

* Please read the release notes in /tmp/cuda/cuda/doc/

* To uninstall CUDA, remove the CUDA files in /tmp/cuda/cuda
* Installation Complete

Możesz pominąć ten krok, jeśli chcesz, ale potem musisz ustawić go LD_LIBRARY_PATH=/usr/local/cuda/lib64:/usr/local/cuda/lib:$LD_LIBRARY_PATHpóźniej podczas uruchamiania programu.

SDK

Jeśli chcesz mieć możliwość kompilacji aplikacji CUDA, możesz zainstalować zestaw SDK w podobny sposób, jak opisano powyżej. Pobierz, uruchom go i uruchom (nie jako root, np. Bez sudo!).

Korzystanie z CUDA

CUDA nie potrzebuje do działania serwera X sterowanego przez nvidię. W takim przypadku możesz uruchomić swój losowy program testowy, taki jak:

LD_LIBRARY_PATH = / usr / lib / nvidia-current: / usr / lib32 / nvidia-current: $ LD_LIBRARY_PATH someComputallyIntensiveProgram

Jeśli nie dodałeś CUDA do ścieżki biblioteki, będziesz potrzebować:

LD_LIBRARY_PATH = / usr / lib / nvidia-current: / usr / lib32 / nvidia-current: / usr / local / cuda / lib64: / usr / local / cuda / lib: $ LD_LIBRARY_PATH someComputallyIntensiveProgram

(możesz usunąć z niego 32-bitowe ścieżki, jeśli twój program jest 64-bitowy).

Jeśli program CUDA ma coś do wyświetlenia za pomocą OpenGL, musisz użyć optirun:

 optirun blender

Lub jeśli nie masz CUDA dodanego do domyślnej ścieżki:

LD_LIBRARY_PATH = / usr / local / cuda / lib64: / usr / local / cuda / lib: $ LD_LIBRARY_PATH mikser optirun

Instalowanie wersji Blendera

(Ze wstępnie skompilowanymi jądrami CUDA)

Po uruchomieniu optirun blendermożesz otrzymać komunikat z Blendera, informujący, że kompilacja jądra CUDA nie powiodła się, oraz komunikat w terminalu podobny do następującego:

Compiling CUDA kernel ...
nvcc warning : Option '--opencc-options (-Xopencc)' is obsolete and ignored, when
targeting compute_20, sm_20, or higher
gcc: error trying to exec 'cc1plus': execvp: No such file or directory
CUDA kernel compilation failed, see console for details.

Jeśli chcesz użyć funkcji renderowania GPU Blendera, możesz potrzebować kompilacji Blendera ze wstępnie skompilowanymi jądrami CUDA. Wszystkie wersje z Blender.org mają wstępnie skompilowane jądra CUDA; kompilacje ppa: cheleb / blender-svn ( więcej informacji na to pytanie ) nie.

Aby zainstalować oficjalną wersję Blendera, po prostu postępuj zgodnie z instrukcjami zawartymi w tej odpowiedzi .

Jeśli zainstalowałeś Blendera /usr/lib/blender, powinieneś być w stanie uruchomić Blendera z terminala i używać renderowania GPU z:

 optirun '/usr/lib/blender/blender'
Peter Cassetta
źródło
Najnowsze wersje Bumblebee (zainstalowane z trzmiela / stabilnego PPA) nie wymagają usermodpolecenia. Będę aktualizował instrukcje instalacji na stronie askubuntu.com/a/36936/6969 , więc prosimy o link do tego postu zamiast kopiowania instrukcji instalacji.
Lekensteyn,
@Lekensteyn Dobra, gotowe!
Peter Cassetta
2

Obsługa grafiki hybrydowej (zwykle grafiki zintegrowanej Intela i oddzielnej grafiki Nvidii) w Linuksie jest obecnie nieco kłopotliwa. Coś powoli przesuwa się w polu serwera X, ale nie wstrzymuj oddechu.

Jak zgadłeś, Bumblebee jest obecnie dobrą drogą.

Niedawno kupiłem laptopa Asus N55 z grafiką Intel / Nvidia. Udało mi się uzyskać renderer Blender Cycles do korzystania z CUDA.

Kiedy zainstalowałem Ubuntu 12.04, domyślnie korzystał ze zintegrowanej grafiki poprzez sterownik karty graficznej Intel. Sterownik karty graficznej noveau nie powinien zostać zainstalowany.

Potem otworzyłem terminal i:

sudo add-apt-repository ppa:bumblebee/stable
sudo apt-get update
sudo apt-get install bumblebee bumblebee-nvidia

Następnie zrobiłem (zgodnie z instrukcjami instalacji):

sudo usermod -a -G bumblebee $USER

Potem zrestartowałem się.

Aby wybrać sterownik, który ma być używany podczas uruchamiania programów, użyj programu optirun, na przykład:

optirun blender

Aby sprawdzić, czy wszystko działa poprawnie, użyj:

optirun glxspheres

I sprawdź, czy ciąg dostawcy GL zawiera słowo Nvidia. Jeśli zamiast tego uruchomisz:

glxspheres

Łańcuch dostawcy powinien zawierać słowo Intel

Alex Falappa
źródło
Czy muszę zainstalować sterowniki nVidia przed instalacją Bumblebee? Nie sądzę, na podstawie tego, jak sformułowałeś swoją odpowiedź. Dobrze też widzieć, że ktoś mógł używać CUDA na Ubuntu z kartą Optimus! Głosuję za tym, jak tylko otrzymam 15 powtórzeń. :)
Peter Cassetta
Okej, zainstalowałem Bumblebee. Użyłem optiruni mogę sprawdzić, czy Blender używał mojego procesora graficznego nVidia do renderowania widoku 3D. Jednak w Preferencjach użytkownika Blendera nie ma opcji „GPU”. Wyświetla tylko „CPU”. Zobacz ten zrzut ekranu . Czy będę musiał zainstalować dodatkowe sterowniki, aby korzystać z CUDA?
Peter Cassetta
1

Uważam, że aby uruchomić wszystkie przykłady CUDA, wykorzystując trzmiel, trzeba zainstalować sterowniki 295.40 z tutaj i podczas instalacji wybrać, aby nie przesłaniaćconfig x11 .

Następnie musisz użyć tego samego sterownika, aby skompilować przykłady i uruchomić program.

olmer
źródło