Strumenti di programmazione per sistemi paralleli e distribuiti
Teacher: Dr. Massimo Coppola
Contact info
e-mail : [email protected]
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 2018-2019, 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.
Timetable
Monday | 14-16 | C1 | (Polo Fibonacci) |
Thursday | 16-18 | N1 | (Polo Fibonacci) from 13/03 on |
Question time
This is a default question time slot. A different time slot can be agreed upon, if needed, by phone / e-mail.
Wednesday | 15-17 | ISTI-CNR office |
News and Updates
20/5/2019 Lessons on 23/05 and 30/05 will change plae and duration: they will be held in Room X2 in the 14:00– 17:00 slot (3 hours).
14/3/2019 MPI lab of today rescheduled to Monday 18/3
12/3/2019 Final lesson schedule change, see above.
27/2/2019 Starting next week, the final official schedule applies (Monday, Wednesday)
27/2/2019 today's lesson is in CNR room C40 (CNR-ISTI, close to entrance 19) from (about) 16.20 to 18.20
19/2/2019
IMPORTANT: schedule will likely change from next week on. If you missed the first lesson due to a schedule conflict with other courses, please contact the teacher
ASAP so that we can try to reschedule the lessons to non-conflicting slots.
2nd lesson on Friday 22/2.
First lesson is on Monday 18/2
——–
Course Journal
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
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
Teaching material
Books
-
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