20410148 - IN480 - CALCOLO PARALLELO E DISTRIBUITO

Acquisire le tecniche di programmazione parallela e distribuita, e la conoscenza delle moderne architetture hardware e software per il calcolo scientifico ad alte prestazioni. Introdurre i metodi iterativi distribuiti per la simulazione di problemi numerici. Acquisire la conoscenza dei linguaggi di nuova concezione per la programmazione dinamica nel calcolo scientifico, quali il linguaggio Julia.
scheda docente | materiale didattico

Fruizione: 20810157 CALCOLO PARALLELO E DISTRIBUITO in Ingegneria informatica LM-32 PAOLUZZI ALBERTO

Programma

Breve introduzione al linguaggio Julia per calcolo scientifico. Introduzione alle architetture parallele. Principi di progetto di algoritmi paralleli. Tecniche di programmazione parallela e distribuita con Julia. Primitive di comunicazione e sincronizzazione: paradigma MPI. Linguaggi basati su direttive: OpenMP. Metriche di prestazione dei programmi paralleli. Operazioni matriciali e sistemi lineari densi: Cenni a BLAS, LAPACK, scaLAPACK. Sistemi lineari sparsi. Cenni a CombBLAS, GraphBLAS.



Testi Adottati

1. [Lecture slides and diary](https://github.com/cvdlab-courses/pdc/blob/master/schedule.md)

2. [Learning Julia](https://www.manning.com/books/julia-in-action)

3. Blaise N. Barney, [HPC Training Materials](https://computing.llnl.gov/tutorials/parallel_comp/), per gentile concessione del Lawrence Livermore National Laboratory's Computational Training Center

4. J. Dongarra, J. Kurzak, J. Demmel, M. Heroux, [Linear Algebra Libraries for High- Performance Computing: Scientific Computing with Multicore and Accelerators](http://www.netlib.org/utk/people/JackDongarra/SLIDES/sc2011-tutorial.pdf), SuperComputing 2011 (SC11)