The course focuses on parallel systems and applications and considers grand challenging problems, parallel architectures and supercomputing, interconnection topologies (mesh, hypercube, fat tree), programming paradigms (data parallel, shared memory, message passing, hybrid), mapping and data partitioning, communication and synchronization patterns, intensive communication (broadcast, scatter/gather, total exchange), simple parallel algorithms (scientific computations, sorting, parallel database computations, optimization, load balancing) and special topics (parallel languages and tools, performance metrics, parallel debugging and visualization, benchmarking and future opportunities). The Course Lab examines algorithm implementation in ΜPI+C (using MPICH and OpenMPI) and execution in a local cluster of workstations and provides a glimpse at performance and visualization issues.
Bibliography (mostly in English)
Eclass for papers & links - http://eclass.teicrete.gr
Online code and explanations (related to above topics,
Open source code and user/ref manuals, e.g. for Xilinx Zedboard, tools
Research publications from Journals and Conferences
V. Kumar, A. Grama, A. Gupta, and G. Karypis. Introduction to parallel computing: design and analysis of algorithms, Benjamin Cummings Publishing Company, 1994.
I. Foster, Design and Building of Parallel Programs, Online Book,, available from http://www.mcs.anl.gov/~itf/dbpp
N. Matloff, Programming on Parallel Machines; GPU, Multicore, Clusters and More, Online Book, available from http://heather.cs.ucdavis.edu/parprocbook