Jaký hybridní ovladač pro dvě grafické karty? Bumblebee nebo Prime?

LarryLin

Když někdo chce provozovat 2 grafické karty na jednom monitoru s tím, že primární je iGPU (Intel). Sekundární je dGPU (Nvidia) a bude se používat jen pro náročnější aplikace a grafický výstup na monitor bude vždy jen z iGPU, aby se nemusel na monitoru přepínat "source". Jde o desktop s linuxem. Jestli mi něco neuniklo, tak jsou k dispozici tyto možnosti (ovladače):

1) Bumblebee
program na sekundární grafické kartě se pak spouští:
Kód: [Vybrat]
optirun <jméno programu>
2) Prime
program na sekundární grafické kartě se pak spouští:
Kód: [Vybrat]
DRI_PRIME=1 <jméno programu>
Jestli jsem to správně pochopil, tak Bumblebee je de fakto mrtvý projekt a mělo by se dnes používát Prime? Nebo je ještě nějaký důvod proč používat Bumblebee? V pár diskuzích jsem narazil na to že Prime spotřebovává více energie, ale to se možná týkalo jen dřívějších ovladačů.


Neviditelný

Pokud se něco zásadního nezměnilo, funguje PRIME pořádně jen s Mesa ovladači; na nVidia kartě tedy budeš omezen na ovladač nouveau. Integrace PRIME s proprietárním ovladačem funguje stylem "všechno nebo nic" a přepnutí z jednoho GPU na druhé vyžaduje restart Xek. Bumblebee existuje právě proto, aby hybridní GPU fungovaly skutečně hybridně i s proprietárním ovladačem.

LarryLin

To mně nedošlo. Zkoušel jsem Prime s nouveau a to že to bude fungovat stejně s proprietárními nvidia drivery jsem bral jako samozřejmost, ale vypadá to, že máš pravdu. Jenomže já používám VGA passthrough a potřebuji tu dGPU nvidia často odebrat z linuxu, přiřadit ji virtuálce a pak ji zase vráti do linuxu, tak jak to popisují třeba zde https://arseniyshestakov.com/2016/03/31/how-to-pass-gpu-to-vm-and-back-without-x-restart/ právě za použití "DRI_PRIME=1" a přitom bych chtěl kvůli vyššímu výkonu v linuxu (hostiteli) používat nvidia driver. A teď jak z toho ven?

Tady https://gist.github.com/Misairu-G/616f7b2756c488148b7309addc940b28#bumblebee-setup-guide jsem našel nějaký návod na Bumblebee, ale to zřejmě také vyžaduje reset Xek. Usuzuji podle toho, že se v návodu mluví o "sudo prime-select intel/nvidia" a co jsem viděl návody, tak to je právě řešení, které sice nevyžaduje reboot PC, ale logout/login to vyžaduje.

Takže nevíte někdo o nějakém hacku, který by mi umožnil použít nvidia drivery za použití Prime bez restartu X serveru? Nebo druhá varianta, jak používat přehazování dGPU mezi hostem a hostitelem s ovladačem Bumblebee (také bez restartu Xek)?


ByCzech

  • *****
  • 1 870
    • Zobrazit profil
    • E-mail
Jinak co se týká NVidia, platí stále Linusovo pochválení NVidie, hází klacky kde můžou. Proprietární uzavřené ovladače, těžký přístup k dokumentaci a firmware, detekce virtualizace a následné znemožnění passthrough, nepodpora Optimus v Linuxu, nepodpora modesettings, nepodpora Wayland, ztěžování vývoje FOSS ovladačů - prostě co můžou udělat jinak než standardně, to udělají nebo to nepodporují, házejí klacky pod nohy a další nehezké věci. Někdy si člověk připadá jako bojovat s větrnými mlýny. Spousta věcí se dá pořešit, bohužel ale s jinými věcmi je nutné se smířit, že (zatím) nejdou nebo s jejich ovladači nikdy nepůjdou.
« Poslední změna: 01. 07. 2018, 10:40:43 od ByCzech »


ByCzech

  • *****
  • 1 870
    • Zobrazit profil
    • E-mail
https://www.linuxbabe.com/desktop-linux/switch-intel-nvidia-graphics-card-ubuntu

Pomůže tohle?

Koukám, že už jsi psal ve svém příspěvku o prime-select, přehlídl jsem, vytáhl jsem ze svých záložek...


Neviditelný

To mně nedošlo. Zkoušel jsem Prime s nouveau a to že to bude fungovat stejně s proprietárními nvidia drivery jsem bral jako samozřejmost, ale vypadá to, že máš pravdu. Jenomže já používám VGA passthrough a potřebuji tu dGPU nvidia často odebrat z linuxu, přiřadit ji virtuálce a pak ji zase vráti do linuxu, tak jak to popisují třeba zde https://arseniyshestakov.com/2016/03/31/how-to-pass-gpu-to-vm-and-back-without-x-restart/ právě za použití "DRI_PRIME=1" a přitom bych chtěl kvůli vyššímu výkonu v linuxu (hostiteli) používat nvidia driver. A teď jak z toho ven?

