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. Le CPU basate su hyperthreading e multicore non hanno quasi alcun impatto positivo sulla maggior parte del software attuale perché questo è stato progettato in modo sequenziale.
Pertanto, è necessario progettare il software con un nuovo approccio e strumenti. Lo scopo di questo insegnamento è introdurre all'architettura dei sistemi di elaborazione parallela insieme ai paradigmi di programmazione (openMP, MPI e CUDA) essenziali per sfruttarli
Learning the main aspects of modern 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, OpenMP, MPI, OpenCL).
Si veda la sezione in Inglese.
Buona conoscenza del linguaggio C/C++.
Lezioni forntali ed attività di laboratorio.
Ricevimento: Su appuntamento in presenza o Teams
DANIELE D'AGOSTINO (Presidente)
ANNALISA BARLA
GIORGIO DELZANNO (Presidente Supplente)
NICOLETTA NOCETI (Supplente)