Znalazłem w Internecie pół tuzina postów, ale żaden z nich tak naprawdę nie odpowiedział na to pytanie.
Chcę skonfigurować mój procesor graficzny nvidia do wykonywania tylko obliczeń, a nie obsługiwać ekran. Ale kiedy przestawię się na używanie procesora graficznego Intel w konfiguracji nvidia-prime, nie mogę już załadować modułu nvidia.
modprobe: ERROR: could not insert 'nvidia_352': No such device
Bez modułu CUDA oczywiście nie działa.
Więc co dokładnie robi nvidia-prime, co uniemożliwia załadowanie modułu? To nie jest na czarnej liście. Nie ma pliku xorg.conf, więc skąd system wie, że używa procesora graficznego Intel zamiast dyskretnego?
Korzystam z Dell 5510 Precision z fabrycznie zainstalowanym systemem Ubuntu 14.04, a moim GPU jest Quadro M1000M.
Niektórzy sugerują użycie trzmiela, ale nie powinno to być konieczne w przypadku czystych obciążeń obliczeniowych.
Również najwyraźniej trzmiel jest w stanie załadować moduł. Co to właściwie robi?
Aktualizacja: Więc dlaczego zawsze wydaje się, że znajduję odpowiedź, kiedy w końcu publikuję pytanie, po wielu godzinach próbowania go znaleźć. To tylko częściowa odpowiedź, ale mam coś do zrobienia.
Do tej pory ustaliłem, że liczba pierwsza wykonuje co najmniej dwie rzeczy:
- Wyłącz GPU za pomocą przełącznika bbswitch.
- Zmienia alternatywy dla /etc/ld.so.conf.d/x86_64-linux-gnu_GL.conf.
Używając przełącznika bbswitch do ponownego włączenia GPU, mogę teraz załadować moduł NVIDIA.
Pozostaje jednak pytanie: jaki jest najlepszy sposób skonfigurowania systemu do używania karty NVIDIA tylko do obliczeń?
Czy powinienem ustawić nvidia-prime na korzystanie z procesora graficznego Intel i spróbować ręcznie rozwiązać problem z uruchomieniem CUDA?
Jak upewnić się, że system nadal korzysta z procesora graficznego Intel do wyświetlania?
Jak powinienem po prostu wyłączyć NVIDIA Prime i skonfigurować to wszystko ręcznie?
A może powinienem się poddać i używać Bumblebee i optirun? Jakie są tego wady, jeśli w ogóle?
Jakieś rekomendacje?
źródło
Odpowiedzi:
W moim przypadku stwierdziłem, że karta NVidia nie została faktycznie wyłączona, a jedyne, co musiałem zrobić, aby uruchomić kod CUDA, to:
w powłoce, w której chcę go uruchomić (zakładam, że globalna zmiana ustawienia alternatyw spowodowałaby uszkodzenie compiz itp.)
Aby dojść do tego punktu (na Dell Optiplex 7010, z Ubuntu 14.04, CUDA 7.5 i GTX 980), uważam, że kroki były następujące:
Wygląda na to, że do tej pory wszystko działało dobrze (nvidia-smi widzi kartę, uruchamia próbki cuda, theano używa karty itp.)
źródło
Wydaje mi się, że znalazłem przynajmniej pobieżne rozwiązanie tego problemu, jak opisano w aktualizacji mojego oryginalnego postu. Naprawdę znalazłem dwa rozwiązania, choć jestem pewien, że są inne.
1 - W trybie Prime w trybie Intel ponownie włącz kartę NVIDIA za pomocą przełącznika bbswitch , a następnie uruchom,
modprobe nvidia
aby załadować moduł i utworzyć węzły urządzenia.2 - Użyj Birblebee optirun, aby uruchomić sesję bash, z której możesz zrobić wszystkie swoje rzeczy z CUDA.
Oba te rozwiązania pozwalają na wykorzystanie wbudowanej grafiki do wyświetlania, przy użyciu karty NVIDIA do obliczeń obciążenia. Rozwiązanie optirun wydaje się bardziej uniwersalne, ale wolę pierwsze ze względu na minimalizm.
Mam nadzieję, że ktoś z większym zrozumieniem poprawi tę odpowiedź.
źródło
Używam karty NVIDIA tylko do wykonywania CUDA i sprawdzam to podejście:
Cały czas używam karty Intel i jest to potwierdzone przez polecenie
lspci | grep -E "VGA|3D"
:W odpowiednim wierszu dla karty NVIDIA powinieneś zobaczyć,
(rev ff)
że została wyłączona.Aby włączyć kartę i używać jej do obliczeń CUDA, używam dwóch następujących poleceń:
Po tym
lspci | grep -E "VGA|3D"
raporcie polecenia :Zauważ
(rev a2)
, że nie(rev ff)
w odpowiednim wierszu. Karta jest teraz gotowa do obliczeń.Po obliczeniach używam akcji wstecz:
I
lspci | grep -E "VGA|3D"
raporty:źródło
Jeśli po wykonaniu czynności podanych w odpowiedzi ktoś nadal znajdzie problemy, spróbuj wykonać następujące czynności:
Całkowicie wyłączy bbswitch. Wadą jest to, że nie będziesz w stanie wyłączyć karty NVIDIA w celu oszczędzania energii (Xorg nadal używa zintegrowanej grafiki, o ile
prime-select intel
).źródło
Używam 1070 Ti z Thinkpad T420 w egpu skonfigurowanym do wydobywania kryptowaluty podczas pracy. GPU teoretycznie zwróci się w ten sposób po kilku miesiącach.
Odkryłem, że z nvidią 387 eksport LD_LIBRARY_PATH = / usr / lib / nvidia-387 działał z ethminer przy użyciu cuda.
Jednak jedynym sposobem, w jaki mogłem sprawić, by system działał po „prime-select intel” było, gdybym miał drugi monitor podłączony do karty, kiedy dokonałem wyboru i wylogowałem się. W przeciwnym razie pojawia się błąd „System działa w trybie niskiej grafiki” lub ciągły pusty ekran. Oczywiście, kiedy loguję się z uruchomioną grafiką Intel, monitor podłączony do GPU nie wyświetla nic, więc muszę go odłączyć od GPU i podłączyć z powrotem do systemu (wyjście stacji dokującej DVI), aby uruchomić konfigurację monitora pojedynku .
Wierzę, że dzieje się tak, ponieważ gpu-manager wykrywa, że bbswitch nie działa, a następnie usuwa konfigurację xorg.
Zamieszczam to, aby pokazać obejście dla nielicznych, którzy mogą znajdować się w podobnej sytuacji, ale również, aby sprawdzić, czy ktoś ma pomysł, aby temu zapobiec, ponieważ przesuwanie tego kabla przy każdym ponownym uruchomieniu jest trochę niedogodność.
log_file: /var/log/gpu-manager.log
last_boot_file: / var / lib / ubuntu-drivers-common / last_gfx_boot new_boot_file: / var / lib / ubuntu-drivers-common / last_gfx_boot nie może uzyskać dostępu do pliku / run / udc-fglrx-was-load Szukanie modułów fglrx w / lib /modules/4.4.0-104-generic/updates/dkms Szukasz modułów nvidia w /lib/modules/4.4.0-104-generic/updates/dkms Znaleziono moduł nvidia: nvidia_387_drm.ko Czy nvidia jest załadowana? tak Czy NVIDIA została rozładowana? nie Czy NVIDIA jest na czarnej liście? tak Czy załadowano fglrx? nie Czy fglrx został rozładowany? nie Czy fglrx jest na czarnej liście? nie Czy dane Intel są załadowane? tak Czy ładowany jest Radeon? nie Czy Radeon jest na czarnej liście? nie Czy załadowano amdgpu? nie Czy amdgpu jest na czarnej liście? nie Czy załadowano nouveau? nie Czy nowa secesja jest na czarnej liście? tak Czy dostępny jest moduł jądra fglrx? nie Czy moduł jądra nvidia jest dostępny? tak Identyfikator dostawcy / urządzenia: 8086: 126 BusID „PCI: 0 @ 0: 2: 0” Czy boot vga? tak Identyfikator dostawcy / urządzenia: 10de: 1b82 BusID "PCI: conf Bieżąca podstawowa alternatywa: (null) Bieżąca alternatywa egl: /usr/lib/nvidia-387-prime/ld.so.conf Czy nvidia jest włączona? nie Czy nvidia egl jest włączona? nie Czy fglrx jest włączony? nie Czy mesa jest włączona? nie Czy mesa egl jest włączona? nie Czy pxpress jest włączony? nie Czy liczba pierwsza jest włączona? tak Czy włączona jest funkcja prime egl? tak Czy nvidia jest dostępna? tak Czy dostępna jest nvidia egl? nie Czy Fglrx jest dostępny? nie Czy dostępny jest rdzeń fglrx? nie Czy mesa jest dostępna? tak Czy mesa egl jest dostępna? tak Czy pxpress jest dostępny? nie Czy liczba pierwsza jest dostępna? tak Czy dostępna jest pierwsza wersja egl? nie wykryto Intel IGP System hybrydowy Intel Wykryto wersję 387.34 sterownika Nvidia / sys / class / dmi / id / product_version = "ThinkPad T420" / sys / class / dmi / id / product_name = "4236L23" Pierwsza próba: bbswitch bez dziwactwa Ładowanie bbswitch z Parametry „load_state = -1 unload_state = 1” Błąd: można ” t open / proc / acpi / bbswitch Usuwanie xorg.conf. Ścieżka: /etc/X11/xorg.conf nie może uzyskać dostępu /usr/share/gpu-manager.d/hybrid-power-saving Nie trzeba zmieniać obecnego stanu przełącznika
Jeśli po tym nano xorg.conf jest pusty. Publikuję to po wykonaniu sztuczki polegającej na zmianie monitora, z kopaniem w tle, a mój plik xorg.conf jest nadal pusty. Domyślam się więc, że z jakiegoś powodu, kiedy monitor jest podłączony do GPU przy ponownym uruchomieniu lightdm, nie ma znaczenia, że mój plik xorg.conf został usunięty. Jakieś pomysły?
źródło