Jak mogę uzyskać nVidia CUDA lub OpenCL pracując na laptopie z kartą dyskretną nVidia / zintegrowaną grafiką Intela?

25

Tło: Jestem artystą 3D (jako hobby) i niedawno zacząłem używać Ubuntu 12.04 LTS jako dual-boot z Windows 7. Działa na moim całkiem nowym 64-bitowym laptopie Toshiba z nVidia GeForce GT 540M GPU (karta graficzna). Ma jednak również zintegrowaną grafikę Intela (którą podejrzewam, że Ubuntu używa).

Tak więc, kiedy renderuję sceny 3D do obrazów w systemie Windows, jestem w stanie wybrać pomiędzy moim procesorem lub moim GPU nVidia (szybciej). Z aplikacji 3D mogę ustawić GPU na CUDA lub OpenCL. W systemie Ubuntu nie ma opcji GPU.

Po wykonaniu (zbyt wielu?) badań dotyczących problemów z Linuksem i technologią nVidia Optimus, jestem nieco bardziej oświecony, ale o wiele bardziej zagmatwany.

Nie przejmuję się ani trochę technologią Optimus, ponieważ żywotność baterii nie jest dla mnie żadnym problemem.

Oto moje pytanie: Co mogę zrobić, aby móc korzystać z programów wykorzystujących CUDA (takich jak Blender) na moim GPU nVidia w Ubuntu? Czy będę potrzebować sterowników nVidii? (Słyszałem, że nie grają ładnie z konfiguracjami Optimusa na Linuksie.) Czy istnieje przynajmniej sposób na wykorzystanie OpenCL na moim GPU w Ubuntu?

    
zadawane Peter Cassetta 04.05.2012, 17:22
źródło

4 odpowiedzi

13

