La programmazione parallela ha rappresentato per lungo tempo una tematica di interesse quasi esclusivamente per università, centri di ricerca e poche realtà aziendali di grandi dimensioni. Oggi invece rappresenta un requisito per la maggior parte delle applicazioni.
Fino al 2006 ogni nuova generazione di CPU forniva prestazioni migliori agendo su aspetti legati a velocità di clock, ottimizzazione dell'esecuzione e dimensioni della cache. Ma ora il miglioramento è dovuto principalmente al hyperthreading, multicore, oltre alla dimensioni della cache. Queste CPU non hanno quasi alcun impatto positivo sulla maggior parte del software attuale perché questo è stato progettato in modo sequenziale.
Questo insegnamento introduce l'architettura dei sistemi di elaborazione parallela con i paradigmi di programmazione (openMP, MPI e CUDA) essenziali per sfruttarli.
Poiché l'insegnamento viene tenuto in lingua inglese, si invita a visionare la scheda in inglese per ulteriori informazioni.
Learning the main aspects of modern, heterogeneous high-performance computing systems (pipeline/superscalar processors,shared-memory/message-passing multiprocessors, vector processors, GPUs) and basic programming skills for high-performance computing (cache optimization, vectorization, optimizations OpenMP, MPI, CUDA).
Buona conoscenza del linguaggio C/C++.
Lezioni frontali (22) ed attività di laboratorio (6).
Ricevimento: Su appuntamento in presenza o Teams
DANIELE D'AGOSTINO (Presidente)
ANNALISA BARLA
GIORGIO DELZANNO (Presidente Supplente)
NICOLETTA NOCETI (Supplente)