Please enable JavaScript.
Coggle requires JavaScript to display documents.
Cuda Programming - Coggle Diagram
Cuda Programming
Lock e Sezioni Critiche
Quando un pezzo di codice manipola dati condivisi e non può essere eseguito da più thread contemporaneamente senza rischiare Race Condition
Si usano lock, implementate con operazioni atomiche
-
Fetch-and-Add
Legge un valore, lo incrementa, e restituisce l'originale
-
-
-
-
Memory Fences
-
-
Si assicura che tutte le operazioni di lettura/scrittura effettuate prima della fence siano completata e visibili agli altri thread prima che vengano eseguite quelle dopo la fence
GPU (come CPU) può riordinare/ritardare operazioni di lettura/scrittura per ottimizzare le prestazioni
__threadfence_block
__threadfence -> tutta la GPU tra thread di blocchi diversi
__threadfence_system -> estende la garanzia anche verso CPU e device collegati
-
-
WARP e Condizioni
Un Warp è l'unità base di esecuzione delle GPU NVIDIA.
32 thread consecutivi all'interno di un blocco
Tutti i thread di un WARP eseguono la stessa istruzione nello stesso ciclo, ognuno su dati diversi
Modello chiamato SIMT, estensione di SIMD, stessa istruzione in parallelo su thread distinti
Una realtà architetturale nascosta al programmatore CUDA ma fondamentale per ottimizzare gli accessi in memoria e il flusso di controllo
Considerando un if/else
Se tutti i thread prendono la stessa strada il warp esegue in parallelo, nessun problema
-
-
-