You are in: Home » Teaching » HPC 2021-2022

High Performance Computing
Laurea in Ingegneria e Scienze Informatiche, Università di Bologna, 2021/2022

[ Avvisi | Introduzione | Programma | Esame | Lezioni e laboratorio ]

Avvisi

1/12/2021 New
Ultima lezione del corso
13/11/2021
Le date degli esami scritti della sessione invernale (gennaio/febbraio 2022) sono state pubblicate su AlmaEsami. Gli esami si svolgeranno in modalità esclusivamente online.
21/9/2021
La lezione di giovedì 23/9 si terrà in lab 2.2 anziché lab 3.1
27/8/2021
Creata questa pagina.

Introduzione

Questa è la pagina del corso di High Performance Computing, corso di laurea in Ingegneria e Scienze Informatiche, AA 2021/2022, Università di Bologna (campus di Cesena). Il corso fornisce agli studenti le conoscenze teoriche e pratiche necessarie per progettare, implementare e analizzare programmi paralleli su architetture a memoria condivisa e distribuita. In particolare, durante il corso gli studenti impareranno a realizzare programmi paralleli usando OpenMP, MPI e CUDA/C.

Prerequisiti: Questo corso richiede una buona conoscenza della programmazione in linguaggio C e delle architetture dei calcolatori (a livello di quanto presentato nel corso di architettura dei calcolatori). Lavoreremo in ambiente Linux utilizzando prevalentemente software libero (compilatore GCC, libreria Open MPI; per la programmazione CUDA useremo il software proprietario NVIDIA, dato che al momento mancano alternative libere adeguate). È quindi auspicabile avere già acquisito confidenza con l'ambiente Unix/Linux e i suoi strumenti di sviluppo.

Programma, libri di testo e orario

Programma di massima

Laboratorio

Durante il corso verranno svolte delle esercitazioni di laboratorio per prendere pratica con le tecniche di programmazione parallela svolte a lezione. Viene messo a disposizione degli studenti un server Linux configurato con il software necessario; per l'accesso al server è possibile fare riferimento alle apposite istruzioni.

Le esercitazioni di laboratorio si svolgono nel modo seguente: il docente mette a disposizione delle implementazioni seriali di programmi che risolvono determinati problemi, descritti nel testo dell'esercitazione. Scopo dell'esercitazione è di parallelizzare la versione seriale usando le tecnologie indicate. All'inizio di ogni esercitazione, il docente svolgerà uno degli esercizi in modo guidato.

Si noti che ad ogni esercitazione vengono proposti molti più esercizi di quanti possano essere realisticamente svolti nel tempo disponibile in laboratorio. Non mi aspetto quindi che vengano svolti tutti, ma voglio lasciare un po' di scelta tra problemi di tipo diverso in cui ciascuno possa trovare qualcosa di interessante.

Testi di riferimento

Materiale per approfondimenti

Orario delle lezioni

Le lezioni si svolgeranno in parte online e in parte presso il nuovo campus universitario di Cesena. Le lezioni in aula saranno comunque trasmesse in diretta streaming, in modo che sia possibile seguirle anche da remoto.

Alcune lezioni potrebbero subire delle variazioni rispetto all'orario; si prega di fare riferimento al calendario delle lezioni che verrà aggiornato di volta in volta.

Orario del corso di High Performance Computing, AA 2021/2022
Lunedì 09:00—12:00 Aula 2.4
Mercoledì 15:00—18:00 Lab 2.2 (dalla seconda settimana in poi)
Giovedì 15:00—18:00 Lab (prima settimana, 23/9/2021)

Esame

Specifiche del progetto per l'AA 2021/2022

Specifiche del progetto [PDF] [sorgenti] Consegna tramite virtuale entro le ore 23:59 del 30 settembre 2022

Regole d'esame

Per sostenere la prova scritta è obbligatorio iscriversi tramite AlmaEsami. Le liste di iscrizione chiudono alcuni giorni prima per consentire la gestione degli aspetti logistici dell'esame, per cui è necessario iscriversi per tempo. Le date delle prove scritte sono riportate nella tabella seguente:

Prove scritte di High Performance Computing 2021/2022
Sessione invernale (Gennaio-Febbraio 2022)
I 12/1/2022 (la prova si svolgerà in modalità esclusivamente online)
È obbligatorio iscriversi tramite AlmaEsami
II 9/2/2022 (la prova si svolgerà in modalità esclusivamente online)
È obbligatorio iscriversi tramite AlmaEsami
Sessione estiva (Giugno-Luglio 2022)
I TBD
II TBD
III TBD
Sessione autunnale (Settembre 2022)
I TBD

Lezioni e laboratorio

Codice

HPC2122.zip: esempi di programmazione illustrati durante il corso.

Istruzioni per l'accesso al server usato in laboratorio.

Lucidi e altro materiale

I lucidi non sostituiscono né i testi di riferimento né la frequenza delle lezioni e dei laboratori, che costituiscono importanti elementi per una buona preparazione dell'esame; i lucidi rappresentano uno schema di parte delle lezioni. Ringrazio chi mi segnalerà eventuali errori.

I lucidi al momento disponibili sono quelli usati l'anno accademico precedente; saranno possibili modifiche durante il corso, specialmente prima delle lezioni.

