This is the list of arguments actually presented during the course in the A.A. 2009-2010.
Evolution of computer architectures (multi/many core, clusters, grids, clouds) and urgency of effective parallel/distributed programming models and tools
Problems in classical parallel/distributed programming
Distinction between distributed and parallel based on computational grain
Definition of mapping and scheduling problems
Communications and synchronization
Computation grain
Load balancing, reliability, security and autonomic management
Definition of structured parallel/distributed programming model
Skeleton/patterns for parallel/distributed programming
Techniques for discovering patterns
Classification of patterns (data, stream, control parallel)
Typical patterns
Cole's manifesto principles (with extensions)
Skeleton frameworks
Implementation of skeleton frameworks
Fixed vs. variable skeleton set frameworks: how to handle expandability of the skeleton set using macro data flow implementation
Advanced features
Performance modelling of structured parallel/distributed computations
Measures of interest
Performance models for farm, pipeline and data parallel skeletons
Performance models using queue theory results
How to derive a performance model for a generic skeleton.
Design patterns
Software components
Definition
Component composition (use/provide ports, other kind of ports)
Usage, usage in a structured framework
Sample component frameworks (Java Beans, Fractal, SCA). Sample SCA code
Perspectives and differences with algorithmic skeletons and design patterns.
Workflows
Low level frameworks to support structured parallel/distributed programming
POSIX-TCP/IP (targets clusters and network of workstations
Client server sample implementation
Tools and command line utilities (ssh, scp, rsync)
Implementation of collective operations with UDP
Sample code in C/C++ and Java
OpenMP (targets multicores)
RPC/RMI (targeting clusters and networks of workstations)
Measuring and modelling POSIX/TCP platform
Mechanisms used to measure time (wall clock, clock, per process)
Simple modelling of TCP communications (approximating communication costs at the steady state)
Wireless networks
Peer-to-peer techniques
Concept
Centralized, distributed and hierarchical approaches
Typical algorithms and applications
Usage in structured contexts
Client server model vs. peer to peer: perspectives
Concepts and perspectives on parallel programming from the Berkeley paper “A View of the Parallel Computing Landscape”
Tools and frameworks:
Sample skeleton framework: Muesli. Skeletons provided, installation, sample code.
Sample skeleton framework: Calcium/ProActive. Skeletons provided, installation, sample code.
Sample component framework: ProActiveGCM
Sample message passing framework: MPI. Point to point primitives, collective primitives, compilation and run on clusters.
Sample thread framework: OpenMPI.