Làm cách nào để định cấu hình igpu cho xserver và nvidia gpu cho cuda?


12

Ubuntu 16.04

Đầu ra của 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

Lớp máy tính để bàn:

  • CPU: Intel
  • GPU: Nvidia với 361,42

Những gì tôi muốn:

  • GPU intel sẽ chạy xserver và màn hình của tôi, được kết nối với DP trên bo mạch
  • GPU nvidia chỉ được sử dụng cho tính toán cụ thể của CUDA, v.v.
  • toàn quyền kiểm soát gv nvidia (thời gian thực, số liệu thống kê, tốc độ quạt tạm thời ...)

Vấn đề của tôi:

  • không phải nvidia-smivà cũng không nvidia-settingslàm việc và tôi không thể kiểm soát GPU nvidia của tôi (các lỗi được trích dẫn bên dưới)

Câu chuyện của tôi:

Sau phần tóm tắt ngắn gọn về vấn đề của tôi, tôi muốn đi sâu vào chủ đề; Kể từ khi phát hành Ubuntu 16.04, tôi đã mày mò và không đạt được những điều sau:

  • Tôi muốn GPU intel của tôi (i7 6700K) để điều khiển Xserver của tôi và mọi thứ được gắn vào nó.
  • Tôi muốn GPU nvidia chuyên dụng của tôi chỉ được sử dụng cho tính toán dựa trên Cuda và tương tự.
  • Tôi sẽ thêm nhiều GPU nvidia vào hệ thống, sau khi tôi giải quyết được vấn đề của mình.

Một bản tóm tắt ngắn về trạng thái ban đầu của tôi:

Tôi đã cài đặt Trình điều khiển độc quyền cho nvidia và intel (intel-microcode và nvidia-361.42) thông qua apt-get và vô hiệu hóa khởi động an toàn thông qua mokutul --disable-verify.
Sau đó, tôi đặt nvidia-Prime để sử dụng thẻ intel.
Sau đó, tôi chỉnh sửa xorg.conf của mình để chỉ chứa một màn hình với trình điều khiển intel gpu và intel. (hỏi chi tiết nếu cần)
Kiểm tra GPU để kết xuất với Blender, mọi thứ dường như đều ổn, ngoại trừ việc tôi không thể nhận được bất kỳ số liệu thống kê nào về cài đặt gpu và nvidia của mình.

Lỗi:

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.

Những gì tôi đã học được cho đến nay qua tất cả các nỗ lực và nghiên cứu của tôi kể từ khi phát hành (phiên bản ngắn, yêu cầu chi tiết bất cứ lúc nào):

Hai vấn đề của tôi có liên quan nhưng không giống nhau:

Nvidia-settings Trống:

  • điều này là do các cài đặt này chỉ hiển thị khi có Xserver được kết nối với GPU nvidia
  • giải pháp cho vấn đề này là thêm một màn hình mới trong xorg.conf để buộc và xserver không được sử dụng chạy trên GPU nvidia
  • nhưng điều này hiện không thể thực hiện được (xem vấn đề khác) và không mong muốn, vì tôi hoàn toàn muốn GPU nvidia tập trung vào Cuda

Nvidia-smi không hoạt động:

  • bbswitch không phải là vấn đề vì GPU của tôi (550ti) không hỗ trợ nó (lỗi trong dmesg)
  • nvidia Prime thay đổi mục nhập cho x86_64-linux-gnu_gl_conf thành /usr/lib/nvidia-361/ld.so.conf(nvidia GPU được chọn) hoặc /usr/lib/nvidia-361-prime/ld.so.conf(GPU intel được chọn)
  • cấu hình cho lựa chọn intel thiếu các đường dẫn thiết yếu đến các mô-đun nvidia thiết yếu, tất cả đều có trong conf cho lựa chọn nvidia
  • Khi chuyển sang nvidia qua Prime-select, tôi không có Xserver vì Màn hình được kết nối với GPU tích hợp, nhưng đăng nhập vào bảng điều khiển ảo nvidia-smi hoạt động

Giả định của tôi:

  • Nvidia Prime rất tệ và không muốn theo cách tôi muốn.
  • Tôi phải bằng cách nào đó khắc phục nguyên tố và cấu hình hệ thống (thậm chí tự viết cấu hình mới?)

Thử thách của tôi:

  • Tôi đã thử gỡ cài đặt nvidia-Prime nhưng tôi chỉ nhận ra sau đó, rằng điều này không thể hoạt động. Khi tệp conf cho x86_64-linux-gnu_gl_conf bị xóa, kết quả là một mớ hỗn độn ...
  • Tôi thậm chí đã thử thêm các đường dẫn bị thiếu vào các tệp x86_64-linux-gnu_gl_conf bằng tay, nhưng tôi thực sự không biết mình đang làm gì và không thành công.

