Please enable JavaScript.
Coggle requires JavaScript to display documents.
Programmazione Parallela - Coggle Diagram
Programmazione Parallela
Open ACC
-
-
Direttive principali
- parallel: Sezioni da parallelizzare
- kernels: Il compilatore analizza il codice e parallelizza ciò che è sicuro
- loop: specifica loop parallelizzabili
- data: gestisce i trasferimenti di dati da e verso CPU/GPU
-
-
OpenCL
-
Modello di piattaforma
Differenze nella terminologia
CUDA vs OpenCL
- Host vs CPU
- Device vs Compute Device
- Streaming Multiprocessor vs Compute Unit
- Streaming Processor vs Processing Element
- Thread vs Work Item
- Block vs Work Group
CPU (Host) gestisce il programma
Codice parallelo viene eseguito su moltri processing elements sul device
Work-Item è l'unite base di lavoro
Kernel è il codice per un work-item
Programma è una collezione di Kernel e altre funzioni
Work-Item eseguito su Compute Element (Cuda Core)
Work-Group eseguito su Compute Unit
Kernel eseguito su Compute Device
Struttura Applicazione
- Host esegue codice seriale
- Creazione context
- Creazione Command Queue
- Allocazione memoria su device e trasferimento
- Compilazione kernel a run-time
- Esecuzione kernel su wi/wg
- Trasferimento risultati
-
La Command Queue è usata per inviare comandi al device, copia dati, esegui kernel, lettura risultati, incodato in ordine
Work può essere in-order o out-of-order
-
-
OpenCL vs CUDA
Origine e Filosofia
CUDA proprietario, chiuso, ottimizzato, mentre OpenCL universale
-
Somiglianze
- Modello di data parallelism -> dividere problema in tanti thread che lavorano in parallelo sugli elementi
- Linguaggio C semplificato
- Modello di memoria molto simile
- Separano il concetto di Host e Device
Diffusione e mercato
CUDA molto più storia, affermato come riferimento per calcolo scientifico/parallelo (dominio Nvidia)
OpenCL molto usato in ambito accademico e di ricerca -> facilita condivisione di codice portatile
Performance
CUDA più veloce su GPU NVidia,OpenCL vicino ma sotto
Non NVidia OpenCL è spesso l'unica scelta