====== Distributed Systems: Paradigms and models ======= ===== Official lesson register ===== [[http://unimap.unipi.it/registri/dettregistriNEW.php?re=179797::::&ri=8045|Register (official)]] ===== Lessons ===== ^ Day ^ Hours ^ Argument ^ Blackboard ^ Multimedia ^ | Sept. 19 | 2 | Course introduction. Real life examples of parallel and distributed computing. Motivations. (Partial audio video support due to laptop substitution) | {{:magistraleinformaticanetworking:spm:spm1617-sep19.pdf|blackboard}} (2nd hour only) | {{:magistraleinformaticanetworking:spm:spm1617-sep19-1.mp4|Video}} (1st hour only)| | Sept. 20 | 2 | Motivations: different kind of (parallel & distributed) devices available. Technological improvements. | {{:magistraleinformaticanetworking:spm:spm1617-sep20.pdf|PDF}} | {{:magistraleinformaticanetworking:spm:spm1617sep20.mp4|1st and 2nd hour}} | | Sept. 21 | 2 | More on clusters: homogeneous and heterogeneous configurations, MTBF, effect of initial program deployement. Measures (latency, service time, speedup, scalability) | {{:magistraleinformaticanetworking:spm:spm1617-sep21.pdf|PDF}} | {{:magistraleinformaticanetworking:spm:spm1617sep21-1.mp4|1st hour}}{{:magistraleinformaticanetworking:spm:spm1617sep21-2.mp4|2nd hour}} | | Sept. 26 | 2 | Measures (efficiency, Amdahal & Gustafson law). Application parallelization principles. | {{:magistraleinformaticanetworking:spm:spm1617sep26.pdf|PDF}} | {{:magistraleinformaticanetworking:spm:spm1617sep26-1.mp4|1st hour}}{{:magistraleinformaticanetworking:spm:spm1617sep26-2.mp4|2nd hour}} | | Sept. 27 | 2 | Application parallelization principles: more applications. Concurrent activity mechanisms (processes and threads) | {{:magistraleinformaticanetworking:spm:spm1617sep-27.pdf|PDF}} | {{:magistraleinformaticanetworking:spm:spm1617sep27-1.mp4|1st hour}}{{:magistraleinformaticanetworking:spm:spm1617sep27-2.mp4|2nd hour}} | | Sept. 28 | 2 | Mechanisms (and code) to set up threads and processes under Posix/Linux. | {{:magistraleinformaticanetworking:spm:spm1617sep28.pdf|PDF}} {{:magistraleinformaticanetworking:spm:spm1617code-threadprocesses.tgz|tarball}} of the code used. | {{:magistraleinformaticanetworking:spm:spm1617sep28-1.mp4|1st hour}}{{:magistraleinformaticanetworking:spm:spm1617sep28-2.mp4|2nd hour}} | | Oct. 3 | 2 | Techniques to contain interaction overheads. Parallel/distributed models: data parallelism, task graph. | {{:magistraleinformaticanetworking:spm:spm1617oct3.pdf|PDF}} | {{:magistraleinformaticanetworking:spm:spm1617ott3-1.mp4|1st hour}}{{:magistraleinformaticanetworking:spm:spm1617ott3-2.mp4|2nd hour}} | | Oct. 4 | 2 | Parallel/distributed models: Work pool, Master/slave, Client/server, Pipeline (producer/consumer). Granularity of parallel computations. Mapping. | {{:magistraleinformaticanetworking:spm:spm1617ott4.pdf|PDF}} | {{:magistraleinformaticanetworking:spm:spm1617ott4-1.mp4|1st hour}}{{:magistraleinformaticanetworking:spm:spm1617ott4-2.mp4|2nd hour}} | | Oct. 5 | 2 | Exercise: assignment of Xeon PHI account, instructions for remote access to the machine, assignment of the exercise with creation of n threads and fair termination | {{:magistraleinformaticanetworking:spm:spm1617ott5.pdf|PDF}} [[http://didawiki.di.unipi.it/doku.php/magistraleinformaticanetworking/spm/spm1617?&#machine_name_and_access|Instructions to access PHI]] | {{:magistraleinformaticanetworking:spm:spm1617ott5-1.mp4|Video}} (partial) | | Oct. 10 | 2 | Load balancing: static and dynamic techniques. Data and recursive decomposition, speculative decomposition. | {{:magistraleinformaticanetworking:spm:spm1617ott10.pdf|PDF}} | {{:magistraleinformaticanetworking:spm:spm1617ott10-1.mp4|1st hour}} {{:magistraleinformaticanetworking:spm:spm1617ott10-2.mp4|2nd hour}} | | Oct. 11 | 2 | Mechanisms for thread programming: mutex, condition_variable, (async/futures and thread pool (only concepts)). RPC (rpcgen). | {{:magistraleinformaticanetworking:spm:spm1617ott11.pdf|PDF}} | {{:magistraleinformaticanetworking:spm:spm1617ott11-1.mp4|1st hour}} {{:magistraleinformaticanetworking:spm:spm1617ott11-2.mp4|2nd hour}} | | Oct. 12 | 2 | Exercises on threads. | [[exercise1617spm|Exercise]] text {{:magistraleinformaticanetworking:spm:spm1617ott12.pdf|Blackboard}} | | | Oct. 17 | 2 | Design patterns: introduction. Finding concurrency: Task and Data decomposition patterns. Group, Ordered tasks patterns. | {{:magistraleinformaticanetworking:spm:spm1617ott17.pdf|PDF}} | {{:magistraleinformaticanetworking:spm:spm1617ott17-1.mp4|1st hour}} {{:magistraleinformaticanetworking:spm:spm1617ott17-2.mp4|2nd hour}} | | Oct. 18 | 2 | Design patterns: Finding concurrency: Data sharing and design evaluation patterns. Algorithm structure space: Organize by task, by data decomposition and by flow of data patterns. | {{:magistraleinformaticanetworking:spm:spm1617ott18.pdf|PDF}} | {{:magistraleinformaticanetworking:spm:spm1617ott18-1.mp4|1st hour}} {{:magistraleinformaticanetworking:spm:spm1617ott18-2.mp4|2nd hour}} | | Oct. 19 | 2 | Tools and methodology for experiments. Assignment: finish second exercise given last on Oct 12 lesson | {{:magistraleinformaticanetworking:spm:spm1617ott19.pdf|PDF}}{{:magistraleinformaticanetworking:spm:mm.tgz|sources}}| {{:magistraleinformaticanetworking:spm:spm1617ott19-1.mp4|Video}} | | Oct. 24 | 2 | Design patterns: Supporting structure pattern space | {{:magistraleinformaticanetworking:spm:spm1617ott24.pdf|PDF}} | {{:magistraleinformaticanetworking:spm:spm1617ott24-1.mp4|1st hour}} {{:magistraleinformaticanetworking:spm:spm1617ott24-2.mp4|2nd hour}} | | Nov. 7 | 2 | Design patterns: Distributed arrays (+ PGAS). Design patterns general picture and introduction of algorithmic skeletons. Cilk Plus with [[spm1617cilk|sample code]] | {{:magistraleinformaticanetworking:spm:spm1617nov7.pdf|PDF}} | {{:magistraleinformaticanetworking:spm:spm1617nov7-1.mp4|1st hour}} {{:magistraleinformaticanetworking:spm:spm1617nov7-2.mp4|2nd hour}} | | Nov. 8 | 2 | Introduction to algorithmic skeletons | {{:magistraleinformaticanetworking:spm:spm1617nov8.pdf|PDF}} | {{:magistraleinformaticanetworking:spm:spm1617nov8-1.mp4|1st hour}} {{:magistraleinformaticanetworking:spm:spm1617nov8-2.mp4|2nd hour}} | | Nov. 9 | 2 | [[spm1617sort|Sort]] (Cilk and C++ Thread versions) | {{:magistraleinformaticanetworking:spm:spm1617nov9.pdf|PDF}} | | | Nov. 14 | 2 | Algorithmic skeletons: RISC and CISC approach, template based implementation techniques, assigment of templates to skeleton trees. Optimization of the parallelism degree. | {{:magistraleinformaticanetworking:spm:spm1617nov14.pdf|PDF}} | {{:magistraleinformaticanetworking:spm:spm1617nov14-1.mp4|1st hour}} {{:magistraleinformaticanetworking:spm:spm1617nov14-2.mp4|2nd hour}} | | Nov. 15 | 1 | Optimization of skeleton / template composition as space search problem. Data flow based implementation of skeletons. | {{:magistraleinformaticanetworking:spm:spm1516nov15.pdf|PDF}} |{{:magistraleinformaticanetworking:spm:spm1617nov15-1.mp4|1sthour}} | | Nov. 15 | 1 | Introduction to FastFlow. First example: 3-stage pipeline. | {{:magistraleinformaticanetworking:spm:fastflowintro_spm1617.pdf|PDF}} |{{:magistraleinformaticanetworking:spm:spm1617nov15-2.mp4|2ndhour}} | | Nov. 16 | 2 | ClassWork1 and FastFlow farm pattern. | {{:magistraleinformaticanetworking:spm:fastflow_spm16nov.pdf|PDF}} | | | Nov. 21 | 2 | Optimizations (overhead reduction) in macro data flow implementations of design pattern/skeleton frameworks | {{:magistraleinformaticanetworking:spm:spm1617nov21.pdf|PDF}} | {{:magistraleinformaticanetworking:spm:spm1617nov21-1.mp4|1st hour}} {{:magistraleinformaticanetworking:spm:spm1617nov21-2.mp4|2nd hour}} | | Nov. 22 | 2 | More on the FastFlow farm pattern. Discussed different configurations. Task scheduling, feedback-channels. | {{:magistraleinformaticanetworking:spm:spm1617nov22.pdf|PDF}} | {{:magistraleinformaticanetworking:spm:spm1617nov22-1.mp4|1st hour}} {{:magistraleinformaticanetworking:spm:spm1617nov22-2.mp4|2nd hour}} | | Nov. 23 | 2 | Assigned ClassWork3 (see slides of Nov. 22). Proposed and discussed 2 possible implementations. | | | | Nov. 28 | 2 | Vectorization | {{:magistraleinformaticanetworking:spm:spm1617nov28.pdf|PDF}} | {{:magistraleinformaticanetworking:spm:spm1617nov28-1.mp4|1st hour}} {{:magistraleinformaticanetworking:spm:spm1617nov28-2.mp4|2nd hour}}{{:magistraleinformaticanetworking:spm:spm1617nov28-3.mp4|2nd hour (LAST PART)}} | | Nov. 29 | 2 | Data parallel computations using the FastFlow parallel-for pattern. Iterations' scheduling, and load-balancing. Some examples. | {{:magistraleinformaticanetworking:spm:spm1617nov29.pdf|PDF}} | | | Nov. 30 | 2 | Discussion on possible variants of the ClassWork3. Assigned ClassWork4. | {{:magistraleinformaticanetworking:spm:spm1617nov30.pdf|PDF}} | | | Nov. 28 | 2 | Sample code discussion (vectorization). Options to drive the parallelization process in the Intel compiler suite. | {{:magistraleinformaticanetworking:spm:spm1617dic6.pdf|PDF}} | {{:magistraleinformaticanetworking:spm:spm1617dic6-1.mp4|1st hour}} {{:magistraleinformaticanetworking:spm:spm1617dic6-2.mp4|2nd hour}} | | Dec. 07 | 2 | Discussion about ClassWork4. Assigned ClassWork5. | {{:magistraleinformaticanetworking:spm:spm1617dec07.pdf|PDF}} | | | 12 dic | 2 | Rewriting rules and optimizations | {{:magistraleinformaticanetworking:spm:spm1617dic12.pdf|PDF}} | {{:magistraleinformaticanetworking:spm:ae1617dic12-1.mp4|1st hour}}{{:magistraleinformaticanetworking:spm:ae1617dic12-2.mp4|2nd hour}} | | 13 dic | 2 | More optim rules: map to stream parallel, pipeline stage collapse, farm worker increase/decrease. SPM application development methodology. Presentation of the final project. | {{:magistraleinformaticanetworking:spm:spm1617dic13.pdf|PDF}} | {{:magistraleinformaticanetworking:spm:spm1617dic13-1.mp4|1st hour}}{{:magistraleinformaticanetworking:spm:spm1617dic13-2.mp4|2nd hour}} | | 14 dic | 2 | Discussion about ClassWork5. Introduction of the Divide and Conquer parallel pattern in FastFlow. Assigned ClassWork6.| {{:magistraleinformaticanetworking:spm:spm1617dic14.pdf|PDF}} | | | 15 dic | 1 | Discussion on 2016-17 project text | {{:magistraleinformaticanetworking:spm:spm1617dic15.pdf|PDF}} | | | 15 dic | 1 | Discussion on ClassWork6. Introduction to debugging and profiling tools. Dynamic memory allocations: jemalloc, Intel TBB Allocator, Hoard Allocator, FastFlow Allocator. | {{:magistraleinformaticanetworking:spm:spm1617dic15-2.pdf|PDF}} | |