Architetture parallele (integrato con Calcolatori elettronici e sistemi operativi)
Docente
prof. Antonio ABRAMO
Crediti
6 CFU
Lingua
Italiano
Obiettivi formativi specifici
Il corso si propone di fornire le conoscenze e le competenze necessarie per affrontare lo studio e la progettazione di applicazioni distribuite su architetture parallele ed eterogenee.
Il corso prevede un significativo monte ore dedicato alla risoluzione di problemi di programmazione su architetture massivamente parallele in linguaggio CUDA.
Competenze acquisite
- Il concetto di parallelismo; tipologie di architetture parallele; classificazione; architetture non convenzionali.
Programma
Architetture parallele: il concetto di parallelismo; tassonomia di Flynn; topologia di memoria; i modelli Message Passing e Shared Memory; architetture MIMD e SIMD; architetture sistoliche e dataflow; architetture neurali; il software parallelo, naming, ordering, decomposition, orchestration, mapping; sincronizzazione (12 ore).
Architetture massivamente parallele: GPU, architettura, tipi e gestione della memoria, thread e kernel, gestione host e GPU, sincronizzazione, gestione multi-GPU (12 ore).
Il linguaggio CUDA: elementi del linguaggio, esempi applicativi, esercitazioni in laboratorio (18 ore).
Il linguaggio OpenCL: elementi del linguaggio, esempi applicativi, esercitazioni in laboratorio (18 ore).
Esercitazioni (36 ore).
Bibliografia
- D.B. Kirk, W-m.W Hwu, "Programming Massively Parallel Processors: A Hands-on Approach", Morgan-Kaufmann
Modalità d'esame
prova scritta
Ulteriore materiale didattico o informazioni reperibili alla pagina