xserver에 대해 igpu를 구성하고 cuda에 대해 nvidia GPU를 구성하는 방법은 무엇입니까?


12

우분투 16.04

출력 uname -a:

Linux HOST 4.4.0-22-generic #40-Ubuntu SMP Thu May 12 22:03:46 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux

데스크탑 등급 :

  • CPU : 인텔
  • GPU : 361.42의 Nvidia

내가 원하는 것 :

  • 인텔 GPU는 온보드 DP에 연결된 xserver와 내 모니터를 실행합니다.
  • nvidia GPU는 CUDA 특정 계산 등에 대해서만 사용해야합니다.
  • nvidia GPU를 완벽하게 제어 (실시간, 통계, 온도 팬 속도 ...)

내 문제:

  • 어느 쪽 nvidia-sminvidia-settings작업과 내 엔비디아 GPU를 (오류가 더 아래를 인용된다) 통제 할 수없는

내 이야기:

내 문제에 대한 짧은 요약 후에 주제로 뛰어 들고 싶습니다. Ubuntu 16.04가 출시 된 이후로 다음 사항을 고민하고 실패했습니다.

  • 인텔 GPU (i7 6700K)가 내 Xserver와 그에 관련된 모든 것을 구동하기를 원합니다.
  • 전용 nvidia GPU가 Cuda 기반 계산 등에 사용되기를 원합니다.
  • 문제가 해결 된 후 시스템에 둘 이상의 nvidia GPU를 추가 할 것입니다.

내 초기 상태에 대한 간단한 요약 :

apt-get을 통해 nvidia 및 인텔 전용 드라이버 (intel-microcode 및 nvidia-361.42)를 설치하고 mokutul --disable-validation을 통한 보안 부팅을 비활성화했습니다.
그런 다음 인텔 카드를 사용하도록 nvidia-prime을 설정했습니다.
그런 다음 인텔 gpu 및 인텔 드라이버가있는 화면이 하나만 포함되도록 xorg.conf를 편집했습니다. (필요한 경우 세부 정보 요청)
블렌더로 렌더링하기 위해 GPU를 테스트 할 때 gpu 및 nvidia 설정에 대한 통계를 얻을 수 없다는 점을 제외하고는 모든 것이 잘 보였습니다.

오류 :

sudo nvidia-smi
NVIDIA-SMI couldn't find libnvidia-ml.so library in your system. Please make sure that the NVIDIA Display Driver is properly installed and present in your system:
Please also try adding directory that contains libnvidia-ml.so to your system PATH.

지금까지 내가 릴리스 이후의 모든 시도와 연구를 통해 배운 내용 (짧은 버전, 언제든지 자세한 내용 요청) :

내 두 가지 문제는 관련되어 있지만 동일하지는 않습니다.

Nvidia 설정 비우기 :

  • 이 설정은 nvidia GPU에 연결된 Xserver가있을 때만 표시되기 때문입니다
  • 이를위한 해결책은 xorg.conf에 새 화면을 추가하여 강제로 사용하지 않는 xserver를 nvidia GPU에서 실행하는 것입니다.
  • 그러나 nvidia GPU가 Cuda에 집중하기를 원하기 때문에 현재는 불가능합니다 (다른 문제 참조).

Nvidia-smi가 작동하지 않습니다.

  • 내 GPU (550ti)가 지원하지 않으므로 bbswitch는 문제가되지 않습니다 (dmesg의 오류)
  • nvidia prime는 x86_64-linux-gnu_gl_conf에 대한 항목을 /usr/lib/nvidia-361/ld.so.conf(nvidia GPU 선택) 또는 /usr/lib/nvidia-361-prime/ld.so.conf(Intel GPU 선택)으로 변경합니다
  • 인텔 선택 구성에 엔비디아 선택에 대한 conf에있는 필수 엔비디아 모듈에 대한 필수 경로가 누락되었습니다.
  • 프라임 셀렉트를 통해 엔비디아로 전환 할 때 디스플레이가 통합 GPU에 연결되어 있기 때문에 Xserver가 없지만 가상 콘솔에서 로그인하면 nvidia-smi가 작동합니다

