Programming tools for parallel and distributed systems

Code 535AA
Credits 6

Learning outcomes

The course deals with design, evaluation and utilization of programming tools and environments for parallel and distributed applications. The course focuses on unifying programming methodologies as well as on the integration of the programming methodologies targeted at specific architectural levels, from Clouds down to specialized many-core devices and reconfigurable hardware. Tools for experiment management and application scripting are also discussed. The programming paradigms and the related cost models are mainly applied to high-performance stream- and data-parallel computations, distributed shared memory ones, adaptive and context-aware programming. For these paradigms, static and dynamic tools are presented and their performances are evaluated through case studies in experimental and laboratory activities.
Syllabus
1. High-performance stream- and data-parallel computations, Distributed shared memory,
2. Methodologies and unifying programming environments for parallel and distributed computing
3. Development and management tools for parallel and distributed computing
4. Paralleli systems with hierarchical / multilevel architecture
5. Adaptive and context-aware programming, event-based programming, fault-tolerance strategies for high performance computing.
6. Run-time supports
7. Case studies