Tady https://gist.github.com/Misairu-G/616f7b2756c488148b7309addc940b28#bumblebee-setup-guide jsem našel nějaký návod na Bumblebee, ale to zřejmě také vyžaduje reset Xek. Usuzuji podle toho, že se v návodu mluví o "sudo prime-select intel/nvidia" a co jsem viděl návody, tak to je právě řešení, které sice nevyžaduje reboot PC, ale logout/login to vyžaduje.

Takže nevíte někdo o nějakém hacku, který by mi umožnil použít nvidia drivery za použití Prime bez restartu X serveru? Nebo druhá varianta, jak používat přehazování dGPU mezi hostem a hostitelem s ovladačem Bumblebee (také bez restartu Xek)?

nVidií blob DRI3 vůbec nezná, takže ten linknutý postup nebude fungovat určitě. Předpokládám, že stroj, kde s tímhle chceš cirkusačit už má MUX-less uspořádání, kdy dGPU nemá samo o sobě žádný grafický výstup. To je dost zásadní problém. Nějaké info, co lze a nelze s takovým HW z hlediska VFIO dělat jsem našel tady: https://github.com/jscinoz/optimus-vfio-docs/blob/master/README.md

LarryLin

nVidií blob DRI3 vůbec nezná, takže ten linknutý postup nebude fungovat určitě. Předpokládám, že stroj, kde s tímhle chceš cirkusačit už má MUX-less uspořádání, kdy dGPU nemá samo o sobě žádný grafický výstup. To je dost zásadní problém. Nějaké info, co lze a nelze s takovým HW z hlediska VFIO dělat jsem našel tady: https://github.com/jscinoz/optimus-vfio-docs/blob/master/README.md
Jo už jsem si všiml, že se na začátku mého linkovaného postupu píše o "FOSS drivers".
V těch MUX-less/MUXed nemám moc jasno, ale není to laptop. Jedná se o desktop a ta nvidia má normálně výstupy - klasická GeForce řady 900.
Díky za odkaz, už z toho dnešního přísunu informací začínám mít bolení a mírný chaos v hlavě :)

Neviditelný

nVidií blob DRI3 vůbec nezná, takže ten linknutý postup nebude fungovat určitě. Předpokládám, že stroj, kde s tímhle chceš cirkusačit už má MUX-less uspořádání, kdy dGPU nemá samo o sobě žádný grafický výstup. To je dost zásadní problém. Nějaké info, co lze a nelze s takovým HW z hlediska VFIO dělat jsem našel tady: https://github.com/jscinoz/optimus-vfio-docs/blob/master/README.md
Jo už jsem si všiml, že se na začátku mého linkovaného postupu píše o "FOSS drivers".
V těch MUX-less/MUXed nemám moc jasno, ale není to laptop. Jedná se o desktop a ta nvidia má normálně výstupy - klasická GeForce řady 900.
Díky za odkaz, už z toho dnešního přísunu informací začínám mít bolení a mírný chaos v hlavě :)
Jestli je to desktop, mělo by pro něj platit totéž, co pro MUXované notebooky. Pokud máš displej s aspoň DP a HDMI, můžeš kvůli passthrough zapojit obě grafiky do jednoho displeje a vždycky jenom přepnout zdroj signálu.

LarryLin

Re:Jaký hybridní ovladač pro dvě grafické karty? Bumblebee nebo Prime?
« Odpověď #10 kdy: 01. 07. 2018, 16:58:36 »
nVidií blob DRI3 vůbec nezná, takže ten linknutý postup nebude fungovat určitě. Předpokládám, že stroj, kde s tímhle chceš cirkusačit už má MUX-less uspořádání, kdy dGPU nemá samo o sobě žádný grafický výstup. To je dost zásadní problém. Nějaké info, co lze a nelze s takovým HW z hlediska VFIO dělat jsem našel tady: https://github.com/jscinoz/optimus-vfio-docs/blob/master/README.md
Jo už jsem si všiml, že se na začátku mého linkovaného postupu píše o "FOSS drivers".
V těch MUX-less/MUXed nemám moc jasno, ale není to laptop. Jedná se o desktop a ta nvidia má normálně výstupy - klasická GeForce řady 900.
Díky za odkaz, už z toho dnešního přísunu informací začínám mít bolení a mírný chaos v hlavě :)
...Pokud máš displej s aspoň DP a HDMI, můžeš kvůli passthrough zapojit obě grafiky do jednoho displeje a vždycky jenom přepnout zdroj signálu.
No vo tom je celá moje story, abych zdroj signálu přepínat nemusel.
1) Když mám dGPU pass-throughnutou do virtuálky s Windowsem, tak používám Looking-Glass https://github.com/gnif/LookingGlass = obraz se zachytává ve virtuálce a přenáší se do linuxu a tam se vykresluje na iGPU (něco jako Steam In-Home, ale rychlejší, protože se obraz nemusí komprimovat/dekomprimovat).
2) Když mám dGPU v linuxu tak používám Bumblebee čímž mám také výstup z dGPU zobrazovaný na iGPU.