Những câu hỏi của tôi:

1) Làm thế nào tôi có thể giải quyết vấn đề nvidia-smi? Có phải tôi đang trên đường ray bên phải không? Có ai có hướng dẫn làm thế nào tôi có thể tiến hành?

2) Có thể bật điều khiển quạt và điều khiển thêm cho nvidia gpu (coolbits trong xorg.conf) mà không cần Xserver trên gpu (không có màn hình cho gpu trong xorg.conf) không?

Rất cảm ơn trước cho bất kỳ trả lời. Tôi thực sự chải web, lược là vấn đề của tôi.
Nếu tôi bỏ lỡ bất cứ điều gì quan trọng, xin vui lòng cho tôi biết và đừng ngần ngại yêu cầu các tệp nhật ký, vv

CẢM ƠN

Hình ảnh Hình ảnh

trình điều khiển bổ sung của tôi: nhập mô tả hình ảnh ở đây


Tôi cũng đã tạo ra một câu hỏi bệ phóng: answers.launchpad.net/ubuntu/+question/294621
winnetou

có thể tôi đã không mô tả chính xác quá trình cài đặt của mình: sau khi cài đặt trình điều khiển nvidia qua apt-get cũng được kiểm tra Trình điều khiển bổ sung, như bạn đã nói và trình điều khiển chính xác đã được chọn. tôi bao gồm một ảnh chụp màn hình. các trình điều khiển có mặt và nếu tôi chuyển nvidia-Prime sang Nvidia-Gpu thì mọi thứ đều hoạt động. thay đổi cài đặt này không thể cài đặt toàn bộ trình điều khiển, thực sự là một phần của trình điều khiển và thậm chí sẽ không hoạt động mà không có hiện tại
winnetou

đó là bản cài đặt Ubuntu 16.04 sạch trên mỗi lần khởi động i Cập nhật và nâng cấp apt-get vì vậy tôi đoán tôi đã cài đặt các bản cập nhật chính thức mới nhất
winnetou

Tôi biết rằng các trình điều khiển được sử dụng bởi hệ thống, vì tôi có thể sử dụng CUDA trên GPU nvidia. Nhưng không phải tất cả các mô-đun nvidia đều được tải khi khởi động, do đó, ví dụ nvidia-smi nhớ libs .... NẾU tôi hiểu chính xác vấn đề của mình
winnetou

Câu trả lời:


4

Câu trả lời được chấp nhận sử dụng máy chủ X để kích hoạt các thiết bị Nvidia. Điều này là không cần thiết và có nghĩa là máy chủ X sẽ sử dụng một số bộ nhớ của thẻ.

Thay vào đó nvidia-modprobenên được cài đặt như mô tả trong Câu hỏi thường gặp về trình điều khiển (có thể được tìm thấy tại liên kết bên dưới).

Vì vậy, giải pháp được đề nghị của tôi là:

1) Cài đặt trình điều khiển Nvidia mới nhất thông qua runfile từ ftp://doad.nvidia.com/XFree86/Linux-x86_64/ với cờ --no-opengl-files--dkmscờ.
2) Cài đặt nvidia-modprobephiên bản tương ứng thông qua make allsudo make installtừ ftp://doad.nvidia.com/XFree86/nvidia-modprobe/

Các --dkmscờ đảm bảo rằng các mô-đun hạt nhân được biên dịch lại khi bạn nâng cấp hạt nhân của mình.


Điều này làm việc cho tôi. Đây là câu trả lời đơn giản nhất và nên là câu trả lời được chấp nhận.
Marko Avlijaš

Giải pháp này không hiệu quả với tôi. Thay vào đó, tôi chỉ cài đặt trình điều khiển bình thường và thêm đường dẫn nvidia vào LD_LIBRARY_PATH như được đề cập dưới đây.
đảo ngược

3

Tôi (người tạo ra bài đăng này) đã tự mình tìm ra giải pháp tôi cần!

Bây giờ tôi sẽ giải thích giải pháp cho bất kỳ ai khác có hoàn cảnh tương tự và cần sự giúp đỡ này!

GIẢI PHÁP:
CÀI ĐẶT NVIDIA DRIVER VIA RUNFILE ĐƯỢC CUNG CẤP TẠI http://www.nvidia.com/object/unix.html VỚI FLAG "--no-opengl-files" !!

Điều này ngăn không chỉ các tệp nvidia opengl ghi đè lên các tệp mesa hiện có mà còn cài đặt trình điều khiển mà không cần nvidia Prime !!

