Offerta Didattica

 

ENGINEERING AND COMPUTER SCIENCE

PARALLEL PROGRAMMING

Classe di corso: LM-32, 18 - Classe delle lauree magistrali in Ingegneria informatica
AA: 2019/2020
Sedi: MESSINA
SSDTAFtipologiafrequenzamoduli
ING-INF/05A scelta dello studenteLiberaLiberaNo
CFUCFU LEZCFU LABCFU ESEOREORE LEZORE LABORE ESE
64024824024
Legenda
CFU: 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

Il corso di Parallel Programming (programmazione parallela) si propone di introdurre gli studenti alla programmazione parallela e distribuita ed alle moderne architetture parallele hardware e software. L’obiettivo principale è dunque formare studenti che al fine del corso siano in grado di progettare e sviluppare soluzioni software in sistemi paralleli e distribuiti tenendo in considerazione l’architettura sottostante.

Learning Goals

The course is an introduction to parallel and distributed programming as well as to hardware and software parallel architectures. The main goal is to train students able to design and develop software systems and architecture for parallel and distributed systems.

Metodi 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. Buona conoscenza di un linguaggio di programmazione, prevalentemente C. Conoscenze di base di matematica e di statistica.

Prerequisites

Basic knowledge about computer architectures and operating systems. Good knowledge of a programming language, mainly C. Basic knowledge of mathematics and statistics.

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. Meccanismi di comunicazione ed aggregazione. Paradigmi shared address space e message passing. Modelli di parallelismo: master-worker, volunteer computing, pipeline computing, dataflow. 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. Programmazione MPI-OpenMP

Course Syllabus

Introduction 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 Programming

Testi 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

Elenco delle unità didattiche costituenti l'insegnamento

Docente: SALVATORE DISTEFANO

Orario di Ricevimento - SALVATORE DISTEFANO

GiornoOra inizioOra fineLuogo
Lunedì 11:00 12:00Ingegneria, 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'.
  • Segui Unime su:
  • istagram32x32.jpg
  • facebook
  • youtube
  • twitter
  • UnimeMobile
  • tutti