GNU/Linux >> Znalost Linux >  >> Linux

Pokuta za výkon CUDA při spuštění ve Windows

Při odesílání hardwarových příkazů GPU prostřednictvím zásobníku WDDM je poměrně velká režie.

Jak jste zjistili, znamená to, že v rámci WDDM (pouze) mohou být příkazy GPU „dávkovány“ k amortizaci této režie. Dávkový proces může (pravděpodobně bude) zavádět určitou latenci, která se může měnit v závislosti na tom, co se děje.

Nejlepším řešením pod Windows je přepnout provozní režim GPU z WDDM na TCC, což lze provést pomocí nvidia-smi příkaz, ale je podporován pouze na GPU Tesla a některých členech rodiny GPU Quadro – tedy ne GeForce. (Má to také vedlejší účinek, který brání tomu, aby bylo zařízení používáno jako grafický adaptér akcelerovaný systémem Windows, což může být relevantní pro zařízení Quadro nebo několik konkrétních starších GPU Fermi Tesla.)

AFAIK neexistuje žádná oficiálně zdokumentovaná metoda, jak obejít nebo ovlivnit dávkovací proces WDDM v ovladači, ale neoficiálně jsem slyšel, podle [email protected] v tomto odkazu, příkaz, který se má vydat po volání jádra cuda, je cudaEventQuery(0); což může/mělo způsobit, že se dávková fronta WDDM „vyprázdní“ do GPU.

Jak zdůrazňuje Greg, rozsáhlé používání tohoto mechanismu zničí výhodu amortizace a může způsobit více škody než užitku.

UPRAVIT: do roku 2016 by novější doporučení pro „nízký dopad“ splachování fronty příkazů WDDM bylo cudaStreamQuery(stream);

EDIT2: Pomocí nejnovějších ovladačů ve Windows byste měli být schopni umístit GPU rodiny Titan do režimu TCC, za předpokladu, že máte pro primární zobrazení nastavenou jinou GPU. nvidia-smi vám umožní přepínat režimy (pomocí nvidia-smi --help pro více informací).

Další informace o modelu ovladače TCC lze nalézt v instalační příručce systému Windows, včetně toho, že může snížit latenci spouštění jádra.

Prohlášení o podpoře TCC je obecné. Ne všechny Quadro GPU jsou podporovány. Konečným určujícím faktorem podpory TCC (nebo ne) na konkrétním GPU je nvidia-smi nástroj. Nic zde by nemělo být vykládáno jako záruka podpory TCC na vašem konkrétním GPU.


Linux
  1. Kódování souboru ZIP?

  2. Nelze smazat soubor, i když běží jako root?

  3. PHP skript - zjistit, zda běží pod linuxem nebo pod Windows?

  1. Nelze přečíst certifikát při spuštění v kontejneru Linux Docker - funguje ve Windows

  2. Provoz Linuxu ve Windows XP, tedy žádné duální bootování

  3. Proč se mi při spuštění ssh-add odepírá oprávnění?

  1. Obnovení hesla Windows 10, když je oddíl pouze pro čtení

  2. Jaké jsou tyto procesy Windows v systému Linux?

  3. Vyzvat uživatele k přihlášení jako root při spuštění skriptu shellu