20/09/2021 ore 09:00 aula 2.4 [Link Teams]
Introduzione al corso (Pacheco cap. 1)
[ODP] [PDF] [video]
Per approfondire
23/09/2021 ore 15:00 lab 3.1 2.2 [Link Teams]
Introduzione (cont.)
Parallel architectures (Pacheco cap. 2 escluso 2.3.3)
[ODP] [PDF] [video]
Per approfondire
27/9/2021 ore 09:00 aula 2.4 [Link Teams]
Performance Evaluation of Parallel Programs (Pacheco cap. 2.6)
[ODP] [PDF] [video]
Per approfondire
29/9/2021 ore 15:00 lab 2.2 [Link Teams]
Parallel Programming Patterns (McCool et al. cap 3)
[ODP] [PDF] [video]
Per approfondire
4/10/2021 ore 9:00 aula 2.4 [Link Teams]
Parallel Programming Patterns (cont.)
[video]
6/10/2021 ore 15:00 lab 2.2 [Link Teams]
Parallelizing Loops
[ODP] [PDF] [video]
11/10/2021 ore 9:00 aula 2.4 [Link Teams]
Shared-Memory Programming with OpenMP (Pacheco cap. 5)
[ODP] [PDF] [video]
Per approfondire
13/10/2021 ore 15:00 lab 2.2 [Link Teams]
Lab OpenMP
[video]
[Istruzioni per l'accesso al server]
Nota: vengono proposti più esercizi di quanti realisticamente possano essere svolti nelle ore di laboratorio; quello che non si riesce a fare durante il laboratorio viene lasciato per casa.
  1. Decifrare un messaggio cifrato [Soluzione]
  2. Prodotto scalare [Soluzione]
  3. Calcolo del valore approssimato di π [Soluzione]
  4. Frequenza dei caratteri [Soluzione]
  5. Il crivello di Eratostene [Soluzione]
  6. Scan inclusiva [Soluzione]
18/10/2021 ore 9:00 aula 2.4 [Link Teams]
Shared-Memory Programming with OpenMP (cont.)
[video]
20/10/2021 ore 15:00 lab 2.2 [Link Teams]
Lab OpenMP
[video]
[Istruzioni per l'accesso al server]
  1. Ray tracing [Soluzione]
  2. Loop-carried dependencies [Soluzione]
  3. Merge Sort [Soluzione]
  4. Simulare clausola schedule(dynamic) [Soluzione]
  5. La mappa del gatto di Arnold [Soluzione]
25/10/2021 ore 9:00 aula 2.4 [Link Teams]
Distributed-Memory Programming with MPI (Pacheco cap. 3)
[ODP] [PDF] [video]
Per approfondire
27/10/2021 ore 15:00 lab 2.2 [Link Teams]
Lab MPI
[video]
[Istruzioni per l'accesso al server]
  1. Comunicazione ad anello [Soluzione]
  2. Comunicazione broadcast [Soluzione]
  3. Calcolo del valore approssimato di π [Soluzione]
  4. Somma del contenuto di un array [Soluzione]
1/11/2021
No lezione
3/11/2021 ore 15:00 lab 2.2 [Link Teams]
Lab MPI
[video]
[Istruzioni per l'accesso al server]
  1. Insieme di Mandelbrot [Soluzione]
  2. Prodotto scalare [Soluzione]
  3. Calcolo dell'area dell'unione di cerchi [Soluzione]
8/11/2021 ore 9:00 aula 2.4 [Link Teams]
Distributed-Memory Programming with MPI (cont.)
[video]
10/11/2021 ore 15:00 lab 2.2 [Link Teams]
Lab MPI
[video]
[Istruzioni per l'accesso al server]
  1. Bounding Box [Soluzione]
  2. MPI Datatype [Soluzione]
  3. Automa cellulare della regola 30 [Soluzione]
  4. (Esercizio extra) Ricerca parallela su array [Soluzione]
15/11/2021 ore 9:00 aula 2.4 [Link Teams]
CUDA Programming
[ODP] [PDF] [video]
Per approfondire
17/11/2021 ore 15:00 lab 2.2 [Link Teams]
Lab CUDA
[video]
[Istruzioni per l'accesso al server]
  1. Prodotto scalare con CUDA [Soluzione]
  2. Inversione di array [Soluzione]
  3. Odd-Even Transposition Sort [Soluzione]
  4. (Esercizio extra) Oscillatori accoppiati [Soluzione]
22/11/2021 ore 9:00 aula 2.4 [Link Teams]
CUDA Programming (cont.)
[video]
24/11/2021 ore 15:00 lab 2.2 [Link Teams]
Lab CUDA
[video]
[Istruzioni per l'accesso al server]
  1. Somma di matrici [Soluzione]
  2. Automa cellulare della regola 30 [Soluzione]
  3. L'automa cellulare ANNEAL [Soluzione]
  4. (Esercizio extra) La mappa del gatto di Arnold [Soluzione]
29/11/2021 ore 9:00 aula 2.4 [Link Teams]
SIMD Programming
[ODP] [PDF] [video]
Per approfondire
1/12/2021 ore 15:00 lab 2.2 [Link Teams]
Ultima lezione
Seminario prof. Andrea Bartolini (DEI-UniBO); video sulla piattaforma Virtuale
Alcuni esercizi di laboratorio, se avanzerà tempo:
[Istruzioni per l'accesso al server]
  1. Prodotto scalare [Soluzione]
  2. Prodotto matrice-matrice [Soluzione]
  3. Mappatura livelli di grigio di una immagine [Soluzione]
  4. La mappa del gatto di Arnold [Soluzione]
This page validates as XHTML 1.0 strict This page validates as CSS Check the accessibility of this page with WAVE
This page was last updated on December 06 2021 informativa sulla privacy