Fórum Root.cz

Hlavní témata => Hardware => Téma založeno: LarryLin 30. 06. 2018, 19:24:07

Název: Jaký hybridní ovladač pro dvě grafické karty? Bumblebee nebo Prime?
Přispěvatel: LarryLin 30. 06. 2018, 19:24:07
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čů.
Název: Re:Jaký hybridní ovladač pro dvě grafické karty? Bumblebee nebo Prime?
Přispěvatel: Neviditelný 30. 06. 2018, 21:31:24
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.
Název: Re:Jaký hybridní ovladač pro dvě grafické karty? Bumblebee nebo Prime?
Přispěvatel: LarryLin 01. 07. 2018, 10:10:08
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)?
Název: Re:Jaký hybridní ovladač pro dvě grafické karty? Bumblebee nebo Prime?
Přispěvatel: ByCzech 01. 07. 2018, 10:26:56
https://www.linuxbabe.com/desktop-linux/switch-intel-nvidia-graphics-card-ubuntu

Pomůže tohle?
Název: Re:Jaký hybridní ovladač pro dvě grafické karty? Bumblebee nebo Prime?
Přispěvatel: ByCzech 01. 07. 2018, 10:38:46
Jinak co se týká NVidia, platí stále Linusovo pochválení NVidie (https://www.youtube.com/watch?v=IVpOyKCNZYw), 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.
Název: Re:Jaký hybridní ovladač pro dvě grafické karty? Bumblebee nebo Prime?
Přispěvatel: ByCzech 01. 07. 2018, 10:44:58
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...
Název: Re:Jaký hybridní ovladač pro dvě grafické karty? Bumblebee nebo Prime?
Přispěvatel: ByCzech 01. 07. 2018, 10:52:36
Ještě jsem něco vyhrabal z archívu https://devtalk.nvidia.com/default/topic/957814/linux/prime-and-prime-synchronization/
Název: Re:Jaký hybridní ovladač pro dvě grafické karty? Bumblebee nebo Prime?
Přispěvatel: Neviditelný 01. 07. 2018, 14:37:04
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
Název: Re:Jaký hybridní ovladač pro dvě grafické karty? Bumblebee nebo Prime?
Přispěvatel: LarryLin 01. 07. 2018, 15:57:41
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ě :)
Název: Re:Jaký hybridní ovladač pro dvě grafické karty? Bumblebee nebo Prime?
Přispěvatel: Neviditelný 01. 07. 2018, 16:34:10
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.
Název: Re:Jaký hybridní ovladač pro dvě grafické karty? Bumblebee nebo Prime?
Přispěvatel: LarryLin 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.
Název: Re:Jaký hybridní ovladač pro dvě grafické karty? Bumblebee nebo Prime?
Přispěvatel: LarryLin 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.
Název: Re:Jaký hybridní ovladač pro dvě grafické karty? Bumblebee nebo Prime?
Přispěvatel: walyn 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.
Název: Re:Jaký hybridní ovladač pro dvě grafické karty? Bumblebee nebo Prime?
Přispěvatel: kolega 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í.
Název: Re:Jaký hybridní ovladač pro dvě grafické karty? Bumblebee nebo Prime?
Přispěvatel: LarryLin 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/
Název: Re:Jaký hybridní ovladač pro dvě grafické karty? Bumblebee nebo Prime?
Přispěvatel: LarryLin 07. 07. 2018, 23:20:07
Ještě jsem si uvědomil, že jsem tady nenapsal jak můj příběh dopadl. :) Takže, zdá se, že vše pracuje jak má. Bál jsem se, že když unbinduji Nvidii, tak že Bumblebee začne řvat nebo spadne, ale vše funguje.

Jediné s čím jsem trochu bojoval byl úsporný režim Nvidie (vypínání když ji nepotřebuji), protože když ji mám bindnutou (připlou) do linuxu tak na ní pořád jede ten virtuální X server co používá Bumblebee. Viděl jsem, že se u těch Optimus laptopů používají 2 metody pro vypnutí GPU:

manuální: echo '\_SB_.PCI0.PEG0.PEGP._OFF' > /proc/acpi/call
automatická (doporučovaná): bbswitch

Ani jeden způsob u mě na desktopu nefunguje. Bbswitch na desktopech prý ani fungovat nemá a acpi_call pořád hlásil chybu "Cannot get handle: Error: AE_NOT_FOUND". A ani na žádný jiný fígl jak dGPU úplně vypnout napájení (https://forum.root.cz/index.php?topic=18927.0) jsem nepřišel.

Takže jsem to udělal tak, že při startu PC se do dGPU místo nvidia ovladačů načtou vfio-pci ovladače - díky ním dGPU jede v úsporném režimu D3. Když chci spustit nějaký program na dGPU, tak místo příkazem "optirun" spouštím svým scriptem, který udělá to, že unbinduje vfio-pci, binduje nvidia ovladač, pak se spustí požadovaný program a po skončení se zase unbinduje nvidia a binduje vfio-pci.

Takže díky za konzultaci. Původně jsem si myslel, že Bumblebee zahodím, ale vypadá to, že žádná alternativa pro proprietární nvidia ovladače a bez restartu Xka neexistuje. Sice jsem na chvíli uvažoval, že bych používal nouveau ovladače, ale ten výkon oproti nvidia ovladačům je pořád špatný - Phoronix test. (https://www.phoronix.com/scan.php?page=article&item=nouveau-linux-414)
Název: Re:Jaký hybridní ovladač pro dvě grafické karty? Bumblebee nebo Prime?
Přispěvatel: LarryLin 07. 07. 2018, 23:23:01
...jo a ještě jsem před tím psal, že s Bumblebee není k dispozici CUDA, což není pravda.