logo-polimi
Loading...
Risorse bibliografiche
Risorsa bibliografica obbligatoria
Risorsa bibliografica facoltativa
Scheda Riassuntiva
Anno Accademico 2022/2023
Scuola Scuola di Ingegneria Industriale e dell'Informazione
Insegnamento 056974 - ALGORITMI E ARCHITETTURE PER IL CALCOLO AD ALTE PRESTAZIONI
Cfu 10.00 Tipo insegnamento Monodisciplinare
Docenti: Titolare (Co-titolari) Ferrandi Fabrizio

Corso di Studi Codice Piano di Studio preventivamente approvato Da (compreso) A (escluso) Insegnamento
Ing Ind - Inf (1 liv.)(ord. 270) - MI (365) INGEGNERIA MATEMATICA*AZZZZ056974 - ALGORITMI E ARCHITETTURE PER IL CALCOLO AD ALTE PRESTAZIONI

Obiettivi dell'insegnamento

Obiettivo del corso è quello di ampliare le conoscenze di base di architettura dei calcolatori, algoritmi, linguaggi di programmazione e compilazione, acquisite nell'insegnamento di Informatica A, approfondendo le tecniche di progettazione di algoritmi, principi e linguaggi di programmazione parallela e architetture di calcolo parallele per il calcolo ad alte prestazioni. Tecniche di didattica innovativa (“Blended Learning & Flipped Classroom”) verranno utilizzate per stimolare la partecipazione degli studenti al corso e lo sviluppo di capacità di studio autonomo.


Risultati di apprendimento attesi

Conoscenza e comprensione

- Comprendere le strutture dati ed algoritmi fondamentali

- Conoscere le architettura dei calcolatori paralleli e la gerarchia di memoria

- Comprendere i principi di programmazione parallela

- Conoscere i linguaggi e gli strumenti di programmazione parallela

 

Capacità di applicare conoscenza e coomprensione

- Progettare algoritmi e strutture dati complessi

- Analizzare le prestazioni di algoritmi complessi

- Scrivere algoritmi paralleli partendo dalla loro specifica

- Sfruttare la conoscenza dell'architettura del calcolatore per migliorare le prestazioni dei programmi

 

Autonomia di giudizio

- Valutare la correttezza delle soluzioni adottate per un determinato problema

- Individuare i colli di bottiglia delle soluzioni esistenti

- Confrontare i benefici e gli svantaggi di diverse architetture rispetto al problema proposto


Argomenti trattati

Argomenti principali del corso

1) Struttura e progetto dei calcolatori

– Il calcolatore: astrazioni e tecnologia
– Le istruzioni: il linguaggio dei calcolatori
– L’aritmetica dei calcolatori
– Il processore
– Grande e veloce: la gerarchia delle memorie (una parte flipped)
– Processori paralleli: dai client al cloud

2) Algoritmi e loro analisi

– Algoritmi. Insertion Sort - Merge Sort. Analisi asintotica. Master method. Divide and Conquer: ricercar binaria, elevamento a potenza, etc
– Parallel Random-access Machine (PRAM) (una parte flipped)
– Algoritmi e strutture dati randomizzate
– Analisi ammortizzata
– Analisi competitive
– Dynamic Programming

3) Introduzione alla programmazione parallela

– Progettazione di algoritmi paralleli
– Strumenti e linguaggi di programmazione parallela: Posix thread,OpenMP,Message Passing Interface,CUDA (una parte flipped)
- Esempi di algoritmi paralleli

 


Obiettivi di sviluppo sostenibile - SDGs
Questo insegnamento contribuisce al raggiungimento dei seguenti Obiettivi di Sviluppo Sostenibile dell'Agenda ONU 2030:
  • SDG13 - CLIMATE ACTION

La creazione di un programma parallelo efficiente e veloce incide notevolmente sulla riduzione del consumo energetico dello strumento di calcolo. Inoltre, migliorare l'efficienza del programma applicativo scegliendo la corretta tecnologia ridurrà anche il consumo di energia e corrispondentemente le emissioni di carbonio.


Prerequisiti

Il prerequisito ideale consiste nell'avere superato l'esame di Informatica A; è comunque indispensabile avere almeno la capacità di scrivere semplici programmi in linguaggio C.


Modalità di valutazione

E' prevista una modalità di valutazione "continua" (continuous assessment) in cui l’insieme delle attività didattiche concorre a integrare i diversi tipi di valutazione (valutazione sommativa e autovalutazione).

