Le app CUDA scadono e falliscono dopo diversi secondi: come aggirare questo problema?



Answers

Su Windows, il driver grafico ha un timer watchdog che uccide tutti i programmi shader eseguiti per più di 5 secondi. Si noti che i driver Xorg / XFree86 non lo fanno, quindi una soluzione alternativa è eseguire le app CUDA su Linux.

AFAIK non è possibile disabilitare il timer del watchdog su Windows. L'unico modo per aggirare questo su Windows è quello di utilizzare una seconda scheda che non ha schermi visualizzati su di esso. Non deve essere una Tesla ma non deve avere schermi attivi.

Question

Ho notato che le applicazioni CUDA tendono ad avere un tempo di esecuzione massimo approssimativo di 5-15 secondi prima che falliscano ed escano. Mi rendo conto che è ideale non avere l'applicazione CUDA eseguita così a lungo, ma supponendo che sia la scelta giusta per usare CUDA ea causa della quantità di lavoro sequenziale per thread deve essere eseguita a lungo, c'è un modo per estendere questo periodo di tempo o aggirarlo?




La soluzione che uso è:

1. Passare tutte le informazioni al dispositivo.
2. Eseguire versioni iterative di algoritmi, in cui ogni iterazione richiama il kernel sulla memoria già memorizzata all'interno del dispositivo.
3. Infine trasferisci la memoria all'host solo dopo che tutte le iterazioni sono terminate.

Ciò consente il controllo delle iterazioni dalla CPU (inclusa l'opzione di interruzione), senza il costoso dispositivo <-> i trasferimenti di memoria host tra le iterazioni.




Questo non è possibile. Il timeout è lì per evitare che i bug nei calcoli assorbano la GPU per lunghi periodi di tempo.

Se si utilizza una scheda dedicata per il lavoro CUDA, il limite di tempo viene rimosso. Non sono sicuro che sia necessaria una scheda Tesla o se è possibile utilizzare una GeForce senza monitor.




È possibile disabilitare questo comportamento in Linux. Sebbene il "cane da guardia" abbia uno scopo ovvio, può causare risultati molto inaspettati quando si eseguono calcoli estesi usando shader / CUDA.

L'opzione può essere attivata nella configurazione X (probabilmente /etc/X11/xorg.conf)

Aggiunta: l'opzione "Interattivo" "0" nella sezione dispositivo della tua GPU fa il lavoro.

vedi l' opzione 'Interactive' X di CUDA Visual Profiler?

Per i dettagli sulla configurazione

e

vedere ftp://download.nvidia.com/XFree86/Linux-x86/270.41.06/README/xconfigoptions.html#Interactive

Per una descrizione del parametro.




Links