내 가정 :

  • 엔비디아 프라임은 나쁘고 내가 원하는 방식을 원하지 않습니다.
  • 어떻게 든 프라임을 극복하고 시스템을 구성해야합니다 (새 구성을 수동으로 작성합니까?)

나의 시도 :

  • 나는 nvidia-prime을 제거하려고 시도했지만 나중에는 이것이 작동하지 않는다는 것을 인식했습니다. x86_64-linux-gnu_gl_conf의 conf 파일이 삭제되면 결과는 순수한 혼란입니다.
  • 심지어 x86_64-linux-gnu_gl_conf 파일에 누락 된 경로를 수동으로 추가하려고 시도했지만 실제로 내가하고있는 일을 알지 못했고 성공하지 못했습니다.

내 질문 :

1) nvidia-smi 문제를 어떻게 해결할 수 있습니까? 내가 올바른 길을 가고 있습니까? 누구든지 내가 어떻게 진행할 수 있는지 지침이 있습니까?

2) GPU에 Xserver없이 (xorg.conf의 GPU 화면없이) nvidia GPU (xorg.conf의 쿨 비트)에 대한 팬 제어 및 추가 제어를 활성화 할 수 있습니까?

모든 답변에 미리 감사드립니다. 나는 문자 그대로 웹을 빗질했습니다. 빗은 내 문제입니다.
중요한 것을 놓친 경우 알려주고 주저하지 말고 로그 파일 등을 요청하십시오.

감사

이미지

추가 드라이버 탭 이미지 : 여기에 이미지 설명을 입력하십시오


또한 런치 패드 질문을 작성했습니다. answers.launchpad.net/ubuntu/+question/294621
winnetou 2016 년

어쩌면 나는 설치 프로세스를 올바르게 설명하지 않았을 것입니다 : apt-get을 통해 nvidia-drivers를 설치 한 후에도 추가 드라이버가 선택되어 있으며 올바른 드라이버가 이미 선택되어 있습니다. 스크린 샷을 만들었습니다. 드라이버가 있으며 nvidia-prime을 Nvidia-Gpu로 전환하면 모든 것이 작동합니다. 이 설정을 변경하면 전체 드라이버, 실제로는 드라이버의 일부를 설치할 수 없으며 존재하지 않으면 작동하지 않습니다
winnetou

그것은 깨끗 한 우분투 16.04 설치 모든 부팅 때마다 업데이트 및 업그레이드 apt-get 그래서 최신 공식 업데이트가 설치 된 것 같아요
winnetou

엔비디아 GPU에서 CUDA를 사용할 수 있으므로 시스템에서 드라이버를 사용한다는 것을 알고 있습니다. 내가 제대로 내 문제를 이해하지만 모든 엔비디아 모듈은 .... 그 엔비디아 SMI 그래서 예를 들어 미스 libs와 위해, 부팅시로드하지
winnetou

답변:


4

허용 된 답변은 X 서버를 사용하여 Nvidia 장치를 활성화합니다. 이것은 필요하지 않으며 X 서버가 카드의 일부 메모리를 사용함을 의미합니다.

대신 nvidia-modprobe드라이버 FAQ에 설명 된대로 설치해야합니다 (아래 링크에서 찾을 수 있음).

따라서 권장되는 솔루션은 다음과 같습니다.

1) ftp://download.nvidia.com/XFree86/Linux-x86_64/ 에서 --no-opengl-files및 파일 과 함께 runfile을 통해 최신 Nvidia 드라이버를 설치하십시오 --dkms.
2) 대응하는 설치 nvidia-modprobe를 통해 버전 make allsudo make install에서 ftp://download.nvidia.com/XFree86/nvidia-modprobe/

