## page was renamed from Algoritmi Paralleli e Sistemi Distribuiti #acl WilliamSpataro:read,write,revert EditorsGroup:read,write,delete,admin,revert All:read == Parallel Algorithms and Distributed Systems == <> === Course Information === '''Lecturer''': [[http://www.mat.unical.it/spataro|William Spataro]] '''Office Hours''': by appointment/upon request '''[[https://www.mat.unical.it/ComputerScience/AlgoritmiParalleliESistemiDistribuitiSUA|The syllabus of the course]]''' <
> === Notice board === Please check the lecturer's didactic calendar (https://sv.mat.unical.it/~spataro/teaching.html) for time modifications, etc Contact Lecturer (spataro[at]unical.it) for slides' password. <
> === Course material === ==== Slides ==== * [[attachment:Corso di Algoritmi Paralleli e Sistemi Distribuiti 0 - Introduzione.pdf|Lecture 0 - Introduction (pdf)|&do=get]] * [[attachment:Corso di Algoritmi Paralleli e Sistemi Distribuiti 1 - Introduzione.pdf|Lecture 1 - Introduction (pdf)|&do=get]] * [[attachment:Corso di Algoritmi Paralleli e Sistemi Distribuiti 2 - Modelli, Architetture.pdf|Lecture 2 - Architectures (pdf)|&do=get]] * [[attachment:Corso di Algoritmi Paralleli e Sistemi Distribuiti 3 - Modelli, Shared - OpenMP - 1a parte.pdf|Lecture 3 - Programming Models - Shared - OpenMP - 1st part (pdf)|&do=get]] * [[attachment:Corso di Algoritmi Paralleli e Sistemi Distribuiti 3 - Modelli, Design.pdf|Lecture 4 - Modelli, Partizionamento, Design (pdf)|&do=get]] * [[attachment:Corso di Algoritmi Paralleli e Sistemi Distribuiti 4 - Modelli, Shared - OpenMP - 2a parte.pdf|Lecture 5 - Programming Models - Shared - OpenMP - 2nd part (pdf)|&do=get]] * [[attachment:Corso di Algoritmi Paralleli e Sistemi Distribuiti 5 - Modelli, Shared - OpenMP - 3a parte.pdf|Lecture 6 - Programming Models - Shared - OpenMP - 3rd part (pdf)|&do=get]] * [[attachment:Corso di Algoritmi Paralleli e Sistemi Distribuiti 7 - Modelli - Esempi.pdf|Lecture 7 - Programming Models (Examples) (pdf)|&do=get]] * [[attachment:Corso di Algoritmi Paralleli e Sistemi Distribuiti 5 - MPI - 1 Parte.pdf|Lecture 8 - MPI (1st part) (pdf)|&do=get]] * [[attachment:Corso di Algoritmi Paralleli e Sistemi Distribuiti 7 - MPI - 2 Parte.pdf|Lecture 9 - MPI (2nd part) (pdf)|&do=get]] * [[attachment:Corso di Algoritmi Paralleli e Sistemi Distribuiti 8 - MPI - 3 Parte.pdf|Lecture 10 - MPI (3rd part)(pdf)|&do=get]] * [[attachment:Corso di Algoritmi Paralleli e Sistemi Distribuiti 8 - MPI - 4 Parte.pdf|Lecture 11 - MPI (4th part)(pdf)|&do=get]] * [[attachment:Corso di Algoritmi Paralleli e Sistemi Distribuiti 6 - Reti.pdf|Lecture 12 - Networks, etc (pdf)|&do=get]] * [[attachment:Corso di Algoritmi Paralleli e Sistemi Distribuiti 7 - Performance 1 Parte.pdf|Lecture 13 - Performance, etc (1st part) (pdf)|&do=get]] * [[attachment:Corso di Algoritmi Paralleli e Sistemi Distribuiti 9 - MPI - 5 Parte.pdf|Lecture 14 - MPI (5th part) (pdf)|&do=get]] * [[attachment:Corso di Algoritmi Paralleli e Sistemi Distribuiti 8 - Performance 2 Parte.pdf|Lecture 15 - Performance, etc (2nd part) (pdf)|&do=get]] * [[attachment:Corso di Algoritmi Paralleli e Sistemi Distribuiti 10 - MPI - 6 Parte.pdf|Lezione 16 - MPI (6th part) (pdf)|&do=get]] * [[attachment:Corso di Algoritmi Paralleli e Sistemi Distribuiti 8 -Sorting.pdf|Lecture 17 - Sorting, etc (pdf)|&do=get]] * [[attachment:Seminario_Cuda_Spataro.pdf|Lecture 18 - Cuda HPCC Seminar(pdf)|&do=get]] * [[attachment:Corso di Algoritmi Paralleli e Sistemi Distribuiti - MPI Esempi Codici - Laboratorio.pdf|MPI - Code examples, etc (pdf)|&do=get]] <
> ==== Tutorials / Handouts ==== * [[attachment:Introduction to Parallel Computing.zip|A (Simple) Parallel Computing overview (zip)|&do=get]] * [[attachment:OpenMP.zip|OpenMP overview (zip)|&do=get]] * [[attachment:Corso MPI.pdf| Excellent course on MPI by PACS Training Group|&do=get]] <
> ==== Links ==== * [[https://computing.llnl.gov/tutorials/parallel_comp/|Simple Parallel Computing Tutorial, from Lawrence Livermore National Laboratory | &do=get]] * [[http://www-unix.mcs.anl.gov/dbpp/|Designing and Building Parallel Programs, by Ian Foster | &do=get]] * [[http://bisqwit.iki.fi/story/howto/openmp/|A (nice) Quick Tutorial on OpenMP, by Joel Yliluoma | &do=get]] * [[http://openmp.org/wp/resources/#Tutorials|Tutorials and exercises on OpenMP (from the official site openmp.org) | &do=get]] * [[https://computing.llnl.gov/tutorials/mpi/|Simple but exhaustive Tutorial on MPI (from Lawrence Livermore National Laboratory) | &do=get]] * [[attachment:pthreads.pdf|Posix Threads (pdf) - just to see :)| &do=get]] * [[attachment:Linux-processes.pdf|Linux processes (pdf) | &do=get]] <
> ==== MPI ==== * [[attachment:mini_mpi_howto_Ver_1.pdf|Mini MPI HOWTO - Version 1.2.5| &do=get]] * [[attachment:mini_mpi_howto_Ver_2.pdf|Mini MPI HOWTO - Versione 2.1.2| &do=get]] * [[attachment:mpich.tar.gz|Libreria MPI (Version MPICH-1.2.5)| &do=get]] * [[attachment:mpich2-1.2.tar.gz|Libreria MPI (Version MPICH-2.1.2)| &do=get]] * [[attachment:mpichman-chp4.pdf|MPICH - 1.2.5 Manual| &do=get]] * [[attachment:mpich2-1.2-install-guide.pdf|MPICH - 2.1.2 Manual| &do=get]] * [[attachment:ConfigurazioneOpenglinLinux.pdf|Mini OpenGL-for-MPI HOWTO | &do=get]] * [[attachment:MPI- Funzioni.pdf|MPI Mini-Manual for Dummies (for the exam!)| &do=get]] <
> ==== Exercises ==== * [[attachment:openmp_example_codes.zip|OpenMP Example Codes| &do=get]] * [[attachment:esercizi 1 - Bonus.pdf|Easter bonus!!| &do=get]] * [[attachment:esercizi 2_ Struttura.pdf|A simple parallel structure ... (Cellular Automata)| &do=get]] <
> === Exam information === The final exam consists in a written test regarding all studied topics, and development (and discussion) of a MPI/OpenMP/CUDA project. ==== Exam Modality / Projects ==== * [[attachment:Modalita.pdf|Modality, etc|&do=get]] * [[attachment:progetto_AC.pdf|Cellular Automata Project|&do=get]] * [[attachment:progetto_Ordinamento.pdf|Parallel Sorting|&do=get]] * [[attachment:progetto_Grafi.pdf|Graph Algorithms|&do=get]] * [[attachment:progetto_Sistemi.pdf|Linear Equations System Algorithms|&do=get]] <
> === Acknowledgements / Sources === * Almerico Murli, Università di Napoli * Salvatore Orlando, Università di Venezia * Rolf Rabenseifner, University of Stuttgart * Jack Dongarra, University of Tennesse *Slides from "Parallel Programming Techniques & Applications Using Networked Workstations & Parallel Computers", 2nd ed., by B. Wilkinson & M. Allen, 2004 Pearson Education Inc. * Blaise Barney, Lawrence Livermore National Laboratory * Libro "Advanced Linux Programming" * Ananth Grama, Purdue University * George Karypis, University of Minnesota * Fedele Stabile, Università della Calabria * The openmp.org project <
> === Additional information === <
> ################################################ ##---- ## ##== Algoritmi Paralleli e Sistemi Distribuiti ==## ## ##=== Crediti ECTS e SSD di riferimento === ##5 CFU - INF/01 INFORMATICA ## ##=== Numero di ore di didattica assistita === ##24 ore teoria + 24 ore esercitazione/laboratorio ## ## ## ##=== Risultati di apprendimento specifici === ## ##Il corso si propone di fornire agli studenti del Corso Specialistica di Informatica : ## * conoscenze dei fondamenti e aspetti applicativi del calcolo parallelo; ## * conoscenze delle tecniche e metodi di progettazione e realizzazione di algoritmi paralleli; ## * conoscenza approfondita dei principi, strutture e utilizzo dei sistemi di elaborazione paralleli e, in particolare, delle ##tecniche di programmazione in ambiente Shared-memory e paradigma Message Passing; ## * conoscenza di diversi settori di applicazione del calcolo parallelo e, in particolare, della HPC (High Performance Computing). ## ## ##=== Programma === ## ##''Introduzione al Calcolo Parallelo'' ## * Scopi, Concetti e Terminologie ## * Tassonomia di Flynn ## ##''Architetture Parallele'' ## * Panoramica sulle macchine parallele ## * Memoria Condivisa (Multiprocessors) ## * Memoria Distribuita (Multicomputers) ## * Architetture Multi-core ## * Cache Coherence ## * Architetture Ibride ## ##''Modelli di Programmazione Paralleli'' ## * Modello a Threads ## * Modello a Memoria Condivisa ## * Modello a Memoria Distribuita ## * Modelli Data Parallel ## * Altri Modelli ## ##''Disegno di Programmi Paralleli'' ## * Parallelizzazione automatica e manuale ## * Partizionamento ## * Comunicazioni ## * Sincronizzazione ## * Load Balancing ## * Granularità ## * I/O parallelo ## ##''Panoramica su OpenMP - Il linguaggio di riferimento per la programmazione in ambienti a memoria condivisa/data parallel'' ## * Concetti generali ## * Loop paralleli ## * Variabili tipo private e shared ## * Sezioni critiche ## * Parallelismo funzionale ## ##''MPI - Il linguaggio di riferimento per la programmazione in ambienti a memoria distribuita'' ## * Concetti Generali ## * Routine di Gestione Ambiente ## * Comunicazioni Punto-Punto: MPI_Recv e MPI_Send ## * Comunicazioni Non-bloccanti ## * Comunicazioni Collettive ## * Tipi di Dati derivati ## * Comunicatori e Gruppi ## * Topologie virtuali ## ##''Programmazione GPGPU – La nuova frontiera del Calcolo Parallelo - CUDA C - Il linguaggio di riferimento per la programmazione su schede grafiche'' ## * Concetti generali, limiti ## * CUDA, CUDA C ## * Gerarchia dei Thread e della Memoria ## * Concetti di thread, blocco, grid e kernel ## * Strategia di ottimizzazione: utilizzo della shared memory, coalescenza ## ## ##''Analisi delle Performance'' ## * Parallel Overhead ## * Speedup e Efficienza ## * Speedup superlineare ## * Effetto della Granularità sulle Performance ## * Scalabilità ## * Legge di Amdahl ## * Isoefficienza ## ##''Algoritmi Paralleli'' ## * Calcolo Matriciale ## * Integrazione numerica ## * Algoritmi di ricerca e ordinamento ## * Analisi delle prestazioni di algoritmi paralleli ## ##=== Laboratorio === ## * Sviluppo di elementi di software parallelo in ambiente MPI e OpenMP su calcolatori paralleli ## * Sviluppo di elementi di software parallelo in ambiente GPGPU –CUDA C su schede grafiche NVIDIA ## * Misurazione delle prestazioni ## ##=== Tipologia di attività didattiche (lezioni, esercitazioni, etc) === ## ##Lezioni e esercitazioni su PC/Macchine parallele ## ##=== Metodi e criteri di valutazione dell’apprendimento === ## ##Prova scritta, prova laboratorio, valutazione progetto. ## ##=== Materiale didattico utilizzato o consigliato === ## * Ananth Grama et al., Introduction to Parallel Computing, 2/E, Addison-Wesley. ## * Peter Pacheco, Parallel Programming with MPI. Morgan Kaufmann, 1997 ## * G. Spezzano, D. Talia “Calcolo parallelo, automi cellulari e modelli per sistemi complessi”, Franco Angeli, Milano, 1999. ## * I. Foster. Designing and Building Parallel Programs. Addison-Wesley, 1995, Versione online disponibile presso http://www-##unix.mcs.anl.gov/dbpp ## * Materiale del Docente (Reperibile sul sito web personale) ## ## ##=== Sito Ufficiale del Corso === ## ##https://www.mat.unical.it/spataro/teaching/algoritmi/algoritmi.html