Vì vậy, tất cả các vấn đề của tôi đã được giải quyết, chỉ đơn giản bằng cách cài đặt trình điều khiển theo cách thủ công, thay vì cài đặt nó từ kho lưu trữ. Gói từ kho là "Optimus-Friendly" và do đó có tất cả những kẻ gây rối vô dụng đi kèm với nó.

Bí mật

xorg.conf phải được mở rộng với một màn hình khác dành cho (các) GPU chuyên dụng để nó / chúng có / có các mục trong cài đặt nvidia.

của tôi trông như thế này

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
Chào. Trả lời từ leezu đơn giản hơn và có lẽ bạn nên chấp nhận điều đó?
Marko Avlijaš

Tôi chưa thể xác nhận câu trả lời của leezu, mặc dù nó có vẻ rất hứa hẹn với mắt tôi. Nếu có nhiều người báo cáo rằng nó hoạt động, hoặc cuối cùng tôi có thể kiểm tra câu trả lời của anh ấy và có thể xác nhận, tôi sẽ thay đổi câu trả lời được chấp nhận. Anh ấy đã khắc phục vấn đề, rằng nvidia-modprobe không hoạt động nếu không có máy chủ x chạy trên thẻ đó.
winnetou

Điều này không hoạt động nếu bạn loại bỏ tất cả các trình điều khiển nvidia hiện có và bắt đầu lại. Nói điều này 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

Tôi đã nhận được cấu hình mà bạn muốn (tôi cũng muốn nó;)):

  • GPU intel sẽ chạy xserver và màn hình của tôi, được kết nối với DP trên bo mạch
  • GPU nvidia chỉ được sử dụng cho tính toán cụ thể của CUDA, v.v.
  • toàn quyền kiểm soát gv nvidia (thời gian thực, số liệu thống kê, tốc độ quạt tạm thời ...)

bằng cách sử dụng bumblebee.

Nhưng trước khi đi vào một số chi tiết, tôi nên cảnh báo bạn rằng khi thay đổi cấu hình của nvidia-settings hoặc xorg.conf hoặc nvidia Prime, bạn phải khởi động lại hệ thống của mình (có thể bạn đã biết). Không khởi động lại có thể khiến hệ thống ở trạng thái không nhất quán.


Trong cấu hình của tôi, tôi đã không chạm vào xorg.conf. Làm như vậy đối với tôi nó luôn là nguồn gốc của nỗi đau. Hãy để nó về trạng thái ban đầu. Nếu bạn không muốn thực hiện cài đặt mới, bạn có thể tìm thấy một số bản sao lưu trong /etc/X11/( ls /etc/X11/xorg.conf*).

Bước đầu tiên là cố gắng để làm nvidia-settingsviệc. Nếu bạn thành công để làm như vậy, bạn có thể sử dụng nvidia PRIME để chuyển sang GPU intel, như bạn đã đề cập. Cần có điểm chính nvidia cho GPU intel nếu bạn chỉ muốn sử dụng GPU NVIDIA cho các tính toán CUDA (đặc biệt cần thiết nếu bạn muốn sử dụng trình gỡ lỗi cuda cuda-gdb).

Sau đó, bạn có thể thử cài đặt bumblebee :

sudo apt install bumblebee

Khởi động lại. Bạn có thể theo dõi trạng thái của ong nghệ bằng cách sử dụng

sudo service bumblebeed status

hoặc là

bumblebeed -vv

Những gì bumblebee làm là kích hoạt GPU NVIDIA và cố gắng chèn trình điều khiển nvidia trong kernel chỉ khi cần. Bạn có thể sử dụng ong nghệ bằng cách chờ xử lý trước optirunlệnh bạn muốn chạy.

Để làm cho ong nghệ hoạt động, tôi phải chỉnh sửa thủ công /etc/bumblebee/bumblebee.confđể đặt chính xác tên và đường dẫn trình điều khiển nvidia.

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

Sau đó, sau một thời gian sudo service bumblebeed restarttôi quản lý để kích hoạt hệ thống ong nghệ.

Trong thực tế nvidia-smitrả lại

$ 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.

nhưng 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 |
+-----------------------------------------------------------------------------+

Hi vọng điêu nay co ich.