--dkms플래그는 커널을 업그레이드 할 때 커널 모듈이 재 컴파일되도록합니다.


이것은 나를 위해 일했습니다. 이것은 가장 간단한 답변이며 허용되는 답변이어야합니다.
Marko Avlijaš

이 솔루션은 저에게 효과적이지 않았습니다. 대신 드라이버를 정상적으로 설치하고 아래에 언급 된 것처럼 LD_LIBRARY_PATH에 nvidia 경로를 추가했습니다 .
revers

3

나는 (이 게시물의 작성자) 내가 필요로하는 솔루션을 찾았습니다!

이제 비슷한 상황에 있고이 도움이 필요한 다른 사람을위한 해결책을 설명하겠습니다!

해결 방법 : http://www.nvidia.com/object/unix.html FLAG "--no-opengl-files"에
제공된 실행 파일을 통해 NVIDIA 드라이버를 설치 하십시오 !!

이것은 nvidia opengl 파일이 기존 mesa 파일을 덮어 쓰는 것을 방지 할뿐만 아니라 nvidia 프라임없이 드라이버를 설치합니다 !!

따라서 저장소에서 드라이버를 설치하는 대신 수동으로 드라이버를 설치하면 모든 문제가 해결됩니다. 리포지토리의 패키지는 "Optimus-Friendly"이므로 모든 쓸모없는 문제 해결사와 함께 제공됩니다.

둘째로

xorg.conf는 전용 GPU에 대한 또 다른 화면으로 확장되어 엔비디아 설정에 항목이 있거나 있어야합니다.

내 것은 이렇다

Section "ServerLayout"
    Identifier     "Layout0"
    Screen 0       "intel" 0 0
    Screen 1       "nvidia550ti" 3000 0
EndSection

Section "Device"
    Identifier     "intel"
    Driver         "intel"
    BusID          "PCI:0@0:2:0"
EndSection

Section "Device"
    Identifier     "nvidia550ti"
    Driver         "nvidia"
    BoardName      "GeForce GTX 550ti"
    BusID          "PCI:2@0:0:0"
EndSection

Section "Screen"
    Identifier     "intel"
    Device         "intel"
EndSection

Section "Screen"
    Identifier     "nvidia550ti"
    Device         "nvidia550ti"
    Option         "AllowEmptyInitialConfiguration" "on"
    Option         "Coolbits" "4"
    Option         "ConstrainCursor" "on"
EndSection

1
안녕. leezu의 답변이 더 간단하고 아마도 그 것을 받아 들여야합니까?
Marko Avlijaš

leezu의 답을 아직 확인할 수는 없지만 내 눈에는 매우 유망합니다. 그것이 효과가 있다고보고하는 사람들이 더 있거나 최종적으로 그의 답변을 테스트하여 확인할 수 있으면 허용 된 답변을 변경하겠습니다. 그는 카드에서 x 서버를 실행하지 않으면 nvidia-modprobe가 작동하지 않는 문제를 해결합니다.
winnetou

기존의 모든 nvidia 드라이버를 제거하고 다시 시작하면 작동하지 않습니다. 이 말 NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver. Make sure that the latest NVIDIA driver is installed and running.
AfzalivE

1

원하는 구성을 얻었습니다 (나도 원했습니다).

  • 인텔 GPU는 온보드 DP에 연결된 xserver와 내 모니터를 실행합니다.
  • nvidia GPU는 CUDA 특정 계산 등에 대해서만 사용해야합니다.
  • nvidia GPU를 완벽하게 제어 (실시간, 통계, 온도 팬 속도 ...)

를 사용하여 bumblebee.

그러나 몇 가지 세부 사항을 살펴보기 전에 nvidia-settings 또는 xorg.conf 또는 nvidia prime의 구성을 변경할 때 시스템을 재부팅해야한다는 것을 경고해야합니다 (아마도 이미 알고 있음). 재부팅하지 않으면 시스템이 일관되지 않은 상태가 될 수 있습니다.


