===== SPM 2012-2013 ===== ==== Lessons ==== [[http://unimap.unipi.it/registri/dettregistriNEW.php?re=90768::::&ri=8045|This]] is the link to the official lesson register ^ Day ^ Hours ^ Arguments ^ Support material ^ | 18/02 | 16-18 | Course introduction. Program. Web site. Exam/project. Overview of parallel architectures. Amdahl law. | [[http://backus.di.unipi.it/~marcod/SPM1213/spm1802.pdf|Blackboard]] | | 19/02 | 16-18 | Power and parallelism. More on Amdahl law. Gustafson law. Work-span model | [[http://backus.di.unipi.it/~marcod/SPM1213/spm1902.pdf|Blackboard]] | | 21/02 | 14-16 | Concurrent activity graph: concurrent activities (finer grain and "more convenient" graphs), coordination of activities, problems related to implementation. | [[http://backus.di.unipi.it/~marcod/SPM1213/spm2102.pdf|Blackboard]] [[http://backus.di.unipi.it/~marcod/SPM1213/spm2102.1.mp3|1st hour audio]][[http://backus.di.unipi.it/~marcod/SPM1213/spm2102.2.mp3|2nd hour audio]] | | 04/03 | 16-18 | More on features of interest for parallel programming: reliability, security. Mechanisms for setting up concurrent activities (processes (fork, exec), threads (pthread_create)) and for communications (Sockets, SysV (shmem, msq)) | [[http://backus.di.unipi.it/~marcod/SPM1213/spm0304.pdf|Blackboard]] [[http://backus.di.unipi.it/~marcod/SPM1213/spm0304.1.mp3|1st hour audio]][[http://backus.di.unipi.it/~marcod/SPM1213/spm0304.2.mp3|2nd hour audio]] | | 05/03 | 16-18 | Details on the usage of SysV primitives and pthreads. Introduction of OpenMP. Discussion of the principles behind the parallelization of a matrix multiplication. Map and reduce patterns (informal introduction). | [[http://backus.di.unipi.it/~marcod/SPM1213/spm0503.pdf|Blackboard]] [[http://backus.di.unipi.it/~marcod/SPM1213/spm0503.1.mp3|1st hour audio]][[http://backus.di.unipi.it/~marcod/SPM1213/spm0503.2.mp3|2nd hour audio]] | | 11/03 | 16-18 | Algorithmic skeletons and parallel design patterns (introduction). Typical patterns: stream parallel (farm, pipeline), data parallel (map, reduce, scan, stencil), control parallel (if-then-else, while) | [[http://backus.di.unipi.it/~marcod/SPM1213/spm1103.pdf|Blackboard]] [[http://backus.di.unipi.it/~marcod/SPM1213/spm1103.1.mp3|1st hour audio]][[http://backus.di.unipi.it/~marcod/SPM1213/spm1103.2.mp3|2nd hour audio]] | | 12/03 | 16-18 | Wrappers (sequential and parallel). Skeleton/pattern nesting. Two tier model. Functional and parallel semantics of common patterns and consequences on composition. | [[http://backus.di.unipi.it/~marcod/SPM1213/spm1203.pdf|Blackboard]] [[http://backus.di.unipi.it/~marcod/SPM1213/code1203.txt|Ocaml code]] [[http://backus.di.unipi.it/~marcod/SPM1213/spm1203.1.mp3|1st hour audio]][[http://backus.di.unipi.it/~marcod/SPM1213/spm1203.2.mp3|2nd hour audio]] | | 14/03 | 14-16 | State handling in structured parallel patterns. Different implementation models for patterns: implementation templates. | [[http://backus.di.unipi.it/~marcod/SPM1213/spm1403.pdf|Blackboard]] [[http://backus.di.unipi.it/~marcod/SPM1213/spm1403.1.mp3|1st hour audio]][[http://backus.di.unipi.it/~marcod/SPM1213/spm1403.2.mp3|2nd hour audio]] | | 18/03 | 16-18 | Template composition, optimizations, performance model usage and sample template (farm on a mesh architecture). Macro data flow implementation model. | [[http://backus.di.unipi.it/~marcod/SPM1213/spm1803.pdf|Blackboard]] [[http://backus.di.unipi.it/~marcod/SPM1213/spm1803.1.mp3|1st hour audio]][[http://backus.di.unipi.it/~marcod/SPM1213/spm1803.2.mp3|2nd hour audio]] | | 19/03 | 16-18 | Introduction to FastFlow: sequential code wrapping, pipeline pattern, farm pattern, customisation of the farm: misd and map. | [[http://backus.di.unipi.it/~marcod/SPM1213/spm1903.pdf|Blackboard]][[http://backus.di.unipi.it/~marcod/SPM1213/spm1903.1.mp4|Video 1st hour (blackboard only)]][[http://backus.di.unipi.it/~marcod/SPM1213/spm1903.2.mp4|Video 2nd hour (blackboard only)]] [[http://backus.di.unipi.it/~marcod/SPM1213/spm1903.1.mp3|1st hour audio]][[http://backus.di.unipi.it/~marcod/SPM1213/spm1903.2.mp3|2nd hour audio]] | | 21/03 | 14-16 | Software accelerators (FastFlow (with sample code) and SkeTo style). Analytical performance models: base measures and derived measures. | [[http://backus.di.unipi.it/~marcod/SPM1213/spm2103.pdf|Blackboard]][[http://backus.di.unipi.it/~marcod/SPM1213/spm2103.1.mp4|Video 1st hour (blackboard only)]][[http://backus.di.unipi.it/~marcod/SPM1213/spm2103.2.mp4|Video 2nd hour (blackboard only)]] [[http://backus.di.unipi.it/~marcod/SPM1213/spm2103.1.mp3|1st hour audio]][[http://backus.di.unipi.it/~marcod/SPM1213/spm2103.2.mp3|2nd hour audio]] | | 25/03 | 16-18 | Performance model usage and definition. | [[http://backus.di.unipi.it/~marcod/SPM1213/spm2503.pdf|Blackboard]] [[http://backus.di.unipi.it/~marcod/SPM1213/spm2503.1.mp3|1st hour audio]][[http://backus.di.unipi.it/~marcod/SPM1213/spm2503.2.mp3|2nd hour audio]] | | 26/03 | 16-18 | Queue theory results for performance modelling. Parallel building blocks (introduction). Calls to measure execution time | [[http://backus.di.unipi.it/~marcod/SPM1213/spm2603.pdf|Blackboard]] [[http://backus.di.unipi.it/~marcod/SPM1213/spm2603.1.mp3|1st hour audio]][[http://backus.di.unipi.it/~marcod/SPM1213/spm2603.2.mp3|2nd hour audio]] | | 28/03 | 14-16 | Skandium programming framework (Dazzi) | [[http://hpc.isti.cnr.it/~dazzi/?p=162|Lesson material]] | | 08/04 | 16-18 | Implementation of patterns: templates, building blocks, optimizations (communication hiding, cache coherence optimizations). | [[http://backus.di.unipi.it/~marcod/SPM1213/spm0804.pdf|Blackboard]] [[http://backus.di.unipi.it/~marcod/SPM1213/spm0804.1.mp3|1st hour audio]][[http://backus.di.unipi.it/~marcod/SPM1213/spm0804.2.mp3|2nd hour audio]] | | 09/03 | 16-18 | OpenMP | [[http://backus.di.unipi.it/~marcod/SPM1213/spm0904.pdf|Blackboard]][[http://backus.di.unipi.it/~marcod/SPM1213/spm0904.1.mp4|Video 1st hour (blackboard only)]][[http://backus.di.unipi.it/~marcod/SPM1213/spm0904.2.mp4|Video 2nd hour (blackboard only)]] [[http://backus.di.unipi.it/~marcod/SPM1213/spm0904.1.mp3|1st hour audio]][[http://backus.di.unipi.it/~marcod/SPM1213/spm0904.2.mp3|2nd hour audio]] | | 11/04 | 14-16 | Map in OpenMP and FastFlow, with sample code (code on the [[spm1213code|codepage]]). | [[http://backus.di.unipi.it/~marcod/SPM1213/spm1104.pdf|Blackboard]][[http://backus.di.unipi.it/~marcod/SPM1213/spm1104.1.mp4|Video 1st hour (blackboard only)]][[http://backus.di.unipi.it/~marcod/SPM1213/spm1104.2.mp4|Video 2nd hour (blackboard only)]] [[http://backus.di.unipi.it/~marcod/SPM1213/spm1104.1.mp3|1st hour audio]][[http://backus.di.unipi.it/~marcod/SPM1213/spm1104.2.mp3|2nd hour audio]] | | 15/04 | 16-18 | Sample parallel applications: Computation of an integral (MonteCarlo, generation of pseudo-random numbers), Mandelbrot (Load balancing), N-Body (approximated solutions vs. "exact" ones). | [[http://backus.di.unipi.it/~marcod/SPM1213/spm1504.pdf|Blackboard]] [[http://backus.di.unipi.it/~marcod/SPM1213/spm1504.1.mp3|1st hour audio]][[http://backus.di.unipi.it/~marcod/SPM1213/spm1504.2.mp3|2nd hour audio]] | | 16/04 | 14-16 | False sharing (code on the [[spm1213code|codepage]]). | [[http://backus.di.unipi.it/~marcod/SPM1213/spm1604.pdf|Blackboard]][[http://backus.di.unipi.it/~marcod/SPM1213/spm1604.1.mp4|Video 1st hour (blackboard only)]][[http://backus.di.unipi.it/~marcod/SPM1213/spm1604.2.mp4|Video 2nd hour (blackboard only)]] [[http://backus.di.unipi.it/~marcod/SPM1213/spm1604.1.mp3|1st hour audio]][[http://backus.di.unipi.it/~marcod/SPM1213/spm1604.2.mp3|2nd hour audio]] | | 18/04 | 14-16 | Muesli programming framework (Dazzi) | [[http://hpc.isti.cnr.it/~dazzi/?p=147|Lesson material]] | | 22/04 | 16-18 | Load balancing (code on the [[spm1213code|codepage]]). | [[http://backus.di.unipi.it/~marcod/SPM1213/spm2204.pdf|Blackboard]][[http://backus.di.unipi.it/~marcod/SPM1213/spm2204.2.mp4|Video 2nd hour (blackboard only)]] [[http://backus.di.unipi.it/~marcod/SPM1213/spm2204.1.mp3|1st hour audio]][[http://backus.di.unipi.it/~marcod/SPM1213/spm2204.2.mp3|2nd hour audio]] | | 23/04 | 16-18| More on load balancing. Introduction to [[http://www.ida.liu.se/~chrke/skepu/|SKEPU]] (and GPUs) (code on the [[spm1213code|codepage]]). | [[http://backus.di.unipi.it/~marcod/SPM1213/spm2304.pdf|Blackboard]][[http://backus.di.unipi.it/~marcod/SPM1213/spm2304.1.mp4|Video 1st hour (blackboard only)]][[http://backus.di.unipi.it/~marcod/SPM1213/spm2304.2.mp4|Video 2nd hour (blackboard only)]] [[http://backus.di.unipi.it/~marcod/SPM1213/spm2304.1.mp3|1st hour audio]][[http://backus.di.unipi.it/~marcod/SPM1213/spm2304.2.mp3|2nd hour audio]] | | 29/04 | 16-18| More on [[http://www.ida.liu.se/~chrke/skepu/|SKEPU]]. Co-exploitation of Skepu and FastFlow (code on the [[spm1213code|codepage]]). Map fusion. | [[http://backus.di.unipi.it/~marcod/SPM1213/spm2904.pdf|Blackboard]][[http://backus.di.unipi.it/~marcod/SPM1213/spm2904.1.mp4|Video 1st hour (blackboard only)]][[http://backus.di.unipi.it/~marcod/SPM1213/spm2904.2.mp4|Video 2nd hour (blackboard only)]] [[http://backus.di.unipi.it/~marcod/SPM1213/spm2904.1.mp3|1st hour audio]][[http://backus.di.unipi.it/~marcod/SPM1213/spm2904.2.mp3|2nd hour audio]] | | 30/04 | 16-18| Sample code: map fusion (OpenMP) and multiple backends (FastFlow+SKEPU) (code on the [[spm1213code|codepage]]). Rewriting rules. Map and reduce as homomorphisms and relative optimizations (see [[http://www.keisu.t.u-tokyo.ac.jp/research/techrep/data/2013/METR13-04.pdf|paper]] on [[http://sketo.ipl-lab.org/|SkeTo]]), optimizations at the pattern building block level (BSP and MapReduce: optimization of gatherall followed by a spread). | [[http://backus.di.unipi.it/~marcod/SPM1213/spm3004.pdf|Blackboard]][[http://backus.di.unipi.it/~marcod/SPM1213/spm3004.1.mp4|Video 1st hour (blackboard only)]][[http://backus.di.unipi.it/~marcod/SPM1213/spm3004.2.mp4|Video 2nd hour (blackboard only)]] Audio 1st hour not available (sorry) [[http://backus.di.unipi.it/~marcod/SPM1213/spm3004.2.mp3|2nd hour audio]] | | 02/05 | 14-16 | Adaptivity: MAPE loop, autonomic computing principles (see IBM [[http://users.soe.ucsc.edu/~griss/agent-papers/ieee-autonomic.pdf|paper]]), behavioural skeletons (introduction). | [[http://backus.di.unipi.it/~marcod/SPM1213/spm0205.pdf|Blackboard]] [[http://backus.di.unipi.it/~marcod/SPM1213/spm0205.1.mp3|1st hour audio]][[http://backus.di.unipi.it/~marcod/SPM1213/spm0205.2.mp3|2nd hour audio]] | | 06/05 | 16-18 | Adaptivity: hierarchical performance management (see IPDPS09 [[http://backus.di.unipi.it/~marcod/SPM1213/ipdps09.pdf|slides]]). Multi concern management. | [[http://backus.di.unipi.it/~marcod/SPM1213/spm0605.pdf|Blackboard]] [[http://backus.di.unipi.it/~marcod/SPM1213/spm0605.1.mp3|1st hour audio]][[http://backus.di.unipi.it/~marcod/SPM1213/spm0605.2.mp3|2nd hour audio]] | | 07/05 | 16-18 | Functional and performance portability of structured parallel applications. | [[http://backus.di.unipi.it/~marcod/SPM1213/spm0705.pdf|Blackboard]] [[http://backus.di.unipi.it/~marcod/SPM1213/spm0705.1.mp3|1st hour audio]][[http://backus.di.unipi.it/~marcod/SPM1213/spm0705.2.mp3|2nd hour audio]] | | 09/05 | 14-16 | Vectorization techniques. | [[http://backus.di.unipi.it/~marcod/SPM1213/spm0905.pdf|Blackboard]] [[http://backus.di.unipi.it/~marcod/SPM1213/spm0905.1.mp3|1st hour audio]][[http://backus.di.unipi.it/~marcod/SPM1213/spm0905.2.mp3|2nd hour audio]] | | 13/05 | 16-18 | Sample code: effect of vectorization (and effects combined with OpenMP). Final project 2012-2013. | [[http://backus.di.unipi.it/~marcod/SPM1213/spm1305.pdf|Blackboard]] [[http://backus.di.unipi.it/~marcod/SPM1213/spm1305.1.mp3|audio]] [[http://backus.di.unipi.it/~marcod/SPM1213/SPMproject13.pdf|Project draft]] | | 14/05 | 16-18 | Parallel design patterns. | [[http://backus.di.unipi.it/~marcod/SPM1213/spm1405.pdf|Blackboard]] [[http://backus.di.unipi.it/~marcod/SPM1213/spm1405.1.mp3|1st hour audio]][[http://backus.di.unipi.it/~marcod/SPM1213/spm1405.2.mp3|2nd hour audio]] | | 16/05 | 14-15 | Parallel design patterns. | [[http://backus.di.unipi.it/~marcod/SPM1213/spm1605.pdf|Blackboard]] [[http://backus.di.unipi.it/~marcod/SPM1213/spm1605.mp3|1st hour audio]] | | 20/05 | 16-18 | RISC PBB: a RISC set of parallel building blocks. Building blocks in Wrapper, Functional and Combinator subsets, rule for composition, sample usage (classical skeletons), optimization, implmentation of more general skeletons. | [[http://backus.di.unipi.it/~marcod/SPM1213/spm2005.pdf|Blackboard]] [[http://backus.di.unipi.it/~marcod/SPM1213/spm2005.1.mp3|1st hour audio]][[http://backus.di.unipi.it/~marcod/SPM1213/spm2005.2.mp3|2nd hour audio]] | | 21/05 | 16-18 | Using building blocks to implement general purpose programming models (BSP, Google Mapreduce, MDF) and domain specific skeletons (genetic population evolution) | [[http://backus.di.unipi.it/~marcod/SPM1213/spm2105.pdf|Blackboard]] [[http://backus.di.unipi.it/~marcod/SPM1213/spm2105.1.mp3|1st and 2nd hour audio]]| | 23/05 | 14-16 | Final project discussion, course methodology applied to the project, suggestion for the experiments | [[http://backus.di.unipi.it/~marcod/SPM1213/spm2305.1.mp3|1st and 2nd hour audio]] |