===== Distributed Systems: Paradigms and Models (A.Y. 2014-2015) ===== Link to the [[http://unimap.unipi.it/registri/dettregistriNEW.php?re=153839::::&ri=8045|official course lesson]] page. [[http://didawiki.cli.di.unipi.it/doku.php/magistraleinformaticanetworking/spm/spm14exe1|Exercise]] page. ^ Date ^ Hour ^ Arguments ^ Audio ^ Blackboard ^ | 23/09 | 4-6pm | Introduction to the course. Parallel programming scenario: multi core and many core | [[http://backus.di.unipi.it/~marcod/SPM1415/spm14.23set.1.mp3|H1]][[http://backus.di.unipi.it/~marcod/SPM1415/spm14.23set.2.mp3|H2]] | [[http://backus.di.unipi.it/~marcod/SPM1415/spm14.23set.pdf|PDF]] | | 24/09 | 4-6pm | More on scenario: cloud and mobile. Sample applications with possibilities for parallelism: mandelbrot, video stream processing (to be finshed) | [[http://backus.di.unipi.it/~marcod/SPM1415/spm14.24set.1.mp3|H1]][[http://backus.di.unipi.it/~marcod/SPM1415/spm14.24set.2.mp3|H2]] | [[http://backus.di.unipi.it/~marcod/SPM1415/spm14.24set.lav1.jpeg|jpg1]][[http://backus.di.unipi.it/~marcod/SPM1415/spm14.24set.lav2.jpeg|jpg2]][[http://backus.di.unipi.it/~marcod/SPM1415/spm14.24set.pdf|PDF]] | | 29/09 | 9-11am | More on sample parallel applications: differential equations (kind of), reduce. Stream parallelism (farm and pipeline). Speculative parallelism. Measures: speedup and scalability. | [[http://backus.di.unipi.it/~marcod/SPM1415/spm14.29set.1.mp3|H1]][[http://backus.di.unipi.it/~marcod/SPM1415/spm14.29set.2.mp3|H2]] | [[http://backus.di.unipi.it/~marcod/SPM1415/spm14.29set.pdf|PDF]] | | 30/09 | 16-18pm | Service time, latency, completion time. Efficiency. Amdahl law (with top500 and green500.org link). Concurrent activity graph. | [[http://backus.di.unipi.it/~marcod/SPM1415/spm14.30set.1.mp3|H1]][[http://backus.di.unipi.it/~marcod/SPM1415/spm14.30set.2.mp3|H2]] | [[http://backus.di.unipi.it/~marcod/SPM1415/spm14.30set.pdf|PDF]] | | 01/10 | 16-18pm | Concurrency activity graph, coordination, implementation. Non functional concerns (load balancing). | [[http://backus.di.unipi.it/~marcod/SPM1415/spm14.1ott.1.mp3|H1]][[http://backus.di.unipi.it/~marcod/SPM1415/spm14.1ott.2.mp3|H2]] | [[http://backus.di.unipi.it/~marcod/SPM1415/spm14.1ott.pdf|PDF]] | | 06/10 | 9-11am | More on non functional concenrs: fault tolerance, power management. Survey of parallel patterns: pipeline (first part). | [[http://backus.di.unipi.it/~marcod/SPM1415/spm14.6ott.1.mp3|H1]][[http://backus.di.unipi.it/~marcod/SPM1415/spm14.6ott.2.mp3|H2]] | [[http://backus.di.unipi.it/~marcod/SPM1415/spm14.6ott.pdf|PDF]] | | 07/10 | 16-18pm | Pipeline and farm: modelling, rewriting, removing bottlenecks. | [[http://backus.di.unipi.it/~marcod/SPM1415/spm14.7ott.1.mp3|H1]][[http://backus.di.unipi.it/~marcod/SPM1415/spm14.7ott.2.mp3|H2]] | [[http://backus.di.unipi.it/~marcod/SPM1415/spm14.7ott.pdf|PDF]] | | 08/10 | 16-18pm | Howto: measure times in C programs, gather results from experiments, structure experiment sessions, keep data for plotting. | [[http://backus.di.unipi.it/~marcod/SPM1415/spm14.8ott.1.mp3|H1H2]] | [[http://backus.di.unipi.it/~marcod/SPM1415/spm14.8ott.pdf|PDF]] | | 13/10 | 9-11am | Setup of concurrent activities (pthreads and processes). Typical communication and synchronization mechanisms (locks, pipes, SysV primitives, sockets). | [[http://backus.di.unipi.it/~marcod/SPM1415/spm14.13ott.1.mp3|H1]][[http://backus.di.unipi.it/~marcod/SPM1415/spm14.13ott.2.mp3|H2]] | [[http://backus.di.unipi.it/~marcod/SPM1415/spm14.13ott.pdf|PDF]] | | 14/10 | 9-11am | Task farm implemented "from scratch" with pthreads and C++11 threads (passive emitter version). Task farm on a cluster of workstations (ssh+sockets). | [[http://backus.di.unipi.i20/t/~marcod/SPM1415/spm14.14ott.1.mp3|H1]][[http://backus.di.unipi.it/~marcod/SPM1415/spm14.14ott.2.mp3|H2]] | [[http://backus.di.unipi.it/~marcod/SPM1415/spm14.14ott.pdf|PDF]] [[sources14ottspm|Sources]] | | 15/10 | 4-6pm | Data parallel patterns: map, reduce, scan/prefix, stencil, mapreduce. | [[http://backus.di.unipi.it/~marcod/SPM1415/spm14.15ott.1.mp3|H1]][[http://backus.di.unipi.it/~marcod/SPM1415/spm14.15ott.2.mp3|H2]] | [[http://backus.di.unipi.it/~marcod/SPM1415/spm14.15ott.pdf|PDF]] [[sources14ottspm|Sources]] | | 20/10 | 9-11 | Class [[spm14exe1|exercises]] (with laptops, please be sure to have an ssh client installed) || | 27/10 | 9-11am | Introduction to skeleton programming frameworks. **Attention**: //students attending the course should write a message to the prof. with Subject: PHI SPM ACCOUNT, containing in the body Name, Family Name, Matricola (Enrollement No.) and either MCSN or CS depending whether they registered to the COmputer Science and Networking or to the Computer Science Master degree. They will get back a message with the instructions to access the XEON PHI machine.// | [[http://backus.di.unipi.it/~marcod/SPM1415/spm14.27ott.1.mp3|H1]][[http://backus.di.unipi.it/~marcod/SPM1415/spm14.27ott.2.mp3|H2]] | [[http://backus.di.unipi.it/~marcod/SPM1415/spm14.27ott.pdf|PDF]] | | 28/10 | 16-18am | Presentation of the solution for the [[spm14exe1|pipeline exercise]] (pthread only). Status management in skeletons ("resource" kind of state). Template based implementation of algorithmic skeletons. | [[http://backus.di.unipi.it/~marcod/SPM1415/spm14.28ott.1.mp3|H1]][[http://backus.di.unipi.it/~marcod/SPM1415/spm14.28ott.2.mp3|H2]] | [[http://backus.di.unipi.it/~marcod/SPM1415/spm14.28ott.pdf|PDF]] | | 29/10 | 16-18am | Introduction to FastFlow: stream parallel patterns (pipeline and farm) (M. Torquati) Code: [[http://backus.di.unipi.it/~marcod/SPM1415/Code/29ott/Makefile|Makefile]][[http://backus.di.unipi.it/~marcod/SPM1415/Code/29ott/pipe_square.cpp|pipe_square.cpp]][[http://backus.di.unipi.it/~marcod/SPM1415/Code/29ott/parfor_square.cpp|parfor_square.cpp]][[http://backus.di.unipi.it/~marcod/SPM1415/Code/29ott/farm_square.cpp|farm_square.cpp]] | [[http://backus.di.unipi.it/~marcod/SPM1415/spm14.29ott.1.mp3|H1]][[http://backus.di.unipi.it/~marcod/SPM1415/spm14.29ott.2.mp3|H2]] | [[http://backus.di.unipi.it/~marcod/SPM1415/spm14.29ott.pdf|PDF]] | | 10/11 | 9-11am | Macro data flow based implementation of algorithmic skeletons. | [[http://backus.di.unipi.it/~marcod/SPM1415/spm14.10nov.1.mp3|H1]][[http://backus.di.unipi.it/~marcod/SPM1415/spm14.10nov.2.mp3|H2]] | [[http://backus.di.unipi.it/~marcod/SPM1415/spm14.10nov.pdf|PDF]] | | 11/11 | 4-6pm | Class [[spm14exe1|exercises]] (with laptops, please be sure to have an ssh client installed) (M: Torquati) || | 12/11 | 16-18am | More on Macro Data FLow implementation of structured parallel programming frameworks: shared task pool, maintinaing locality, accessing the fireable instructions. Parallel building blocks (introduction) | [[http://backus.di.unipi.it/~marcod/SPM1415/spm14.12nov.1.wma|H1]][[http://backus.di.unipi.it/~marcod/SPM1415/spm14.12nov.2.wma|H2]] | [[http://backus.di.unipi.it/~marcod/SPM1415/spm14.12nov.pdf|PDF]] | | 17/11 | 9-11am | Parallel building blocks: definition and compositionality. Generalities related to general purpose and domain specific patterns and parallel computing models. Sample template implementation: map and BSP. | [[http://backus.di.unipi.it/~marcod/SPM1415/spm14.17nov.1.mp3|H1]][[http://backus.di.unipi.it/~marcod/SPM1415/spm14.17nov.2.mp3|H2]] | [[http://backus.di.unipi.it/~marcod/SPM1415/spm14.17nov.pdf|PDF]] | | 18/11 | 4-6pm | Discussion of the solutions for the second class work [[spm14exe1|exercise]]. Introduction to FastFlow parallel for (M. Torquati). |[[http://calvados.di.unipi.it/storage/teaching/SPM1415/spm14.18nov.2.mp3 |H2]] | [[ http://calvados.di.unipi.it/storage/teaching/SPM1415/FFintro2.pdf | PDF ]]| | 19/11 | 4-6pm | Class work 3: matrix multiplication with parallel for in [[spm14exe1|FastFLow]] (M. Torquati) | | [[ http://calvados.di.unipi.it/storage/teaching/SPM1415/Matmul_CW3.pdf|PDF]] | | 24/11 | 9-11am | More on parallel building blocks: rewriting and optimizations. Introduction to parallel design patterns | [[http://backus.di.unipi.it/~marcod/SPM1415/spm14.24nov.1.mp3|H1]][[http://backus.di.unipi.it/~marcod/SPM1415/spm14.24nov.2.mp3|H2]] | [[http://backus.di.unipi.it/~marcod/SPM1415/spm14.24nov.pdf|PDF]] | | 25/11 | 4-6pm | Macro Data-Flow pattern in FastFlow: ff_mdf. The FastFlow ff_taskf pattern for parallel scheduling of functions/lambdas. Class work 4: matrix multiplication using the ff_mdf pattern. (M. Torquati) [[spm14exe1|FastFLow]] | [[http://calvados.di.unipi.it/storage/teaching/SPM1415/spm14.25nov.1.mp3 |H1]] | [[ http://calvados.di.unipi.it/storage/teaching/SPM1415/FFintro3.pdf|PDF]] [[ http://calvados.di.unipi.it/storage/teaching/SPM1415/Matmul_CW4.pdf|PDF]] [[ http://calvados.di.unipi.it/storage/teaching/SPM1415/FFcode2511.tgz|Sources]] | | 26/11 | 4-6pm | Design patterns: design spaces and relative patterns. | [[http://backus.di.unipi.it/~marcod/SPM1415/spm14.26nov.1.wma|H1]][[http://backus.di.unipi.it/~marcod/SPM1415/spm14.26nov.2.wma|H2]] | [[http://backus.di.unipi.it/~marcod/SPM1415/spm14.26nov.pdf|PDF]] | | 01/12 | 9-11am | Mechanisms: double/triple biffering, client/server (with multithreaded server), excess parallelism. | [[http://backus.di.unipi.it/~marcod/SPM1415/spm14.1dic.1.mp3|H1]][[http://backus.di.unipi.it/~marcod/SPM1415/spm14.1dic.2.mp3|H2]] | [[http://backus.di.unipi.it/~marcod/SPM1415/spm14.1dic.pdf|PDF]] | | 02/12 | 9-11am | Mechanisms: vectorization (see also [[http://ri.search.yahoo.com/_ylt=A0LEViaZAH5UlpMAP3gPxQt.;_ylu=X3oDMTBybnV2cXQwBHNlYwNzcgRwb3MDMgRjb2xvA2JmMQR2dGlkAw--/RV=2/RE=1417572633/RO=10/RU=http%3a%2f%2fwww.intel.com%2fcontent%2fdam%2fwww%2fpublic%2fus%2fen%2fdocuments%2fguides%2fcompiler-auto-vectorization-guide.pdf/RK=0/RS=DnU7pGed1UAG4WU1D6YeKl6VgWE-|intel compiler manual]]), cache optim (false sharing, perfetching) | [[http://backus.di.unipi.it/~marcod/SPM1415/spm14.2dic.1.mp3|H1&2]] | [[http://backus.di.unipi.it/~marcod/SPM1415/spm14.2dic.pdf|PDF]] | | 3/12 | 4-6pm | More parallel programming frameworks: [[skandium_local|Skandium]], [[http://www.ida.liu.se/~chrke/skepu/|SKEPU]] | [[http://backus.di.unipi.it/~marcod/SPM1415/spm14.3dic.1.mp3|H1]][[http://backus.di.unipi.it/~marcod/SPM1415/spm14.3dic.2.mp3|H2]] | [[http://backus.di.unipi.it/~marcod/SPM1415/spm14.3dic.pdf|PDF]] | | 5/12 | 2-5pm | Discussion on previous class work. Assignment of a new Class Work: dynamic map computation. (M. Torquati) | | [[ http://calvados.di.unipi.it/storage/teaching/SPM1415/DynMap_CW5.pdf|PDF]] | | 9/12 | 4-6pm | Presentation of the Final project [[http://backus.di.unipi.it/~marcod/SPM1415/SPMproject15.pdf|PDF]]. Rewriting rules and normal form. | [[http://backus.di.unipi.it/~marcod/SPM1415/spm14.9dic.1.mp3|H12]] | [[http://backus.di.unipi.it/~marcod/SPM1415/spm14.9dic.pdf|PDF]] | | 10/12 | 4-6pm | More on rewriting rules. Behavioural skeletons. | [[http://backus.di.unipi.it/~marcod/SPM1415/spm14.10dic.1.mp3|H12]] | [[http://backus.di.unipi.it/~marcod/SPM1415/spm14.10dic.pdf|PDF]] | | 15/12 | 9-11am | Bheavioural skeletons. General "SPM Philosophy". | [[http://backus.di.unipi.it/~marcod/SPM1415/spm14.15dic.1.mp3|H1]][[http://backus.di.unipi.it/~marcod/SPM1415/spm14.15dic.2.mp3|H2]] | [[http://backus.di.unipi.it/~marcod/SPM1415/spm14.15dic.pdf|PDF]] | | 16/12 | 4-6pm | Discussion on previous class work assignment: dynamic map skeleton implementation (see Class Works [[spm14exe1|here]]). Sketch of possible other implementations. Discussion on exam project (M. Torquati) | | |