Studiare
In questa sezione è possibile reperire le informazioni riguardanti l'organizzazione pratica del corso, lo svolgimento delle attività didattiche, le opportunità formative e i contatti utili durante tutto il percorso di studi, fino al conseguimento del titolo finale.
Piano Didattico
Il piano didattico è l'elenco degli insegnamenti e delle altre attività formative che devono essere sostenute nel corso della propria carriera universitaria.
Selezionare il piano didattico in base all'anno accademico di iscrizione.
1° Anno
| Insegnamenti | Crediti | TAF | SSD |
|---|
3 courses among the following2° Anno Sarà attivato nell'A.A. 2026/2027
| Insegnamenti | Crediti | TAF | SSD |
|---|
3 courses among the following| Insegnamenti | Crediti | TAF | SSD |
|---|
3 courses among the following| Insegnamenti | Crediti | TAF | SSD |
|---|
3 courses among the following| Insegnamenti | Crediti | TAF | SSD |
|---|
Legenda | Tipo Attività Formativa (TAF)
TAF (Tipologia Attività Formativa) Tutti gli insegnamenti e le attività sono classificate in diversi tipi di attività formativa, indicati da una lettera.
Parallel programming (2026/2027)
Codice insegnamento
4S009833
Crediti
6
Lingua di erogazione
Inglese
Offerto anche nei corsi:
- Programmazione parallela - Parte 1 - teoria del corso Laurea magistrale in Ingegneria e scienze informatiche
- Programmazione parallela - Parte 1 - laboratorio del corso Laurea magistrale in Ingegneria e scienze informatiche
- Programmazione parallela - Parte 2 - teoria del corso Laurea magistrale in Ingegneria e scienze informatiche
- Programmazione parallela - Parte 2 - Laboratorio del corso Laurea magistrale in Ingegneria e scienze informatiche
- Embedded AI - PARTE I - Parte I - Theory del corso Laurea magistrale in Artificial Intelligence
- Embedded AI - PARTE I - Parte I - Laboratory del corso Laurea magistrale in Artificial Intelligence
- Programmazione parallela - Parte 1 - laboratorio del corso Laurea magistrale in Ingegneria e scienze informatiche
- Programmazione parallela - Parte 1 - teoria del corso Laurea magistrale in Ingegneria e scienze informatiche
- Programmazione parallela - Parte 2 - Laboratorio del corso Laurea magistrale in Ingegneria e scienze informatiche
- Programmazione parallela - Parte 2 - teoria del corso Laurea magistrale in Ingegneria e scienze informatiche
Settore Scientifico Disciplinare (SSD)
ING-INF/05 - SISTEMI DI ELABORAZIONE DELLE INFORMAZIONI
Corsi Singoli
Autorizzato
L'insegnamento è organizzato come segue:
Part 2 - theory
Part 1 - theory
Part 2 - laboratory
Part 1 - laboratory
Obiettivi di apprendimento
Il corso si propone di fornire conoscenze teoriche e pratiche per la programmazione e l'analisi di architetture di calcolo avanzate con particolare enfasi alle piattaforme multiprocessore e GPU. Conoscenza e capacità di comprensione Capacità di applicare le conoscenze necessarie per individuare tecniche di parallelizzazione di applicazioni Software, anche in un contesto di ricerca, attraverso l'analisi dell'efficienza delle applicazioni considerando vincoli funzionali e non funzionali di progettazione (correttezza, performance, consumo energetico). Conoscenze applicate e capacità di comprensione Analisi delle performance e profiling del codice, con individuazione zone critiche e relativa ottimizzazione considerando caratteristiche architetturali della piattaforma. Autonomia di giudizio Capacità di confrontare pattern di parallelismo diversi e scegliere tra questi il piu adeguato a seconda del contesto d'uso. In fase di definizione della struttura del codice ottimizzato, capacità di fare le scelte progettuali più appropriate a seconda del contesto e piattaforma in cui l'applicazione parallela verrà usata. Abilità comunicative Lo studente sarà, inoltre, in grado di relazionarsi con gli interlocutori nell'ambiente lavorativo o di ricerca. Capacità di apprendere Capacità di proseguire gli studi in modo autonomo nell’ambito dei linguaggi di programmazione paralleli e dello sviluppo di software per piattaforme embedded e/o parallele.
Prerequisiti e nozioni di base
Programmazione di base in C
Programma
Theory
- Intro to parallel and heterogeneous architectures
- Intro to CUDA C
- GPU parallelism model
- Memory and data locality
- Thread Execution Efficiency
- Memory Access Performance
- Parallel Computation Patterns (Histogram)
- Parallel Computation Patterns (Stencil)
- Parallel Computation Patterns (Reduction)
- Parallel Computation Patterns (Scan)
- Floating-Point Considerations
- GPU as Part of the PC Architecture
- Efficient Host-Device Data Transfer
- Application Case Study: Advanced MRI Reconstruction
Lab
CUDA
MPI
Bibliografia
Modalità didattiche
Lezioni frontali per teoria
Lezioni frontali e sviluppo codice in lab.
Modalità di verifica dell'apprendimento
Esercizi a risposta aperta (tempo totale 2 ore)
Criteri di valutazione
Per superare l'esame lo studente dovrà dimostrare di:
- aver compreso i principi alla base della programmazione parallela
- essere in grado di esporre le proprie argomentazioni in modo preciso e organico senza divagazioni
- saper applicare le conoscenze acquisite per risolvere problemi applicativi presentati sotto forma di esercizi, domande e progetti.
Criteri di composizione del voto finale
L'esame consiste in una prova scritta, contenente domande a risposta multipla, domande a risposta aperta ed esercizi riguardanti sia la parte teorica che di laboratorio. Il punteggio massimo di ogni esercizio dipende dalla complessità. La somma dei massimi punteggi è 32/30. Lo studente potrà elaborare un progetto assegnato dal docente per un bonus (fino a +5 punti).
Lingua dell'esame
English