====== Distributed Systems: Paradigms and models ======= [[http://unimap.unipi.it/registri/dettregistriNEW.php?re=168590::::&ri=8045|Official lesson register]] ===== Lessons ===== ^ Day ^ Hours ^ Argument ^ Blackboard ^ Multimedia ^ | Sept. 21 | 0 | Lessons will start on Sept. 22nd ||| | Sept. 22 | 2 | Course introduction | [[http://backus.di.unipi.it/~marcod/SPM1516/spm22set.pdf|blackboard]] | [[http://backus.di.unipi.it/~marcod/SPM1516/spm22set.mp4|Video]] | | Sept. 23 | 2 | Parallel programming: concurrent activity and orchestration concepts. Sample use cases (with patterns) | [[http://backus.di.unipi.it/~marcod/SPM1516/spm23set.pdf|blackboard]] | [[http://backus.di.unipi.it/~marcod/SPM1516/spm23set.1.mp4|Video1h]][[http://backus.di.unipi.it/~marcod/SPM1516/spm23set.2.mp4|Video2h]]| | Sept. 28 | 2 | Threadpool with C and C++ ([[code1516-threadpool|Code]]) | [[http://backus.di.unipi.it/~marcod/SPM1516/spm28set.pdf|blackboard]] | [[http://backus.di.unipi.it/~marcod/SPM1516/spm28set.1.mp4|Video1h]][[http://backus.di.unipi.it/~marcod/SPM1516/spm28set.2.mp4|Video2h]] | | Sept. 29 | 2 | Threadpool with Java. Time measure tools. Performance measures. ([[code1516-threadpool|Code]]) | [[http://backus.di.unipi.it/~marcod/SPM1516/spm29set.pdf|blackboard]] | [[http://backus.di.unipi.it/~marcod/SPM1516/spm29set.1.mp4|Video1h]][[http://backus.di.unipi.it/~marcod/SPM1516/spm29set.2.mp4|Video2h]] | | Sept. 30 | 2 | Concurrent activity graph. Non functional concerns. | [[http://backus.di.unipi.it/~marcod/SPM1516/spm30set.pdf|blackboard]] | [[http://backus.di.unipi.it/~marcod/SPM1516/spm30set.1.mp4|Video1h]][[http://backus.di.unipi.it/~marcod/SPM1516/spm30set.2.mp4|Video2h]] | | Oct. 5 | 2 | More on non functional concerns: chekpointing (fault tolerance), load balancing (performance) | [[http://backus.di.unipi.it/~marcod/SPM1516/spm5ott.pdf|blackboard]] | [[http://backus.di.unipi.it/~marcod/SPM1516/spm5ott.1.mp4|Video1h]][[http://backus.di.unipi.it/~marcod/SPM1516/spm5ott.2.mp4|Video2h]] | | Oct. 6 | 2 | Task and data parallelism (with CA graphs) | [[http://backus.di.unipi.it/~marcod/SPM1516/spm6ott.pdf|blackboard]] | [[http://backus.di.unipi.it/~marcod/SPM1516/spm6ott.1.mp4|Video1h]][[http://backus.di.unipi.it/~marcod/SPM1516/spm6ott.2.mp4|Video2h]] | | Oct. 7 | 2 | Performance modelling of parallel patterns: pipeline. | [[http://backus.di.unipi.it/~marcod/SPM1516/spm7ott.pdf|blackboard]] | [[http://backus.di.unipi.it/~marcod/SPM1516/spm7ott.1.mp4|Video1h]][[http://backus.di.unipi.it/~marcod/SPM1516/spm7ott.2.mp4|Video2h]] | | Oct. 12 | 2 | More on stream parallel patterns: task farm. Implementation of task farm: E-W*-C and master worker. Using the same implementation schema for data parallel map. (TODO: have a look at [[http://www.openmp.org/mp-documents/OpenMP4.0.0.pdf|OpenMP 4.0]] by Wednesday (only parts agreed during lesson) | [[http://backus.di.unipi.it/~marcod/SPM1516/spm12ott.pdf|blackboard]] | [[http://backus.di.unipi.it/~marcod/SPM1516/spm12ott.1.mp4|Video1h]][[http://backus.di.unipi.it/~marcod/SPM1516/spm12ott.2.mp4|Video2h]] | | Oct. 13 | 2 | More on data parallel patterns: reduce. Using the farm template (E-string(W)-C) to implement a reduce. Algorithmic skeletons: introduction and historical perspective. | [[http://backus.di.unipi.it/~marcod/SPM1516/spm13ott.pdf|blackboard]] | [[http://backus.di.unipi.it/~marcod/SPM1516/spm13ott.1.mp4|Video1h]] Video2h not available | | Oct. 14 | 2 | OpenMP: classroom discussion | [[http://backus.di.unipi.it/~marcod/SPM1516/spm14ott.pdf|blackboard]] | [[http://backus.di.unipi.it/~marcod/SPM1516/spm14ott.1.mp4|Video1h]][[http://backus.di.unipi.it/~marcod/SPM1516/spm14ott.2.mp4|Video2h]] | | Oct. 19 | 2 | More on OpenMP: variable clauses (private,lastprivate,firstprivate) and reduce clauses. Forking of tasks to the threadpool. Skeleton frameworks: Compositionality | [[http://backus.di.unipi.it/~marcod/SPM1516/spm19ott.pdf|blackboard]] | [[http://backus.di.unipi.it/~marcod/SPM1516/spm19ott.1.mp4|Video1h]][[http://backus.di.unipi.it/~marcod/SPM1516/spm19ott.2.mp4|Video2h]] | | Oct. 20 | 2 | Sample code in OpenMP. Template based skeleton framework implementation | [[http://backus.di.unipi.it/~marcod/SPM1516/spm20ott.pdf|blackboard]] | [[http://backus.di.unipi.it/~marcod/SPM1516/spm20ott.1.mp4|Video1h]][[http://backus.di.unipi.it/~marcod/SPM1516/spm20ott.2.mp4|Video2h]] | | Oct. 21 | 2 | More on template based implementation for skeleton frameworks: optimizing parameters (par degree). Macro data flow implementation. | [[http://backus.di.unipi.it/~marcod/SPM1516/spm21ott.pdf|blackboard]] | [[http://backus.di.unipi.it/~marcod/SPM1516/spm21ott.1.mp4|Video1h]][[http://backus.di.unipi.it/~marcod/SPM1516/spm21ott.2.mp4|Video2h]] | | Oct. 26 | 2 | Macro Data Flow optimizations. Introduction to Skandium | [[http://backus.di.unipi.it/~marcod/SPM1516/spm26ott.pdf|blackboard]] | [[http://backus.di.unipi.it/~marcod/SPM1516/spm26ott.1.mp4|Video1h]][[http://backus.di.unipi.it/~marcod/SPM1516/spm26ott.2.mp4|Video2h]] | | Oct. 27 | 2 | Skandium: performance, impact of the implementation schema on performance, stream parallel rewritings. Functional semantics of skeletons and motivations of the rewriting rules. | [[http://backus.di.unipi.it/~marcod/SPM1516/spm27ott.pdf|blackboard]] | [[http://backus.di.unipi.it/~marcod/SPM1516/spm27ott.1.mp4|Video1h]][[http://backus.di.unipi.it/~marcod/SPM1516/spm27ott.2.mp4|Video2h]] | | Oct. 28 | 2 | More on rewriting rules. Normal form as sequence of rewriting. Searching a tree of equivalent skeleton trees. Assignment of Game of Life excercise | [[http://backus.di.unipi.it/~marcod/SPM1516/spm28ott.pdf|blackboard]] | [[http://backus.di.unipi.it/~marcod/SPM1516/spm28ott.1.mp4|Video1h]][[http://backus.di.unipi.it/~marcod/SPM1516/spm28ott.2.mp4|Video2h]] | | Nov. 9| 2 | Access to Xeon PHI and compiler workflow. Introduction to vectorization: principles, condition to vectorize, icc compiler flags. | [[http://backus.di.unipi.it/~marcod/SPM1516/spm09nov.pdf|blackboard]] | [[http://backus.di.unipi.it/~marcod/SPM1516/spm09nov.1.mp4|Video1h]][[http://backus.di.unipi.it/~marcod/SPM1516/spm09nov.2.mp4|Video2h]] | | Nov. 10| 2 | Introduction to FastFlow. Building a simple pipeline. ClassWork1. | {{:magistraleinformaticanetworking:spm:fastflow_intro.pdf| Slides }} | [[http://calvados.di.unipi.it/storage/teaching/SPM1516/spm15.10nov.1.mp4 | Video1h]] | | Nov. 11| 2 | Building a task-farm in FastFlow. Mixing pipeline and task-farm. ClassWork2. Assignment of ClassWork3. | {{:magistraleinformaticanetworking:spm:spm11nov.pdf| Slides}} | not available | | Nov. 16| 2 | More on vectorization: memory alignment and flags (Intel vectorization material [[http://backus.di.unipi.it/~marcod/SPM1516/Intel_31848-CompilerAutovectorizationGuide.pdf|here]] and [[http://backus.di.unipi.it/~marcod/SPM1516/mag.pdf|here]]. Introduction to [[http://www.ida.liu.se/~chrke55/skepu/|SKEPU]]. | [[http://backus.di.unipi.it/~marcod/SPM1516/spm16nov.pdf|blackboard]] | [[http://backus.di.unipi.it/~marcod/SPM1516/spm16nov.1.mp4|Video1h]][[http://backus.di.unipi.it/~marcod/SPM1516/spm16nov.2.mp4|Video2h]] (sorry, no audio (alsa problem)) | | Nov. 17| 2 | More on FastFlow task-farm pattern. Master-Worker computation, feedback channels, scheduling policies. How to define your own scheduler for the farm. ClassWork2 discussion. Assignment of ClassWork4. | {{:magistraleinformaticanetworking:spm:spm17nov.pdf| Slides}} | [[http://calvados.di.unipi.it/storage/teaching/SPM1516/spm15.17nov.1.mp4 | Video1h]] | | Nov. 18| 2 | FastFlow ParallelFor and ParallelForReduce patterns. ClassWork4 discussion. Assignment of ClassWork5. | {{:magistraleinformaticanetworking:spm:spm18nov.pdf| Slides}} | [[http://calvados.di.unipi.it/storage/teaching/SPM1516/spm15.18nov.1.mp4 | Video1h]] | | Nov. 23 | 2 | Autonomic mangement of non functional concerns | [[http://backus.di.unipi.it/~marcod/SPM1516/spm23nov.pdf|blackboard]] | [[http://backus.di.unipi.it/~marcod/SPM1516/spm23nov.1.mp4|Video1h]][[http://backus.di.unipi.it/~marcod/SPM1516/spm23nov.2.mp4|Video2h]] | | Nov. 24 | 2 | Autonomic mangement of non functional concerns: hierarchical management, multiple concern management. | [[http://backus.di.unipi.it/~marcod/SPM1516/spm24nov.pdf|blackboard]] | [[http://backus.di.unipi.it/~marcod/SPM1516/spm24nov.1.mp4|Video1h]][[http://backus.di.unipi.it/~marcod/SPM1516/spm24nov.2.mp4|Video2h]] | | Nov. 25 | 2 | Parallel design patterns | [[http://backus.di.unipi.it/~marcod/SPM1516/spm25nov.pdf|blackboard]] | [[http://backus.di.unipi.it/~marcod/SPM1516/spm25nov.1.mp4|Video1h]][[http://backus.di.unipi.it/~marcod/SPM1516/spm25nov.2.mp4|Video2h]] | | Nov. 30| 2 | ParallelFor* iteration scheduling policies. FastFlow map. Nesting data-parallel computations inside pipeline and task-farm patterns. ClassWork5 discussion. Assignment of ClassWork6. | {{:magistraleinformaticanetworking:spm:spm30nov.pdf| Slides}} | [[http://calvados.di.unipi.it/storage/teaching/SPM1516/spm15.30nov.1.mp4 | Video1h]]| | Dec. 1| 2 | Discussion of some parallel applications developend using FastFlow. Completion of previous class works. | {{:magistraleinformaticanetworking:spm:spm01dic.pdf| Slides}} | [[http://calvados.di.unipi.it/storage/teaching/SPM1516/spm15.01dec.1.mp4 | Video1h]] | | Dec. 2| 2 | Debugging and profiling tools. How to use Intel vtune amplifier (matrix multiplication example). FastFlow memory allocator. | {{:magistraleinformaticanetworking:spm:spm02dic.pdf| Slides}} | not available | | Dec 3 | 2 | Parallel design patterns: how to use the design space hierarchy. Implementation of parallel applications on COW/NOW: principles, client/server paradigm, Port assignment, discovery, socket syscalls. | [[http://backus.di.unipi.it/~marcod/SPM1516/spm3dic.pdf|blackboard]] | [[http://backus.di.unipi.it/~marcod/SPM1516/spm3dic.1.mp4|Video1h]][[http://backus.di.unipi.it/~marcod/SPM1516/spm3dic.2.mp4|Video2h]] (first part missing due to my mistake while recording) | | Dec 7 | 2 | Sample code for the name server for channel-address association with TCP/IP sockets. Implementation of a pipeline on a COW with sockets. RPC and rpcgen. | [[http://backus.di.unipi.it/~marcod/SPM1516/spm7dic.pdf|blackboard]] | [[http://backus.di.unipi.it/~marcod/SPM1516/spm7dic.1.mp4|Video1h]][[http://backus.di.unipi.it/~marcod/SPM1516/spm7dic.2.mp4|Video2h]] | | Dec 9 | 2 | Discussion of the final project. More on RPCGEN (sequential and multithreaded execution. RMI in Java (outline) | [[http://backus.di.unipi.it/~marcod/SPM1516/spm9dic.pdf|blackboard]] | [[http://backus.di.unipi.it/~marcod/SPM1516/spm9dic.1.mp4|Video1h]][[http://backus.di.unipi.it/~marcod/SPM1516/spm9dic.2.mp4|Video2h]] | | Dec 14 | 2 | Accessing the Xeon PHI as a coprocessor: using sockets, using SCIF, with offloading pragmas. | [[http://backus.di.unipi.it/~marcod/SPM1516/spm14dic.pdf|blackboard]] | [[http://backus.di.unipi.it/~marcod/SPM1516/spm14dic.1.mp4|Video1h-start]][[http://backus.di.unipi.it/~marcod/SPM1516/spm14dic.2.mp4|Video1h-end]][[http://backus.di.unipi.it/~marcod/SPM1516/spm14dic.3.mp4|Video2h]] | | Dec 15 | 2 | Structuring RTS: RISC parallel building blocks. | [[http://backus.di.unipi.it/~marcod/SPM1516/spm15dic.pdf|blackboard]] | [[http://backus.di.unipi.it/~marcod/SPM1516/spm15dic.1.mp4|Video12h]] |