Menù principale
B024313 - PARALLEL COMPUTING
Principali informazioni
Lingua Insegnamento
Libri di testo consigliati
Obiettivi Formativi
Prerequisiti
Metodi Didattici
Modalità di verifica apprendimento
Programma del corso
Anno Accademico 2016-17
Coorte 2016 - Laurea Magistrale in INGEGNERIA INFORMATICA
Anno di corso
Primo Anno - Primo Semestre
Dipartimento di Afferenza
Ingegneria dell'Informazione
Tipo insegnamento
Attività formativa monodisciplinare
Settore Scientifico disciplinare
ING-INF/05 - SISTEMI DI ELABORAZIONE DELLE INFORMAZIONI
Crediti Formativi
9
Ore Didattica
72
Periodo didattico
19/09/2016 ⇒ 23/12/2016
Frequenza Obbligatoria
No
Tipo Valutazione
Voto Finale
Programma del corso
mostra
Docenza
Lingua Insegnamento
Lucidi in inglese.
Lezione in italiano.
Lezione in italiano.
Libri di testo consigliati (Cerca nel catalogo della biblioteca)
- Principles of Parallel Programming, Calvin Lyn and Lawrence Snyder, Pearson
- Parallel Programming for Multicore and Cluster Systems, Thomas Dauber and Gudula Rünger, Springer
- Programming Massively Parallel Processors, David B. Kirk and Wen-mei W. Hwu, Morgan Kaufmann
- An introduction to Parallel Programming, Peter Pacheco, Morgan Kaufmann
- Parallel Programming for Multicore and Cluster Systems, Thomas Dauber and Gudula Rünger, Springer
- Programming Massively Parallel Processors, David B. Kirk and Wen-mei W. Hwu, Morgan Kaufmann
- An introduction to Parallel Programming, Peter Pacheco, Morgan Kaufmann
Obiettivi Formativi
Scopo del corso è introdurre gli studenti alle tecniche di programmazione parallela e ad alta performance.
Al termine del corso lo studente possiede le basi fondamentali di programmazione parallela per sistemi multicore, cluster e GPGPU, conosce inoltre i principali paradigmi di programmazione parallela e gli ambienti di programmazione standard C++2011, OpenMP, MPI e CUDA.
Al termine del corso lo studente possiede le basi fondamentali di programmazione parallela per sistemi multicore, cluster e GPGPU, conosce inoltre i principali paradigmi di programmazione parallela e gli ambienti di programmazione standard C++2011, OpenMP, MPI e CUDA.
Prerequisiti
Conoscenze di C/C++ e Java.
Metodi Didattici
Lezioni frontali (80%) e attività di laboratorio (20%)
Modalità di verifica apprendimento
- Relazione e presentazione durante il corso (30% del voto finale)
- Progetto di sviluppo software finale (70% del voto finale)
Per la relazione e presentazione ad ogni studente viene assegnato un capitolo di libro sulla programmazione parallela da studiare.
Per il progetto di programmazione deve essere scritta una relazione tecnica ed una presentazione che descrive il lavoro e riporta la performance rispetto ad una versione sequenziale del progetto.
Gli elaborati sono scelti dagli studenti da una lista proposta dal docente. Possono essere svolti singolarmente o in coppia.
L'elaborato è mirato a dimostrare le capacità di:
- Saper implementare un software parallelo usando uno (corso a 6 crediti) o due (corso a 9 crediti) dei framework e strumenti visti a lezione
- Saper valutare gli effetti e differenze della programmazione parallela rispetto a quella sequenziale
- Saper misurare la performance di un programma parallelo rispetto ad uno sequenziale
- Saper scrivere una relazione tecnica ed effettuare una presentazione tecnica.
- Progetto di sviluppo software finale (70% del voto finale)
Per la relazione e presentazione ad ogni studente viene assegnato un capitolo di libro sulla programmazione parallela da studiare.
Per il progetto di programmazione deve essere scritta una relazione tecnica ed una presentazione che descrive il lavoro e riporta la performance rispetto ad una versione sequenziale del progetto.
Gli elaborati sono scelti dagli studenti da una lista proposta dal docente. Possono essere svolti singolarmente o in coppia.
L'elaborato è mirato a dimostrare le capacità di:
- Saper implementare un software parallelo usando uno (corso a 6 crediti) o due (corso a 9 crediti) dei framework e strumenti visti a lezione
- Saper valutare gli effetti e differenze della programmazione parallela rispetto a quella sequenziale
- Saper misurare la performance di un programma parallelo rispetto ad uno sequenziale
- Saper scrivere una relazione tecnica ed effettuare una presentazione tecnica.
Programma del corso
Livelli di parallelismo (istruzioni, transazioni, task, thread, memoria.)
Modelli di parallelismo (SIMD, MIMD, SPMD)
CPU e architetture parallele
Design Pattern per Programmazione concorrente (Master/Worker; Message passing)
Parallelization strategies, task parallelism, data parallelism, e work sharing
Programmazione parallela in C/C++ (C++11)/Java
Strutture dati concorrenti
Multi-core processor programming
Shared memory parallelism; OpenMP
Multithreading
Distributed network programming
Distributed memory model; MPI
Hadoop; Apache Storm e Lambda architecture
Overview GPGPU, Hardware GPU
CUDA; compilatore CUDA e strumenti
La memoria nella GPU e suo accesso
Stream e multi-GPU
Utilizzo librerie CUDA
Modelli di parallelismo (SIMD, MIMD, SPMD)
CPU e architetture parallele
Design Pattern per Programmazione concorrente (Master/Worker; Message passing)
Parallelization strategies, task parallelism, data parallelism, e work sharing
Programmazione parallela in C/C++ (C++11)/Java
Strutture dati concorrenti
Multi-core processor programming
Shared memory parallelism; OpenMP
Multithreading
Distributed network programming
Distributed memory model; MPI
Hadoop; Apache Storm e Lambda architecture
Overview GPGPU, Hardware GPU
CUDA; compilatore CUDA e strumenti
La memoria nella GPU e suo accesso
Stream e multi-GPU
Utilizzo librerie CUDA