In particolare, sono previste tre prove intermedie, distribuite lungo tutto il semestre di erogazione, nella forma di brevi prove scritte. Ciascuna prova scritta copre uno dei tre macro argomenti trattati nel corso:

PI-1) Struttura e progetto dei calcolatori

PI-2) Algoritmi e loro analisi

PI-3) Introduzione alla programmazione parallela

Ciascuna delle tre prove intermedie PI-1, PI-2 e PI-3 assegna un massimo di 11 punti. Le date delle singole prove saranno comunicate in aula e pubblicate sul Web di Ateneo. L'invalidità di una prova non preclude la partecipazione alle altre. L'esito delle tre prove sarà valido per tutto l'anno accademico.

Negli appelli previsti dal calendario accademico sarà possibile ripetere ciascuna delle tre prove PI-1, PI-2 e PI-3. Il testo dell'esame sarà consistente con la richiesta di quali prove PI-1, PI-2 e PI-3 lo studente vorrà sostenere. Ogni prova ripetuta annullerà il risultato ottenuto precedentemente indipendentemente dall'esito.

Ciascuna delle prove potrà essere integrata da una eventuale discussione orale esclusivamente su richiesta del docente. Il voto dell'esame è ottenuto come somma dei tre punteggi ottenuti per PI-1, PI-2 e PI-3. La lode sarà assegnata in caso di punteggio superiore a 30 punti. Ciascuna prova concorre alla definizione del voto d'esame solo se il suo punteggio è non inferiore a 5 punti.

La partecipazione ad attività in aula di apprendimento innovativo sarà valutata e concorrerà al voto finale di valutazione. In particolare, in caso di voti validi, alcune domande della prova scritta potrebbero essere saltate.

 


Bibliografia
Risorsa bibliografica facoltativaDavid A. Patterson, John L. Hennessy, Struttura e progetto dei calcolatori. Progettare con RISC-V., Editore: Zanichelli, Anno edizione: 2019, ISBN: 978-8808820594
Risorsa bibliografica facoltativaT. Cormen, C. Leiserson, R. Rivest and C. Stein, Introduction to Algorithms, Editore: MIT Press, Cambridge; 3rd edition,, Anno edizione: 2009, ISBN: 978-0262533058
Risorsa bibliografica facoltativaRajeev Motwani, Prabhakar Raghavan,, Randomized Algorithms, Editore: Cambridge University Press, Anno edizione: 1995, ISBN: 978-0521474658
Risorsa bibliografica facoltativaMichael McCool, James Reinders, Arch Robison,, Structured Parallel Programming: Patterns for Efficient Computation, Editore: Morgan Kaufmann, Anno edizione: 2012, ISBN: 0124159931 http://parallelbook.com/
Risorsa bibliografica facoltativaDavid B. Kirk, Wen-mei W. Hwu,, Programming Massively Parallel Processors: A Hands-on Approach,, Editore: Morgan Kaufmann, Anno edizione: 2017, ISBN: 978-0-12-811986-0
Note:

3rd edition

Risorsa bibliografica facoltativaPeter Pacheco, An Introduction to Parallel Programming, , Editore: Morgan Kaufmann, Anno edizione: 2011, ISBN: 978-0123742605
Risorsa bibliografica facoltativaparallel programming online material https://hpc.llnl.gov/documentation/tutorials/introduction-parallel-computing-tutorial
Risorsa bibliografica facoltativaAdditional material is available on WeBeep of Politecnico di Milano https://webeep.polimi.it

Software utilizzato
Nessun software richiesto

Forme didattiche
Tipo Forma Didattica Ore di attività svolte in aula
(hh:mm)
Ore di studio autonome
(hh:mm)
Lezione
55:00
82:30
Esercitazione
40:00
60:00
Laboratorio Informatico
0:00
0:00
Laboratorio Sperimentale
0:00
0:00
Laboratorio Di Progetto
5:00
7:30
Totale 100:00 150:00

Informazioni in lingua inglese a supporto dell'internazionalizzazione
Insegnamento erogato in lingua Italiano
Disponibilità di materiale didattico/slides in lingua inglese
Disponibilità di libri di testo/bibliografia in lingua inglese
Possibilità di sostenere l'esame in lingua inglese
Disponibilità di supporto didattico in lingua inglese
schedaincarico v. 1.10.0 / 1.10.0
Area Servizi ICT
10/10/2024