Aim of the course
Understand and apply advanced parallelization methods and the main parallel algorithms.
Principles of constructing parallel algorithms: scalability, domain and functional decomposition, communication, mapping to hardware. Quality models, quality analysis of parallel programs, tools. Overview of parallel programming environments. Strategies for load balancing. Algorithms such as "parameter study". Parallel cellular automata. Parallel sorting. Graph algorithms, the analysis of complex networks. Parallel FFT algorithms. Search and optimization. Some algorithms for numerical linear algebra. Introduction to parallel algorithms of discrete event simulation. "out-of-core" computations. Algorithms for petascale computing.
Overview of the course elements
The course also includes laboratory classes. They consolidate the content of those classes and extend the knowledge taught at lectures. Students learn the methods of creating parallel algorithms and their evaluation / analysis, and will master developing complex parallel programs.
1. Ian Foster: Designing and Building Parallel Programs. Addison-Wesley, 1994
2. High Performance Cluster Computing: Programming and Applications, Vol. 2 R. Buyya (ed.), Prentice Hall PTR, 1999
3. M.A. Heroux, P. Raghavan, H.D. Simon. Parallel Processing for Scientific Computing, SIAM, 2006
4. D.A. Bader (ed). Petascale Computing: Algorithms and Applications, Chapman and Hall /CRC, 2008
5. Wybrane artykuły naukowe m.in. z Parallel Computing oraz materiały seminariów w Dagstuhl