Vari demo CUDA nell'SDK CUDA si riferiscono a "scrittura dispersa". Che cos'è questa scrittura sparsa e perché è così grande? In contrasto con che cosa sta in piedi?CUDA: cos'è la scrittura dispersa?
risposta
Ho intenzione di usare la terminologia CUDA qui.
scattered write
significa che si sta scrivendo da ogni thread di cuda a un indirizzo arbitrario (ad esempio, i fili del proprio ordito non scriveranno nella memoria consecutiva, ad es.). Contrasta con le scritture frame-buffer, che sono coerenti con 2d e possono essere coalizzate dall'hardware. Quelle erano le uniche scritture disponibili per le GPU fino a non molto tempo fa.
Sono l'operazione opposta di un gather read
, che legge i dati dalla posizione sparsa e li raccoglie tutti prima che i thread vengano eseguiti in modo SIMD sui dati raccolti. Tuttavia, le letture raccolte sono state a lungo disponibili sulle GPU attraverso fasci di texture arbitrarie.
La scrittura sparsa è ottima perché consente di scrivere su qualsiasi indirizzo di memoria. Le precedenti imperfezioni dello shader erano solitamente limitate negli indirizzi di memoria a cui un dato programma shader poteva scrivere.
"Mentre i programmi di frammenti nelle API grafiche sono limitati all'emissione di 32 float (destinazioni di rendering RGBA * 8) in una posizione prestabilita, CUDA supporta scritture sparse, ovvero un numero illimitato di negozi per qualsiasi indirizzo. algoritmi che non erano possibili con grafica API per eseguire in modo efficiente utilizzando CUDA"
dalla FAQ CUDA:
Fondamentalmente si rende programmi CUDA più facile da scrivere, perché non sono come limitata da dove può scrivere risultati Tieni presente che una delle chiavi per ottenere buone prestazioni su una GPU è sfruttare la località di memoria. Sovraccaricare le scritture sparse scrivendo nella memoria globale molto probabilmente avrà un impatto sulla tua performance.
- 1. Trama dispersa con un'enorme quantità di dati
- 2. CUDA driver API vs. CUDA runtime
- 3. Golang chiama la libreria CUDA
- 4. CUDA e la compatibilità gcc problema
- 5. Struttura CUDA rilegata zero zero
- 6. trucchi per la scrittura rubygems
- 7. La scrittura di dati System.in
- 8. errore durante la scrittura pymongo
- 9. Qual è la differenza tra il CUDA takeit e il CUDA sdk
- 10. In che modo CUDA blocca/deforma/filtra la mappa sui core CUDA?
- 11. versione del driver CUDA è insufficiente per la versione CUDA runtime
- 12. Come parallelizzare la lettura e la scrittura
- 13. CMake + Cuda: compila file cpp in modalità Cuda (--x = cu)
- 14. Filtro medio Cuda Image
- 15. programma cuda su VMware
- 16. CUDA: sincronizzazione dei thread
- 17. Nsight Eclipse Cuda + opencv
- 18. CUDA wrapper per Qt
- 19. Parametri ai kernel CUDA
- 20. Cuda gridDim e blockDim
- 21. OpenGL Shader vs CUDA
- 22. aiutami a capire cuda
- 23. Generazione casuale numero CUDA
- 24. Barriera interblocco su CUDA
- 25. CUDA 4.1 printf() Errore
- 26. Multi-GPU Computazione Cuda
- 27. Mathematica e CUDA
- 28. CUDA Blocks & Warps
- 29. Riduzione condizionale in CUDA
- 30. all'interno del kernel cuda
che si verifica ancora nella "memoria del dispositivo", giusto? (Contrariamente alle operazioni di I/O scatter/gather che consentirebbero a un motore DMA di pilotare il contenuto da una diversa posizione della memoria principale, ad esempio una singola striscia I/O) – PypeBros
Corretto. Questo si riferisce alla memoria sulla GPU, non alla memoria globale. –