====== Strumenti di programmazione per sistemi paralleli e distribuiti 2017-18 ====== ** The page is currently archived ** ** Teacher: ** Dr. Massimo Coppola **Contact info**\\ e-mail : massimo.coppola@isti.cnr.it \\ Phone : 050 315 2992 \\ Office location : CNR Reseach Area, ISTI-CNR, Building C, room 33\\ **Course info**\\ * This page concerns the SPD course (535AA) for the academic year 2017-2018, which gives you **6 credits**. * Be sure to alway check the NEWS section in this page. * Information about latest past editions of the SPD course can be found at the following links. ^ [[magistraleinformaticanetworking:spd:spd-13-14|SPD 2013-2014]] ^ [[magistraleinformaticanetworking:spd:spd-14-15|SPD 2014-2015]] ^ [[magistraleinformaticanetworking:spd:spd-15-16|SPD 2015-2016]] ^ [[magistraleinformaticanetworking:spd:spd-16-17|SPD 2016-2017]] | ==== Timetable ==== {{ http://fpga.org/wp-content/uploads/2017/01/1-32-1680-RISC-Vs.jpg?350|1-core, 32-core and 1680-core RISC-V development boards. See http://fpga.org/2017/01/12/grvi-phalanx-joins-the-kilocore-club/ }} ** Timetable ** ^ Monday | **16-18** | N1 | (Polo Fibonacci) | | ^ Wednesday | **16-18** | L1 | (Polo Fibonacci) | for days 9/5, 16/5, 23/5 | ^ Friday | **16-18** | N1 | (Polo Fibonacci) | no lesson on 18/5 | * See also the Dept. [[https://www.di.unipi.it/en/education/mcsn/timetable-wtw|official timetable]]. * In case of exceptions, notice will be given in the News section below in this page and by email to the students. ** Question time **\\ Students should contact the teacher in advance by phone / e-mail. A different time can be agreed upon if needed. ^ TBD | TBD | ISTI-CNR office | === News and Updates === * First lesson is on Monday 19/2 * There is a conflict with the SPM course on Wednesday afternoon, schedule will change to Friday afternoon effective from the second week. The second lesson of the first week is not yet scheduled. * Lessons to be rescheduled : the lessons on the 12/03 and on the 27/4 will be rescheduled due to conflicts with other work commitments. * NO LESSON on 21/02 due to a time slot conflict with another course. * **Rescheduled: Friday 23/02, 11-13** in the Computer Science Dept. Building, **Room Seminari Est** * Final lesson schedule and rooms confirmed. * Rescheduled lesson on 11/04 is CANCELED due to unforeseen commitment conflict. * Rescheduled lesson on 18/04 is confirmed, room L1, 16:00-18:00 * **No lesson on 27/4, as stated and lesson CANCELED on 30/4 (to be rescheduled)** * **(07/05/2018)** Lesson schedule modified for May, starting May 7th. We wil have lesson on Monday, Wednesday and Friday for the remaining part of May, to allow rescheduling the two canceled lessons. There will be **no lesson on Friday 18/5**. Please check the Timetable above, the official timetable or the course journal on this wiki for complete information. -------- ==== Course Journal ==== The [[magistraleinformaticanetworking:spd:lezioni17.18|course journal]] is a separate page in this wiki. -------- ==== Aim of the Course ==== The course will provide a description and analysis of a few key parallel and distributed programming platforms and models, starting from their theoretical foundations, where not covered by previous courses, and focusing on (1) existing standards for platforms and programming systems and (2) State-of-the-art solutions. The course will include practical use of those systems to develop simple applications. ==== Overall Program ==== The course will cover the following topics. * Parallel Programming systems/frameworks * **MPI** message-passing programming (the core part of the MPI 2.2 standard) * **TBB** Thread Building Blocks Multicore oriented, shared-memory programming framework * Massively Multicore computation and GPU programming frameworks: mainly **OpenCL** but also references to CUDA * other topics and parallel/distributed formalisms we may partially address * Software defined processors: FPGA-based open source processors, OpenCL to FPGA compilation * ASSIST (a framework for parallel high-level parallel programming with autonomic management) * High-Level SPP languages for Clusters/Clouds, dynamic and autonomic management * BSP-based approaches (e.g. Apache Hama / Giraph, or MulticoreBSP) * Example Applications * K-means, data mining, machine learning algorithms; computational simulation algorithms * Foundation, Technologies * Elementary mechanisms to distribute computation: message passing, shared memory, massive multicore * Basics of scheduling algorithms and resource management * Basics of Service Oriented Architectures SOA * Service oriented Platforms, Cloud Computing and Cloud Federations -------- ==== Project Work ==== TBD -------- ==== Teaching material ==== === Books === * [[http://mpi-forum.org/docs/mpi-3.1/mpi31-report.pdf|Standard MPI 3.1, 2015]] Only those parts that we will specify during the lessons. Please check the [[http://mpi-forum.org/docs/mpi-3.1/errata-31.pdf//example.com|MPI 3.1 errata]] as there are errors in a couple of code examples.\\ On the [[http://www.mpi-forum.org/|MPI forum web site]] you will find //alternate formattings// and //translations// of the same material. * **B. Wilkinson, M. Allen -- Parallel Programming**, 2nd edition. 2005, Prentice-Hall. This book will be also used; at least the 1st edition is available in the University Library of Math/Comp.Sc./Physiscs, under code C.1.2 w74 INF . * **Michael Mc Cool, Arch D. Robinson and James Reinders -- Structured Parallel Programming (patterns for Efficient Computation)** 2012, Morgan Kaufmann. \\ Chapters 1 to 3 cover background topics which should be already known from previous courses (SPA, SPD courses). Stundents need to focus on the TBB material throughout the book: Appendix C and D, and the TBB examples in the book that appendix C references from chapters 4, 5, 8 and 9. Check also Chapter 11 on k-means. * //Alternate book:// An introduction to TBB is also found in **James Reinders -- Intel Threading Building Blocks** 2007, O'Reilly Media. More focused on TBB alone, but describes a quite old release of the framework, hence you need to look at online documentation for some of the features. === Papers and reading material === TBD