Oto pełna odpowiedź (oparta na Alex Falappa i Odpowiedzi Lekensteyn'a :

Rzeczywiście, można uruchomić procesory graficzne nVidia Optimus w celu uruchomienia CUDA w systemie Ubuntu.

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

Jeśli jednak chcesz wyświetlać przykłady graficzne za pomocą OpenGL, musisz zrobić coś takiego jak Bumblebee dla systemów Optimus, w przeciwnym razie albo nic nie zobaczysz na ekranie, albo otrzymasz błąd:

ERROR: Support for necessary OpenGL extensions missing. 

Jeśli potrzebujesz intensywnego programu graficznego, takiego jak Blender, Bumblebee jest obecnie dobrym rozwiązaniem.

Przejdź do Instalowanie CUDA , jeśli nie chcesz instalować Bumblebee (tzn. 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 przy użyciu programu optirun .
Na przykład:

optirun blender

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

optirun glxspheres

Zobaczysz program z kolorowymi spinningującymi sferami, jeśli wszystko działa poprawnie.

Sprawdź, czy łańcuch 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 należy zainstalować zestaw narzędzi CUDA i sterownik nvidia. Jeśli chcesz skompilować programy, potrzebujesz także SDK. Instalatorów można znaleźć na linku , przeczytaj poniższe instrukcje, zanim zatkniesz swojego laptopa Optimus.

Instalowanie CUDA

Sterownik

Polecam zainstalować sterownik nvidia z menadżera pakietów Ubuntu. Jeśli zainstalujesz Bumblebee, nie musisz martwić się o sterownik. W przeciwnym razie po instalacji wyłącz biblioteki nvidii zgodnie z opisem w linku . Jeśli tego nie zrobisz, utracisz przyspieszenie 3D i prawdopodobnie utkniesz w niskiej rozdzielczości.

Toolkit

Zasadniczo musisz pobrać instalator, uczynić go wykonalnym i uruchomić.  - Pobierz instalator. Od 9 stycznia 2013 r. Najnowszy sterownik to 5.0.35. Ponieważ mam 64-bitowy system operacyjny, używam 64-bitowego pakietu 11.10 Ubuntu (chociaż używam wersji 12.10)  - Spraw, aby był wykonywalny i zezwól na instalację do /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, który zapyta, gdzie zainstalować CUDA, wystarczy nacisnąć Enter, aby zaakceptować domyślny /usr/local/cuda :

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

Po instalacji wypisze 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

Jeśli chcesz, możesz pominąć ten krok, ale później musisz ustawić LD_LIBRARY_PATH=/usr/local/cuda/lib64:/usr/local/cuda/lib:$LD_LIBRARY_PATH podczas uruchamiania programu.

SDK

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

Korzystanie z CUDA

CUDA nie potrzebuje do pracy serwera X napędzanego nvidią. W takim przypadku możesz uruchomić program testów losowych, 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ąć 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ć programu Optirun:

 optirun blender

Lub, jeśli nie dodałeś CUDA do domyślnej ścieżki:

  

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

Instalowanie kompilatora Blendera

(przy wstępnie skompilowanych jądrach CUDA)

Gdy uruchomisz optirun blender , możesz otrzymać wiadomość od Blendera mówiącą, że kompilacja jądra CUDA nie powiodła się i komunikat w terminalu jest 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ć wersji Blendera z wcześniej skompilowanymi jądrami CUDA. Kompilacje z Blender.org wszystkie mają wstępnie skompilowane jądra CUDA; ppa: cheleb / blender-svn builds ( 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 na /usr/lib/blender , powinieneś móc uruchomić Blendera z terminala i używać renderowania GPU z:

 optirun '/usr/lib/blender/blender'
    
odpowiedział Peter Cassetta 13.04.2017, 14:24
źródło
25

Właśnie przeprowadziłem pewne eksperymenty i mogę potwierdzić oświadczenia Erica Applemana, że ​​Bumblebee nie jest konieczne dla CUDA. (więcej o Bumblebee : Jest NVIDIA GeForce z technologią Optimus obsługiwaną przez Ubuntu? )

Jeśli jednak chcesz wyświetlać przykłady graficzne za pomocą OpenGL, musisz zrobić coś takiego jak Bumblebee dla systemów Optimus, w przeciwnym razie albo nic nie zobaczysz na ekranie, albo otrzymasz błąd:

ERROR: Support for necessary OpenGL extensions missing.

Podczas uruchamiania programu CUDA należy zainstalować zestaw narzędzi CUDA i sterownik nvidia. Jeśli chcesz skompilować programy, potrzebujesz także SDK. Instalatorów można znaleźć na linku , przeczytaj poniższe instrukcje, zanim zatkniesz swojego laptopa Optimus.

Instalowanie CUDA

Sterownik

Polecam zainstalować sterownik nvidia z menadżera pakietów Ubuntu. Jeśli zainstalujesz Bumblebee, nie musisz martwić się o sterownik. W przeciwnym razie po instalacji wyłącz biblioteki nvidii zgodnie z opisem w linku . Jeśli tego nie zrobisz, stracisz akcelerację 3D i prawdopodobnie utkniesz w niskiej rozdzielczości.

Toolkit

Zasadniczo musisz pobrać instalator, uczynić go wykonalnym i uruchomić.  - Pobierz instalator. W chwili pisania tego tekstu 4.2.9 jest najnowszym sterownikiem. Ponieważ mam 64-bitowy system operacyjny, używam 64-bitowego pakietu 11.04 Ubuntu (chociaż używam 12.04)  - Spraw, aby był wykonywalny i zezwól na 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, który zapyta, gdzie zainstalować CUDA, wystarczy nacisnąć Enter, aby zaakceptować domyślny /usr/local/cuda :

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

Po instalacji wypisze 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

Jeśli chcesz, możesz pominąć ten krok, ale później musisz ustawić LD_LIBRARY_PATH=/usr/local/cuda/lib64:/usr/local/cuda/lib:$LD_LIBRARY_PATH podczas uruchamiania programu.

SDK

Jeśli chcesz mieć możliwość kompilowania aplikacji CUDA, możesz zainstalować SDK w podobny sposób jak opisano powyżej. Pobierz, spraw, aby był wykonywalny i uruchom go (nie jako root, na przykład bez sudo !). Podczas kompilowania jego części musiałem wprowadzić kilka zmian w NVIDIA_GPU_Computing_SDK/C/common/common.mk :

  • po około linii 189, OPENGLLIB := -lGL -lGLU -lX11 -lXi -lXmu , dodaj:

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

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

Korzystanie z CUDA

CUDA nie potrzebuje do pracy serwera X napędzanego nvidią. W takim przypadku możesz uruchomić program testów losowych, 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ąć 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ć programu Optirun:

 optirun blender

Lub, jeśli nie dodałeś CUDA do domyślnej ścieżki:

  

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

    
odpowiedział Lekensteyn 08.05.2012, 16:49
źródło
2

Grafika hybrydowa (zazwyczaj zintegrowana grafika Intela i Nvidia dyskretna grafika) obsługiwana pod Linuksem jest obecnie nieco kłopotliwa. Coś powoli porusza się w polu serwera X, ale nie wstrzymuj oddechu.

Jak już się domyślasz, Bumblebee to obecnie dobra droga.

Niedawno kupiłem laptopa Asus N55 z grafiką Intel / Nvidia. Udało mi się przekonać program do renderowania w Blenderze do korzystania z CUDA.

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

Potem otworzyłem terminal i wykonałem:

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

Potem zrobiłem (zgodnie z zaleceniami instrukcji instalacji):

sudo usermod -a -G bumblebee $USER

Następnie uruchomiłem ponownie.

Aby wybrać sterownik, który będzie 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

Sprawdź, czy łańcuch dostawcy GL zawiera słowo Nvidia. Jeśli uruchomisz zamiast tego:

glxspheres

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

    
odpowiedział Alex Falappa 08.05.2012, 09:45
źródło
1

Uważam, że aby uruchomić wszystkie przykłady CUDA, używając Bumblebee, musisz zainstalować sterowniki 295.40 z tutaj i podczas instalacji wybierz, aby nie przesłonić config x11 .

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

    
odpowiedział olmer 28.08.2012, 16:28
źródło

Przeczytaj inne pytania na temat tagów