내 구성에서 나는 만지지 않았다 xorg.conf. 나를 위해 그렇게하는 것은 항상 고통의 근원이었습니다. 원래 상태로 두십시오. 새로 설치하지 않으려면 /etc/X11/( ls /etc/X11/xorg.conf*) 에서 일부 백업을 찾을 수 있습니다 .

첫 번째 단계는 nvidia-settings작업을 시도하는 것 입니다. 그렇게하면 이미 언급했듯이 nvidia PRIME을 사용하여 인텔 GPU로 전환 할 수 있습니다. CUDA 계산에만 NVIDIA GPU를 사용하려면 인텔 GPU에 엔비디아 프라임 포인트가 있어야합니다 (특히 cuda 디버거를 사용하려는 경우 필요 cuda-gdb).

그 후 당신은 땅벌 을 설치하려고 할 수 있습니다 :

sudo apt install bumblebee

재부팅하십시오. 당신은을 사용하여 땅벌의 상태를 모니터링 할 수 있습니다

sudo service bumblebeed status

또는

bumblebeed -vv

범블비는 NVIDIA GPU를 활성화하고 필요한 경우에만 커널에 엔비디아 드라이버를 삽입하려고합니다. optirun실행하려는 명령 앞에 미리 Bumblebee를 사용할 수 있습니다 .

범블비가 작동하도록하려면 /etc/bumblebee/bumblebee.confNVIDIA 드라이버 이름과 경로를 올바르게 설정하기 위해 수동으로 편집 해야했습니다.

[...]
Driver=nvidia
[...]
KernelDriver=nvidia_361
[...]
LibraryPath=/usr/lib/nvidia-361:/usr/lib32/nvidia-361

그런 다음, sudo service bumblebeed restartBumblebee 시스템을 활성화했습니다.

사실에서 nvidia-smi반환

$ nvidia-smi
NVIDIA-SMI couldn't find libnvidia-ml.so library in your system. Please make sure that the NVIDIA Display Driver is properly installed and present in your system:
Please also try adding directory that contains libnvidia-ml.so to your system PATH.

그러나 optirun nvidia-smi:

$ optirun nvidia-smi
Fri Jun 17 11:47:48 2016       
+------------------------------------------------------+                       
| NVIDIA-SMI 361.42     Driver Version: 361.42         |                       
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  GeForce GTX 970M    Off  | 0000:01:00.0     Off |                  N/A |
| N/A   53C    P1    18W /  N/A |     18MiB /  3071MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID  Type  Process name                               Usage      |
|=============================================================================|
|    0     20678    G   /usr/lib/xorg/Xorg                               4MiB |
+-----------------------------------------------------------------------------+

도움이 되었기를 바랍니다.


좋은 대답입니다! 그러나 우분투 15.10과 동일한 하드웨어로 Bumblebee를 피곤하게 만들었습니다. 16.04를 사용할 수있게 된 후 새로 설치했습니다. 정말로 더 나빴다. 복구 모드조차 제대로 부팅되지 않았습니다. 그래서 나는 더 이상 꿀벌을 사용하지 않기로 맹세했습니다. 땅벌의 또 다른 문제였다 나는 오류를 가지고 있도록 GPU가 제대로 끌 수 couln't 것을, 내 전용 GPU가 bbswitch를 지원하지 않습니다 (당신이 우회하는 방법을 모르겠어요)이었다
winnetou

