GNU/Linux >> Linux Esercitazione >  >> Linux

Riduzione delle prestazioni CUDA durante l'esecuzione in Windows

L'invio di comandi hardware GPU attraverso lo stack WDDM comporta un notevole sovraccarico.

Come hai scoperto, ciò significa che sotto WDDM (solo) i comandi GPU possono essere "raggruppati" per ammortizzare questo sovraccarico. Il processo di batching potrebbe (probabilmente lo farà) introdurre una certa latenza, che può essere variabile, a seconda di cos'altro sta accadendo.

La soluzione migliore sotto Windows è cambiare la modalità operativa della GPU da WDDM a TCC, operazione che può essere eseguita tramite nvidia-smi comando, ma è supportato solo su GPU Tesla e su alcuni membri della famiglia di GPU Quadro, ovvero non su GeForce. (Ha anche l'effetto collaterale di impedire l'utilizzo del dispositivo come scheda video accelerata di Windows, il che potrebbe essere rilevante per un dispositivo Quadro o per alcune specifiche GPU Fermi Tesla meno recenti.)

AFAIK non esiste un metodo ufficialmente documentato per aggirare o influenzare il processo di batch WDDM nel driver, ma ufficiosamente ho sentito, secondo [email protected] in questo link il comando da emettere dopo la chiamata del kernel cuda è cudaEventQuery(0); che potrebbe/dovrebbe causare lo "scaricamento" della coda batch WDDM nella GPU.

Come sottolinea Greg, l'uso estensivo di questo meccanismo annullerà il beneficio dell'ammortamento e potrebbe fare più male che bene.

MODIFICA: andando avanti fino al 2016, una raccomandazione più recente per uno svuotamento "a basso impatto" della coda dei comandi WDDM sarebbe cudaStreamQuery(stream);

EDIT2: Utilizzando i driver recenti su Windows, dovresti essere in grado di posizionare le GPU della famiglia Titan in modalità TCC, supponendo che tu abbia un'altra GPU configurata per la visualizzazione principale. Il nvidia-smi ti permetterà di cambiare modalità (usando nvidia-smi --help per maggiori informazioni).

Ulteriori informazioni sul modello di driver TCC sono disponibili nella guida all'installazione di Windows, incluso il fatto che potrebbe ridurre la latenza dei lanci del kernel.

L'affermazione sul supporto TCC è generale. Non tutte le GPU Quadro sono supportate. Il determinante finale del supporto per TCC (o meno) su una particolare GPU è il nvidia-smi attrezzo. Nulla qui deve essere interpretato come una garanzia di supporto per TCC sulla tua particolare GPU.


Linux
  1. Codifica di un file zip?

  2. Script PHP:rileva se è in esecuzione su Linux o Windows?

  3. Impossibile leggere il certificato durante l'esecuzione nel contenitore Linux Docker:funziona su Windows

  4. Esecuzione di Linux all'interno di Windows XP, ovvero nessun dual boot

  5. Esame di più porte durante l'esecuzione di NetCat (nc)

Ottieni podman attivo e funzionante su Windows usando Linux

Come visualizzare un cron job attualmente in esecuzione?

Esecuzione di Linux virtuale utilizzando qemu su Windows

Perché ricevo Autorizzazione negata quando eseguo ssh-add?

Recupero di una password di Windows 10 quando la partizione è di sola lettura

Quali sono questi processi di Windows su Linux?