NVIDIA Prime과 함께 CUDA를 사용하는 방법


10

나는 웹 전체에서 이것에 대해 십여 개의 게시물을 찾았지만 그들 중 누구도 실제로 질문에 대답하지 않습니다.

디스플레이를 구동하지 않고 계산 만 수행하도록 nvidia GPU를 설정하고 싶습니다. 그러나 nvidia-prime 구성에서 Intel GPU 사용으로 전환하면 더 이상 nvidia 모듈을로드 할 수 없습니다.

modprobe: ERROR: could not insert 'nvidia_352': No such device

모듈이 없으면 CUDA가 작동하지 않습니다.

그렇다면 nvidia-prime이 정확히 무엇을 수행하면 모듈을로드 할 수 없습니까? 블랙리스트에 없습니다. xorg.conf 파일이 없으므로 시스템에서 별개의 파일 대신 인텔 GPU를 사용하는 방법을 어떻게 알 수 있습니까?

Ubuntu 14.04 공장 출하시 설치된 Dell 5510 Precision을 사용하고 있으며 GPU는 Quadro M1000M입니다.

일부는 꿀벌 사용을 제안하지만 순수한 컴퓨팅로드에는 필요하지 않습니다.

또한 범블비는 모듈을로드 할 수 있습니다. 정확히 무엇을하고 있습니까?

업데이트 : 그래서 왜 질문을 알아 내려고 몇 시간 후에 질문을 게시 할 때 항상 답을 찾는 것처럼 보입니다. 이것은 실제로 부분적인 대답이지만, 나는 무언가에 달려 있습니다.

지금까지 나는 소수가 적어도 두 가지 일을한다고 결정했습니다.

  • bbswitch를 사용하여 GPU를 끕니다.
  • /etc/ld.so.conf.d/x86_64-linux-gnu_GL.conf에 대한 대안 을 변경합니다 .

bbswitch 를 사용 하여 GPU를 다시 켜서 NVIDIA 모듈을로드 할 수 있습니다.

그러나 여전히 의문의 여지가 남아 있습니다. 계산을 위해서만 NVIDIA 카드를 사용하도록 시스템을 구성하는 가장 좋은 방법은 무엇입니까?

Intel GPU를 사용하도록 nvidia-prime을 설정하고 CUDA를 작동시키는 데 도움이 된 것을 수동으로 풀어야합니까?

시스템이 여전히 디스플레이에 인텔 GPU를 사용하도록하려면 어떻게해야합니까?

NVIDIA 프라임을 비활성화하고 수동으로 구성하는 방법은 무엇입니까?

아니면 Bumblebee와 optirun을 포기하고 사용해야합니까? 이것의 단점은 무엇입니까?

어떤 추천?


NVIDIA X Server 설정 앱에서 GPU의 디스플레이를 비활성화 할 수 있습니까?
Roger Dahl

NVIDIA 유틸리티를 사용하면 Intel 및 NVIDIA GPU 중에서 선택할 수 있습니다. 디스플레이에 사용할 카드와 같이 세밀한 설정을 제공하지 않습니다.
orodbhen

답변:


5

필자의 경우 NVidia 카드가 실제로 꺼져 있지 않은 것으로 나타 났으며 CUDA 코드를 실행하기 위해 실제로 수행해야 할 유일한 작업은 다음과 같습니다.

export LD_LIBRARY_PATH=/usr/lib/nvidia-352

셸을 실행하려는 곳에서 (전 세계에서 대안 설정을 변경하면 compiz 등이 깨질 것이라고 가정합니다 ...)

이 시점에 도달하려면 (Ubuntu 14.04, CUDA 7.5 및 GTX 980이 설치된 Dell Optiplex 7010에서) 단계는 다음과 같습니다.

  1. PRIME 프로파일 탭을 사용하여 인텔을 선택하십시오.
  2. 재부팅하고 BIOS에서 Intel을 기본값으로 선택하십시오.
  3. 컴퓨터를 종료
  4. 온보드 비디오에 모니터를 연결하십시오. :)

지금까지 모든 것이 잘 작동하는 것 같습니다 (nvidia-smi는 카드를보고 cuda 샘플을 실행하고 theano는 카드를 사용합니다 등)


1
불행히도 일관된 솔루션이없는 것 같습니다. 그래서 실제로 후드에서 일어나는 일을 이해하고 싶었습니다.
orodbhen

2

원래 게시물 업데이트에 설명 된 것처럼 적어도 이것에 대한 궁극의 해결책을 찾았습니다. 실제로 두 가지 솔루션이 있지만 다른 솔루션이 있다고 확신합니다.