그러나 이것은 이론적으로 가능한 대답입니다! 그러나 내가 찾고있는 것은 아닙니다 :(.
winnetou

다른 BUT : (내 시도에서 효과가 있다면 더 이상 모르겠습니다) nvidia-settings는 GPU를 보여줍니다 (스도 optirun nvidia-settings)? 팬 속도, 전압 등을 제어 할 수 있습니까? 올바르게 기억한다면 xorg.conf 파일에서 coolbits를 활성화 한 후에 만이 설정을 nvidia 설정에서만 사용할 수 있습니다. nvidia-smi는 모니터 만 제공합니다 ..... 내가 틀렸다면 수정하십시오
winnetou

그리고 또 다른 큰 물음표는 : 전용 GPU가 둘 이상인 경우 Bumblebee가 제대로 작동합니까? 이 유스 케이스 (igpu + gpu)는 비 모바일 GPU에서 벌집에 권장되지 않지만 둘 이상의 d-gpu를 갖는 것은 땅벌에 대한 새로운 이야기입니다.
winnetou 2016 년

@ winnetou 당신은 절대적으로 하나 이상의 GPU에 대해 옳습니다-좋은 질문입니다. 또 다른 문제는 nvidia-docker가 예상대로 작동하지 않는다는 것입니다.
vskubriev

1

위의 솔루션에서 언급했듯이 opengl없이 nvidia 드라이버를 다시 설치했지만 작동하지 않았습니다. 또한 이러한 솔루션은 드라이버의 일부 기능 (opengl)을 제거하기 때문에 만족스럽지 않습니다.

드라이버를 다시 설치할 필요가없는 훨씬 간단한 솔루션을 찾았습니다.

  • nvidia 드라이버를 정상적으로 설치했습니다
  • PRIME 프로파일을 사용하지 않는 nvidia-settings gui에서 인텔 그래픽 카드를 기본 GPU로 선택합니다.
  • 재부팅 후 nvidia-smi가 작동하지 않지만 라이브러리 경로에 / usr / lib / nvidia-387 을 추가하여 수정했습니다 .
    export LD_LIBRARY_PATH=/usr/lib/nvidia-387:$LD_LIBRARY_PATH

설치된 드라이버에 따라 라이브러리 경로에 다른 폴더 (예 : / usr / lib / nvidia-384) 를 추가해야 할 수도 있습니다 . ~ / .bashrc
파일에이 명령을 추가 하여 새 bash를로드 할 때 경로를 자동으로 내보낼 수 있습니다.


nvidia 드라이버를 업그레이드하면 어떻게됩니까? 라이브러리 경로를 수동으로 변경해야합니까?
liang

드라이버가 여전히 같은 폴더에 있다면 이것이 문제가되지 않아야한다고 생각합니다. 폴더가 변경되면 라이브러리 경로를 변경해야합니다.
후진

0

우분투 18.04에서 렌더링을 위해 igpu를 사용하고 cuda를 위해 nvidia gpu를 사용하려면 기본 nvidia 드라이버를 설치하고 nvidia 설정을 열고 인텔 gpu를 사용하도록 설정하십시오. 그 후, nouveau 드라이버와 nvidia 드라이버의 일부를 차단하십시오 :

/etc/modprobe.d/blacklist-nvidia.conf를 열고 다음과 같은 방법으로 주석을 추가하십시오.

#blacklist nvidia
blacklist nvidia-drm
#blacklist nvidia-modeset
#alias nvidia off
alias nvidia-drm off
#alias nvidia-modeset off

그런 다음 /etc/modprobe.d/blacklist-nvidia-nouveau.conf를 열고 다음 행을 추가하십시오.

blacklist nouveau
options nouveau modeset=0

nouveau가 비활성화되어 있는지 확인하려면 /etc/modprobe.d/blacklist.conf에서도 블랙리스트에 올릴 수 있습니다.

#Blacklist nouveau drivers
blacklist nouveau
blacklist lbm-nouveau
alias nouveau off
alias lbm-nouveau off

그런 다음 재부팅하십시오.

입력 nvidia-smi엔비디아가로드 확인하고 입력 lspci -nnk | grep -iA2 3D사용 NVIDIA하고 있지 누보에서 드라이버를 확인합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.