Takže teď už vím, že Prime s proprietárními nvidia ovladači nebudu moci použít, takže se můj problém zúžil na to jak co nejelegantněji dGPU sebrat Bumblebee ovladačům a přiřadit virtuálce (Win) a pak dGPU zase vrátit zpět do Linuxu těm Bumblebee ovladačům.

LarryLin

Re:Jaký hybridní ovladač pro dvě grafické karty? Bumblebee nebo Prime?
« Odpověď #11 kdy: 01. 07. 2018, 17:05:40 »
Ještě jsem něco vyhrabal z archívu https://devtalk.nvidia.com/default/topic/957814/linux/prime-and-prime-synchronization/
Dík. V tom vláknu řeší nějaký "Prime Sync" a moderátor poslal ty co chtějí diskutovat o "PRIME render offloading" sem https://devtalk.nvidia.com/default/topic/957981/linux/prime-render-offloading-on-nvidia-optimus/3
Offloading je právě to co potřebuji, aby se výpočetní výkon odehrával na dGPU a posílal se do iGPU a pak na monitor. Na té diskuzi jsem byl už před tím a poslední komentář mluví o "home:/bosim:/suse-prime" zde jsou zdrojáky https://github.com/bosim/SUSEPrime . Nadšení z objeveného hacku rychle opadlo, protože je to vlastně obdoba nvidia-prime z Ubuntu (co jsi poslal v tom prvním komentu) a taky se tam používá "prime-select nvidia" a bohužel taky potřebuje logout/login Xek.

Takže jsem zatím nabyl dojem, že kombinace "Nvidia driver + Prime" bez restartu Xka fungovat nebude. Žádný hack jsem nenašel což se celkem divím, protože pomocí NvFBC by měl jít výstup z nvidie zachytit a třeba přes unix socket poslat do iGPU. Ještě mě napadlo, jestli by to nevyřešil docker https://github.com/Nvidia/Nvidia-docker , ale pak jsem si uvědomil, že ten postup s "DRI_PRIME=1 <program>" na nvidia driveru stejně nebude fungovat (jak správně napsal i "Neviditelný"). Takže Prime si škrtám :)

Bude nutné použít Bumblebee (už mám otestované, že s nvidia drivery funguje). Teď jde o to jak správně unbindovat (odpojit) dGPU z linuxu a přiřadit ji virtuálce (s Windowsem) a pak zase zpátky vrátit do linuxu?

Našel jsem návod na použití kde pomocí acpi-call-dkms modulu https://www.reddit.com/r/VFIO/comments/7d27sz/you_can_now_passthrough_your_dgpu_as_you_wish/dpvwka6/ zapínají a vypínají dGPU.
Zde https://pastebin.com/uPPsmpz1 je jeho script na Qemu.
Zde https://pastebin.com/zLQPHPQk je jeho script na to vypínání, unbindování...
Jak je vidět, tak po ukončení Qemu tu dGPU vypíná, asi aby nespotřebovávala energii.

Ještě jsem zjistl, že s Bumblebee není k dispozici CUDA, ale myslím, že to nyní potřebovat nebudu.

Takže s nově nabytými vědomostmi to zkusím nějak zprovoznit. Kdybyste měli nějaké návrhy nebo připomínky, tak samozřejmě za ně budu rád.

walyn

Re:Jaký hybridní ovladač pro dvě grafické karty? Bumblebee nebo Prime?
« Odpověď #12 kdy: 07. 07. 2018, 19:13:04 »
a na waylandu tohle jde? A jaké distro je na tom nejlépe s waylandem? Ideálně, kde už je celý X11 krám vyhozen.

kolega

Re:Jaký hybridní ovladač pro dvě grafické karty? Bumblebee nebo Prime?
« Odpověď #13 kdy: 07. 07. 2018, 21:38:44 »
Tak asi Fedora ne? Když na waylandu dělají lidi z redhatu? Fedora nejdřív měla nativní wayland-only sezení.

LarryLin

Re:Jaký hybridní ovladač pro dvě grafické karty? Bumblebee nebo Prime?
« Odpověď #14 kdy: 07. 07. 2018, 22:11:16 »
a na waylandu tohle jde? A jaké distro je na tom nejlépe s waylandem? Ideálně, kde už je celý X11 krám vyhozen.
Myslím, že na waylandu to jde, ale budeš muset použít nvidia-xrun a tudíž celý X11 krám vyhodit zatím nemůžeš :) https://cubethethird.wordpress.com/2017/10/22/nvidia-xrun-an-alternative-to-bumblebee/