LINUX.ORG.RU

Как разделить видеокарты для разных задач?

 , ,


0

4

Я хочу на дискретных nvidia: cuda, opencl и прочее.
А на интегрированной карте: gnome.
Можно ли доступ к дискретным разрешить только для одного пользователя, а для интегрированной всем остальным? Как это сделать?



Последнее исправление: bbgg (всего исправлений: 2)
Ответ на: комментарий от anonymous

Если запустить потом nvidia-smi будет видно что gnome использует видео память дискретки, а процесс gdm привяжется к дискретке как к файлу и не даст отключить видяхи или менять им драйвер без остановки gnome, потому что он не умеет выгружать и отвязывать видяху, а только разгружать на видяху игоря.

bbgg
() автор топика

Я не знаю даже что гуглить. хз как называются права доступа. и Куда их прописать чтобы gdm не смог прицепиться к nvidia карте.

bbgg
() автор топика
Ответ на: комментарий от bbgg

Попробовал так

setfacl -m u:gdm:0 /dev/nvidiactl
setfacl -m u:gdm:0 /dev/nvidia0
/usr/libexec/gdm-runtime-config set daemon WaylandEnable true
systemctl restart gdm.service

gdm запустился на встройке, но пропала wayland сессия и всё ещё остался процесс пользователя X в nvidia-smi.

bbgg
() автор топика

Попробуй исключить дискретку из списка девайсов рабочего места seat0, тогда её перестанут использовать и Xorg и wayland композиторы. Вот таким udev правилом:

# /etc/udev/rules.d/72-seat.rules 
# exclude video card from seat devices
SUBSYSTEMS=="pci", ATTRS{vendor}=="0x8086", ATTRS{device}=="0x9a49", TAG-="seat", TAG-="master-of-seat"

Только vendor и device свои укажи.

iliyap ★★★★★
()

гугли по слову vfio

по факту, обе карты коннектятся к монитору (либо вторая с обманкой hdmi), обе грузят дрова при старте, затем X11 цепляет только встройку, а нвидию не юзает.

нужные параметры в ксорг.конф

Section "Device"
    Identifier     "Device1"
    Driver         "nvidia"
...
    Option         "Ignore" "1"

Section "ServerFlags"
    Option "AutoAddGPU" "off"
EndSection
anonymous
()
Ответ на: комментарий от bbgg

У меня нет дискретки, поэтому мне очень интересно, как оно работает. Расскажи, сделай милость, как оно работает у тебя. И как оно должно работать, раз работает «не так».

loginctl seat-status seat0 показывает дискретку в списке устройств? gdm, Xorg-сессия или waylang-сессия используют дискретку? modprobe -r nvidia выгружает драйвер, или говорит, что он занят?

iliyap ★★★★★
()
Ответ на: комментарий от iliyap

не так

Дело в правилах udev, но я их не понимаю до конца и по этому не могу сказать что именно.

modprobe -r nvidia выгружает драйвер, но запущенный стим не позволяет это сделать даже с пустым nvidia-smi.
/dev/nvidia* файлов нет. Куда работает.

loginctl seat-status seat0
...
[MASTER] drm:card0
...
sound:card1 "NVidia"
...

И был еще fb0 EFI который nvidia, потому что у intel graphics:fb1 "i915drmfb".

bbgg
() автор топика
Ответ на: комментарий от bbgg

Я грубо заменил стоку в 71-seat.rules на это

SUBSYSTEM=="drm", KERNEL=="card0", TAG+="seat", TAG+="master-of-seat"
SUBSYSTEM=="drm", KERNEL=="card1", TAG-="seat", TAG-="master-of-seat"

udevadm control --reload-rules && udevadm trigger

bbgg
() автор топика

Почитай про Prime, к тому же wine и так на встройке запускает, но если игры, то придется указать какой видеоадаптер применять для использования только встройки. Блокировать его будет бесполезно, если протон все равно дискретку ищет. Нормальные люди уже во всю осваивают парную работу видеокарт как на ноутбуках, так как это бустит игры. Лучше взять видеокарту для всякой мути отдельную. В драйвере надо все равно у нвидии надо вручную включать поддержку optimus. Наоборот делают, чтобы на радеоне крутились игры, а на нвидии программы.

anonymous
()

Ерунда в итоге этот seat0, слишком часто нельзя выгрузить драйвер nvidia и не понятно кто его дёрнул. Нужно что-то другое.

bbgg
() автор топика
Ответ на: комментарий от bbgg

Так нельзя. Спалишь ты дискретку. Забудь. Нельзя нагорячую видяхи дергать. Я однажды пробовал программно польностью вырубать ее через unbind. Вырубается. И глючить жестко начинает вся система. И все виснет.

Jeronimo ★★
()
Ответ на: комментарий от Jeronimo

Нет, не ноут и не оптимус, у меня видяхи гибридные т.е. разные и это приводит к проблемам.
Самое нормальное что я смог, это отделить дмскретки от seat0, чтобы их в нём не было, нужно ещё удалить acl и права доступа к ним.

bbgg
() автор топика
Ответ на: комментарий от bbgg

Я так и не понял, что у тебя «не так». После исключения дискретки из устройств рабочего места seat0 у тебя Xorg и Wayland композиторы перестали ее использовать? В X11 сессии xrandr --listproviders должен показывать только одного провайдера (встройку). Как это смотреть в Wayland композиторах я не знаю.

Зачем драйвер от устройства отвязывать тоже не понятно. Cuda приложениям ведь все равно нужно, чтобы дискретка обслуживалась драйвером.

iliyap ★★★★★
()
Ответ на: комментарий от iliyap

После исключения дискретки из устройств рабочего места seat0 у тебя Xorg и Wayland композиторы перестали ее использовать?

Разный софт например стим всё равно её использует.

Зачем драйвер от устройства отвязывать тоже не понятно

Я её иногда для cuda, а иногда пробрасываю в виртуалку.

bbgg
() автор топика
Ответ на: комментарий от bbgg

Делай раз:

$ MESA_VK_DEVICE_SELECT=list vkcube
Selected WSI platform: xcb
selectable devices:
  GPU 0: 10de:28ba "NVIDIA RTX 500 Ada Generation Laptop GPU" discrete GPU
  GPU 1: 8086:7dd5 "Intel(R) Graphics (MTL)" integrated GPU

Делай два:

mkdir -p .config/environment.d/blacklist_nvidia.conf
echo "MESA_VK_DEVICE_SELECT=!10de:28ba" > .config/environment.d/blacklist_nvidia.conf

Возможно надо будет установить vulkan-mesa-layers.

Перезагрузись. Говном перестанет использовать nvidia. Потом, если понадобится, сделаешь unset -e MESA_VK_DEVICE_SELECT перед запуском нужной программы.

MagicMirror ★★★
()