1-Prime in Intel 모드에서 bbswitch 를 통해 NVIDIA 카드를 다시 활성화 한 다음 실행 modprobe nvidia하여 모듈을로드하고 장치 노드를 만듭니다.

2-Bumblebee optirun을 사용하여 모든 CUDA 작업을 수행 할 수있는 bash 세션을 시작하십시오.

이 두 솔루션을 모두 사용하면 디스플레이에 온보드 그래픽을 사용할 수 있고 컴퓨팅로드에는 NVIDIA 카드를 사용할 수 있습니다. optirun 솔루션이 더 다양해 보이지만, 나는 미니멀리즘으로 첫 번째 솔루션을 선호합니다.

더 많은 이해를 가진 사람 이이 답변을 개선하기를 바랍니다.


첫 번째 옵션을 더 명확하게 설명 할 수 있습니까? bbswitch를 사용하여 카드를 켜고 끄는 방법은 무엇입니까?
Abonec

나는 실제로 꿀벌이 잘 작동하는 방법을 알아 냈고 시간이되면 답변을 업데이트 할 것입니다. 나는 기본적으로 이것을 따랐다 . 이 문서는 매우 간단하기 때문에 문서화가 잘되어 있지 않은 것이 실망 스럽습니다.
17시 orodbhen

2

CUDA 실행에만 NVIDIA 카드를 사용 하고이 접근법을 찾습니다.

항상 인텔 카드를 사용하고 명령으로 확인합니다 lspci | grep -E "VGA|3D".

00:02.0 VGA compatible controller: Intel Corporation Skylake Integrated Graphics (rev 06)
01:00.0 3D controller: NVIDIA Corporation GM107M [GeForce GTX 960M] (rev ff)

NVIDIA 카드의 해당 행에서 카드 (rev ff)가 꺼져 있음을 나타냅니다.

카드를 켜고 CUDA 계산에 사용하려면 다음 두 명령을 사용합니다.

sudo prime-select nvidia
sudo prime-switch

그 명령 lspci | grep -E "VGA|3D"보고서 후 :

00:02.0 VGA compatible controller: Intel Corporation Skylake Integrated Graphics (rev 06)
01:00.0 3D controller: NVIDIA Corporation GM107M [GeForce GTX 960M] (rev a2)

해당 행이 (rev a2)아닌 (rev ff)에 대한 알림 . 이제 카드를 계산할 준비가되었습니다.

계산 후 나는 뒤로 행동을 사용합니다 :

sudo prime-select intel
sudo prime-switch

그리고 lspci | grep -E "VGA|3D"보고서 :

00:02.0 VGA compatible controller: Intel Corporation Skylake Integrated Graphics (rev 06)
01:00.0 3D controller: NVIDIA Corporation GM107M [GeForce GTX 960M] (rev ff)

따라서 기본적으로 디스플레이를 실행하는 GPU를 전환하려면 프라임으로 전환 한 후에 다시 로그인해야합니까? 나는 그런 생각이 없었지만 말이됩니다. 물론 로그 아웃하거나 다시 시작하기 전에 다시 전환해야합니다.
orodbhen

이 방법을 사용합니다. Xorg와 firefox가 GPU를 사용하지 않도록 인텔 프로파일을 활성화하여 로그인합니다. 그런 다음 nvidia 프로파일로 전환하면 모든 CUDA 작업이 GPU에서 진행되며 메모리를 위해 firefox 및 Xorg와 경쟁 할 필요가 없습니다 :)!
John

0

허용 된 답변의 단계를 수행 한 후에도 여전히 문제를 발견 한 경우 다음을 시도하십시오.

echo "install bbswitch /bin/true" > /etc/modprobe.d/blacklist-bbswitch.conf
update-initramfs -u

bbswitch를 모두 비활성화합니다. 단점은 절전을 위해 NVIDIA 카드를 끌 수 없다는 것입니다 (Xorg는 여전히 통합 그래픽을 사용하는 한 prime-select intel).


0

작업하는 동안 crypto-currency를 광산으로 설정하는 egpu에서 씽크 패드 T420과 함께 1070 ti를 사용하고 있습니다. GPU는 이론적으로이 방법으로 몇 달 후에 비용을 지불합니다.

nvidia 387 내보내기 LD_LIBRARY_PATH = / usr / lib / nvidia-387에서 cuda를 사용하여 ethminer와 함께 작동한다는 것을 알았습니다.

그러나 "프라임 선택 인텔"이후에 시스템을 계속 작동시킬 수있는 유일한 방법은 선택을하고 로그 오프 할 때 두 번째 모니터를 카드에 꽂는 것입니다. 그렇지 않으면 "시스템이 낮은 그래픽 모드로 실행 중입니다"라는 오류 또는 계속 빈 화면이 나타납니다. 물론 인텔 그래픽을 실행하여 로그인 할 때 GPU에 연결된 모니터는 아무것도 표시하지 않으므로 GPU에서 플러그를 뽑은 다음 시스템에 다시 연결하여 결투 모니터 설정을 실행해야합니다 .

