Offerta Didattica
ENGINEERING AND COMPUTER SCIENCE
PARALLEL PROGRAMMING
Classe di corso: LM-32, 18 - Classe delle lauree magistrali in Ingegneria informatica
AA: 2020/2021
Sedi: MESSINA
SSD | TAF | tipologia | frequenza | moduli |
---|---|---|---|---|
ING-INF/05 | A scelta dello studente | Libera | Libera | No |
CFU | CFU LEZ | CFU LAB | CFU ESE | ORE | ORE LEZ | ORE LAB | ORE ESE |
---|---|---|---|---|---|---|---|
6 | 4 | 0 | 2 | 48 | 24 | 0 | 24 |
LegendaCFU: n. crediti dell’insegnamento CFU LEZ: n. cfu di lezione in aula CFU LAB: n. cfu di laboratorio CFU ESE: n. cfu di esercitazione FREQUENZA:Libera/Obbligatoria MODULI:SI - L'insegnamento prevede la suddivisione in moduli, NO - non sono previsti moduli ORE: n. ore programmate ORE LEZ: n. ore programmate di lezione in aula ORE LAB: n. ore programmate di laboratorio ORE ESE: n. ore programmate di esercitazione SSD:sigla del settore scientifico disciplinare dell’insegnamento TAF:sigla della tipologia di attività formativa TIPOLOGIA:LEZ - lezioni frontali, ESE - esercitazioni, LAB - laboratorio
Obiettivi Formativi
OF1 (Conoscenza e comprensione) – Fornire i concetti fondamentali della programmazione parallela, delle tematiche e problematiche relative la parallelizzazione degli algoritmi e delle metodologie di decomposizione, comunicazione aggregazione e mapping di task a risorse computazionali parallele e distribuite. OF2 (Capacità di applicare conoscenza e comprensione) - Applicazione delle conoscenze e tecniche acquisite nell’ambito dei sistemi paralleli e distribuiti, HPC e calcolo parallelo. Capacità di applicare le tecniche acquisite nella progettazione, sviluppo e manutenzione di sistemi paralleli e distribuiti e nella parallelizzazione di sistemi preesistenti o revisione di soluzioni parallele. OF3 (Autonomia di giudizio) - Capacità di effettuare scelte sulla parallelizzazione di un algoritmo e sull’implementazione di soluzioni parallele che possano ottimizzare prestazioni, affidabilità e costi, valutando in autonomia eventuali trade-off tra tali grandezze, sfruttando le competenze acquisite durante il corso ed applicate in fase sperimentale/di progetto OF4 (Abilità comunicative) - Acquisizione di abilità nella risoluzione di problemi, in particolare attraverso lo sviluppo di algoritmi paralleli e soprattutto di rappresentarli e specificarli attraverso specifica documentazione o comunicarli direttamente ai membri del team attraverso progetti di gruppo. OF5 (Capacità di apprendimento) – Acquisizione di autonomia nell’analisi e nello studio di problemi da parallelizzare e nell’apprendimento di nuove tecniche così come nella ricerca di middleware, tools, librerie e package di classi utili alla risoluzione di problemi complessi. Adozione di approcci di programmazione parallela e loro adattamento al problema in oggetto.Learning Goals
OF1 (Knowledge and understanding) - Knowledge and understanding of the concepts of parallel programming, with specific regard to message passing, shared address space/shared memory and dataflow parallelism approaches. Overview of issues and problems related to algorithm parallelization and decomposition methodologies, communication, aggregation, and mapping of tasks to parallel and distributed computational resources. OF2 (Ability to apply knowledge and understanding) - Application of PP theories, methodologies and techniques in the context of parallel and distributed systems, HPC and parallel computing. Ability to apply the techniques acquired in the design, development and maintenance of parallel and distributed systems and in the parallelization of existing systems or improving existing parallel algorithms and solutions. OF3 (Autonomy of judgment) - Ability to parallelize an algorithm choosing among the approaches acquired during the course and applied in the experimental / project phase Ability to make choices on the implementation of parallel solutions that can optimize performance, reliability and costs, independently evaluating any trade-offs between these quantities, taking advantage of the skills acquired during the course and applied in the experimental phase / project. OF4 (Communication skills) - Acquisition of problem solving skills, in particular through the development of parallel algorithms, with specific regard to their representation and specification through documentation or direct communication to team members through group projects and assignments. OF5 (Learning skills) â Autonomy in the analysis and study of problems to be parallelized and in learning new techniques as well as looking for middleware, tools, libraries and class packages useful for solving complex problems. Adoption of parallel programming approaches and their adaptation to the problem in questionMetodi didattici
Lezioni frontali e laboratorio: il corso si svolge prevalentemente attraverso lezioni frontali e seminari su specifici aspetti disciplinari. Parte delle lezioni verteranno su aspetti pratici/di laboratorio, espletato prevalentemente in aula attraverso sessioni “hands on” su propri dispositivi (BYOD – Bring Your Own Device)Teaching Methods
Front lecturing, seminars and hands on lab (BYOD Bring Your Own Device)Prerequisiti
Conoscenze di base relative alle architetture e ai sistemi operativi degli elaboratori elettronici. Conoscenza di un linguaggio di programmazione.Prerequisites
Basic knowledge of computer architectures and operating systems. Knowledge of a programming language.Verifiche dell'apprendimento
Elaborazione di un progetto di programmazione parallela, relazione scritta e discussione dei risultati e degli argomenti teorici relativi al progetto.Assessment
Project with report and discussion of results and related theoretical background.Programma del Corso
Introduzione al calcolo parallelo. Parallelismo Implicito ed Esplicito. Architetture SIMD e MIMD, memoria condivisa e memoria distribuita. Reti di comunicazione e topologie in sistemi distribuiti. Storage distribuito, RAID, architetture di storage distribuito ed in rete: DAS, NAS, SAN. Speed up ed efficienza di algoritmi paralleli, scaling debole e scaling forte. Decomposizione di algoritmi paralleli, task parallelism e data parallelism, task decomposition graph e task interaction graph, tecniche di decomposizione dei task basati su dati, interazioni, ed altri parametri. Mapping, tecniche di mapping, mapping statico e dinamico. Paradigmi shared address space e message passing. Principali primitive MPI. Primitive di comunicazione collettiva e loro implementazione ed ottimizzazione. Programmazione parallela attraverso OpenMP. Laboratorio di calcolo parallelo: progettazione e realizzazione di un cluster parallelo.Course Syllabus
ntroduction to parallel computing. Implicit and explicit Parallelism. SIMD e MIMD architectures, shared and distributed memory. Speed-up and efficiency of parallel algorithms, strong and weak scaling. Storage systems: RAID, DAS, NAS, SAN. Speedup, Efficiency, Amdhal law. Decomposition and partitioning, task and data parallelism, ask decomposition graph and task interaction graph. Communication models, Shared address space and Message passing paradigms. Task aggregation. Mapping techniques and solutions. Main MPI routines. OpenMP programming. Parallel computing lab: design and implementation of a small parallel cluster. MPI-OpenMP ProgrammingTesti di riferimento:
Libri suggeriti (in ordine di rilevanza)
- Introduction to Parallel Computing, Second Edition By Ananth Grama, Anshul Gupta, George Karypis, Vipin Kumar Publisher: Addison Wesley, 2003 ISBN: 0-201-64865-2 Pages: 856
- Wilkinson Allen “Parallel Programming. Techniques and applications using networked workstations and parallel computers” Second edition - Pearson ISBN:0-131-40563-2
- Lin- Snyder “Principles of Parallel Programming” - Pearson ISBN:0-321-48790-7
Esami: Elenco degli appelli
Elenco delle unità didattiche costituenti l'insegnamento
Docente: SALVATORE DISTEFANO
Orario di Ricevimento - SALVATORE DISTEFANO
Giorno | Ora inizio | Ora fine | Luogo |
---|---|---|---|
Lunedì | 11:00 | 12:00 | Ingegneria, Piano 7, Blocco B |
Note: Il ricevimento è previa appuntamento, si prega di contattare il docente e concordare la data e l'ora di ricevimento, non necessariamente il lunedi'.