xserver에 대해 igpu를 구성하고 cuda에 대해 nvidia GPU를 구성하는 방법은 무엇입니까? 원합니다. 전용 nvidia

우분투 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의 쿨 비트)에 대한 팬 제어 및 추가 제어를 활성화 할 수 있습니까?

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

감사

이미지

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



답변

허용 된 답변은 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플래그는 커널을 업그레이드 할 때 커널 모듈이 재 컴파일되도록합니다.


답변

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

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

해결 방법 : 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

답변

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

  • 인텔 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 |
+-----------------------------------------------------------------------------+

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


답변

위의 솔루션에서 언급했듯이 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를로드 할 때 경로를 자동으로 내보낼 수 있습니다.


답변

우분투 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하고 있지 누보에서 드라이버를 확인합니다.