gpu-manager가 bbswitch가 작동하지 않는 것을 감지하고 xorg 구성을 삭제하기 때문이라고 생각합니다.

나는 비슷한 상황에 처한 소수의 사람들에게 해결 방법을 보여주기 위해 이것을 게시하고 있지만 모든 재부팅 할 때마다 케이블을 움직일 필요가 없기 때문에 누군가가 이것을 막을 생각이 있는지 확인하기 위해 불편.

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에서 / run / udc-fglrx-was-loaded 파일에 액세스 할 수 없음 / lib에서 fglrx 모듈 찾기 /modules/4.4.0-104-generic/updates/dkms /lib/modules/4.4.0-104-generic/updates/dkms에서 nvidia 모듈 찾기 nvidia 모듈을 찾았습니다 : nvidia_387_drm.ko nvidia가로드 되었습니까? 예 엔비디아가 언로드 되었습니까? 아니요 nvidia가 블랙리스트에 있습니까? 예 fglrx가로드 되었습니까? 아니오 fglrx가 언로드 되었습니까? 아니오 fglrx가 블랙리스트에 있습니까? 인텔이로드되어 있습니까? 예 라데온이 적재되어 있습니까? 아니오 라데온은 블랙리스트에 있습니까? 아니오 amdgpu가로드 되었습니까? 아니오 amdgpu는 블랙리스트에 있습니까? no nouveau가로드 되었습니까? nouveau는 블랙리스트에 있습니까? 예 fglrx 커널 모듈이 있습니까? nvidia 커널 모듈을 사용할 수 있습니까? 예 공급 업체 / 장치 ID : 8086 : 126 BusID "PCI : 0 @ 0 : 2 : 0"부트 vga입니까? 예 공급 업체 / 장치 ID : 10de : 1b82 BusID "PCI : conf 현재 핵심 대안 : (null) 현재 egl 대안 : /usr/lib/nvidia-387-prime/ld.so.conf nvidia가 활성화되어 있습니까? 아니요 nvidia egl이 활성화되어 있습니까? 아니오 fglrx가 활성화되어 있습니까? 아니요 메사가 활성화되어 있습니까? 아니요 메사 egl이 활성화되어 있습니까? pxpress가 활성화되어 있습니까? 프라임이 활성화되어 있습니까? 예 프라임 egl이 활성화되어 있습니까? 예 nvidia를 사용할 수 있습니까? 예 nvidia egl을 사용할 수 있습니까? 사용 가능한 fglrx가 있습니까? fglrx-core를 이용할 수 있습니까? 아니요 메사를 이용할 수 있습니까? 예 메사 egl을 사용할 수 있습니까? 예 pxpress를 사용할 수 있습니까? 아니오 프라임이 있습니까? 예 프라임 egl이 있습니까? Intel IGP가 감지되지 않음 Intel 하이브리드 시스템 Nvidia 드라이버 버전 387.34가 / sys / class / dmi / id / product_version = "ThinkPad T420"을 감지했습니다. / sys / class / dmi / id / product_name = "4236L23"첫 번째 시도 : 문제없는 bbswitch "load_state = -1 unload_state = 1"매개 변수 오류 : 가능 ' t / proc / acpi / bbswitch를 엽니 다. xorg.conf 제거. 경로 : /etc/X11/xorg.conf가 /usr/share/gpu-manager.d/hybrid-power-saving에 액세스 할 수 없음 현재 bbswitch 상태를 변경할 필요가 없습니다.

이 후 xorg.conf를 나노로 사용하면 비어 있습니다. 백그라운드에서 마이닝이 진행되는 모니터 스위치 트릭을 수행 한 후 이것을 게시하고 있으며 xorg.conf는 여전히 비어 있습니다. 그래서 내 생각에 어떤 이유로 모니터를 lightdm 재시작시 GPU에 연결 한 상태로 유지하면 xorg.conf가 삭제되었는지는 중요하지 않습니다. 어떤 아이디어?


또한 ... 나는 부팅시 계속해서 오류가 발생하기 때문에 위에서 제안한대로 bbswitch 블랙리스트를 작성했습니다. nvidia-384를 한두 번 사용하여 인텔 모드로 부팅 할 수 있었지만 마이닝에 문제가 있었고 1070 ti 지원이 nvidia-387에 추가 되었기 때문일 수 있습니다.
nhorning
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.