câu trả lời tốt! NHƯNG tôi đã mệt mỏi với Bumblebee với Ubuntu 15.10 và phần cứng tương tự và nó đã bị rối tung. Rất nhiều, tôi đã cài đặt mới 16.04 sau khi nó có sẵn. Nó thực sự tồi tệ hơn. Ngay cả Chế độ khôi phục cũng không khởi động chính xác .... Vì vậy, tôi đã thề sẽ không sử dụng ong nghệ nữa. Một vấn đề khác với ong nghệ là (tôi không biết bạn đã phá vỡ điều này như thế nào), đó là gpu chuyên dụng của tôi không hỗ trợ bbswitch, vì vậy tôi đã gặp lỗi, rằng gpu coul không được tắt chính xác
winnetou

Nhưng, về mặt lý thuyết đây là một câu trả lời có thể! Nhưng không phải là người tôi đang tìm kiếm :(.
winnetou

NHƯNG khác: (Tôi không biết thêm nữa, nếu điều này hoạt động trong lần thử của tôi) Liệu cài đặt nvidia có hiển thị cho bạn GPU (tất nhiên là cài đặt sudo optirun nvidia) không? Bạn có thể kiểm soát tốc độ quạt, điện áp vv? Nếu tôi nhớ lại chính xác, các cài đặt này chỉ có thể có trong cài đặt nvidia, sau khi bạn bật coolbits trong tệp xorg.conf. nvidia-smi chỉ cung cấp cho bạn một màn hình ..... vui lòng sửa nếu tôi sai
winnetou

Và một dấu hỏi lớn khác là: Bumblebee có hoạt động tốt không nếu tôi có nhiều hơn một gpu chuyên dụng? Usecase này (igpu + gpu) đã không được khuyến nghị cho bumblebee trên gpus không di động, nhưng có nhiều hơn một d-gpu là một câu chuyện mới cho bumblebee.
winnetou

@winnetou bạn hoàn toàn đúng về nhiều hơn một gpu - đó là một câu hỏi hay. Một vấn đề khác là nvidia-docker không hoạt động như mong đợi.
vskubriev

1

Tôi đã cài đặt lại trình điều khiển nvidia mà không cần opengl như đã đề cập trong các giải pháp trên nhưng nó không hoạt động với tôi. Hơn nữa, các giải pháp này khá không đạt yêu cầu, vì chúng ngụ ý loại bỏ một số khả năng của trình điều khiển (opengl).

Tôi tìm thấy một giải pháp đơn giản hơn nhiều mà bạn không cần phải cài đặt lại trình điều khiển:

  • Tôi đã cài đặt trình điều khiển nvidia bình thường
  • Trong gui cài đặt nvidia, các cấu hình PRIME chưa được chỉnh sửa, tôi chọn card đồ họa intel làm GPU chính
  • Sau khi khởi động lại, nvidia-smi không hoạt động, nhưng tôi đã sửa bằng cách thêm / usr / lib / nvidia-387 vào đường dẫn thư viện:
    export LD_LIBRARY_PATH=/usr/lib/nvidia-387:$LD_LIBRARY_PATH

Lưu ý rằng tùy thuộc vào trình điều khiển được cài đặt, bạn có thể cần thêm một thư mục khác trong đường dẫn thư viện của mình, ví dụ / usr / lib / nvidia-384 .
Bạn có thể thêm lệnh này vào tệp ~ / .bashrc để tự động xuất đường dẫn khi tải bash mới.


Điều gì xảy ra nếu bạn nâng cấp trình điều khiển nvidia? Bạn có phải tự thay đổi đường dẫn thư viện?
liang

Tôi đoán đây không phải là một vấn đề nếu trình điều khiển vẫn trong cùng một thư mục. Nếu thư mục thay đổi, có lẽ bạn nên thay đổi đường dẫn thư viện.
đảo ngược

0

Chủ yếu là một lời nhắc cho tôi: trong Ubuntu 18.04 để sử dụng igpu để kết xuất và nvidia gpu cho cuda, cài đặt trình điều khiển nvidia mặc định, mở cài đặt nvidia và đặt để sử dụng gpu intel. Sau đó, các trình điều khiển danh sách đen và một phần của trình điều khiển nvidia:

mở /etc/modprobe.d/blacklist-nvidia.conf và các dòng nhận xét theo cách này:

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

sau đó mở /etc/modprobe.d/blacklist-nvidia-nouveau.conf và thêm các dòng đó:

blacklist nouveau
options nouveau modeset=0

để thực sự chắc chắn rằng nouveau bị vô hiệu hóa, bạn có thể liệt kê chúng trong /etc/modprobe.d/blacklist.conf quá: ở cuối thêm:

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

sau đó khởi động lại.

loại nvidia-smiđể kiểm tra nvidia đã được tải và loại lspci -nnk | grep -iA2 3Dđể kiểm tra trình điều khiển đang sử dụng là nvidia chứ không phải nouveau.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.