Parallel programming techniques


Aim of the course

Gaining skills and competencies in creating and evaluating parallel programs with emphasis on hardware and software, based on appropriate models, tools and environments used in parallel computing.

Lecture programme

Models of parallel computation: message passing, data parallel, shared memory. Impact of computer architecture and programming environment on the algorithm. PCAM methodology. Metrics for parallel programs. Detailed analysis of the speed-up and efficiency of parallel computing scheme for fixed and variable size of the problem. Load balancing. Overview of the structure of typical programming environments with the message passing: MPI-1, MPI-2. Other languages and parallel programming environments: HPF, OpenMP, Linda. Examples of parallel algorithms: matrix operations, solving systems of linear equations, flow simulation using cellular automata. Models of the CSP, BSP, PRAM. Skeletal programming. HPC-, HTC- and Grid-based computing.

Overview of the course elements

The course includes laboratory classes. The content of these classes consolidates and extends the knowledge learned at lectures, in particular with regard to the use of programming tools: MPI-1, MPI-2, and OpenMP and how to evaluate developed programs.

Reading list

1. pod red. A. Karbowskiego, E. Niewiadomskiej-Szymkiewicz: „Programowanie równoległe i rozproszone”, Oficyna Wydawnicza Politechniki Warszawskiej, Warszawa 2009
2. Z. J. Czech: „Wprowadzenie do obliczeń równoległych", Wydawnictwo Naukowe PWN, 2013
3. Bogdan Borowik „Programowanie równoległe w zastosowaniach”, Mikom 2001
4. J. Foster: „Designing and Building Parallel Programs’‘, Addison-Wesley, 1995 (on-line)
5. M. Snir, S. Otto, S. Huss-Lederman, D. Walker, J. Dongarra, “MPI: the Complete Reference”, The MIT Press, 1995 (on-line)

Copyright © 2010 Department of Computer Science   |   AGH University of Science and Technology   |   Created by Creative Bastards