Parallel and Distributed Systems

Year:
1st year
Semester:
S2
Programme main editor:
I2CAT
Onsite in:
Remote:
ECTS range:
6-7 ECTS

Professors

img
Professors
Marco Danelutto
UNIPI
img
Massimo Torquati
UNIPI
img
Virginia Niculescu
UBB
img
Anastasiya Molchanova
NTUU
img
Oleksandr Kovalchuk
NTUU
img
Stéphane Rovedakis
CNAM

Prerequisites:

C/C++ programming, algorithms, foundations of computer architecture (multicore, Cluster-of-Workstation COW).

Pedagogical objectives:

The student successfully completing the course will be able to design and implement parallel applications/run time supports efficiently using/implementing common and useful parallel design patterns using both structured and more classical parallel programming frameworks. In particular, the student will be able to evaluate different, alternative parallelisation strategies and techniques by exploiting proper abstract and concrete parallel pattern performance models and to implement the different parallelisation strategies with state of the art parallel programming tools.

Evaluation modalities:

Final project, assignment reports, and oral exam (theory arguments).

Description:

The main course deals with a set of arguments related to the programming models targeting parallel and/or distributed architectures. The common background of these arguments is represented by structured parallel programming models, such as those based on algorithmic skeletons or on parallel design patterns. More in detail, the course covers:

  • Parallel and distributed programming principles,
  • Structured parallel/distributed programming patterns (data and stream parallel),
  • Parallel/distributed pattern implementation techniques for multi/many cores and cluster/networks of workstations,
  • Parallel/distributed patterns refactoring,
  • Autonomic management of non functional features.
  • Analytical, concrete and abstract performance models for parallel/distributed patterns,
  • Implementation of parallel/distributed patterns with state of the art parallel programming frameworks.

Complementary content:

  • Concise introduction to the usage of GPU accelerators.
  • Concise introduction to the usage of data intensive parallel programming frameworks.

Required teaching material

Book : Parallel Programming Concepts and Practice, Bertil Schmidt, Jorge Gonzalez-Martinez, Christian Hundt, Moritz Schlar, Morgan Kaufmann, 2017, plus course notes (PDF). No sw licence required, all software is open source (under Linux). Shared memory multicore and a small cluster of workstations with Linux, GNU C++ toolchain needed for exercise and final project implementation.

Teaching volume:
lessons:
28-40 hours
Exercices:
0-20 hours
Supervised lab:
0-28 hours
Project:

Devices:

  • Laboratory-Based Course Structure
  • Open-Source Software Requirements