Parallel Programming
Code  Completion  Credits  Range  Language 

MIPPR.2  Z  2  1C  Czech 
 Lecturer:
 Tutor:
 Supervisor:
 Department of Computer Systems
 Synopsis:

Students are introduced to methods that allow them to implement algorithms for computing clusters of stations.
The course is focused purely practical and one of the techniques will be used for the implementation of the algorithm that runs on a cluster of workstations with distributed memory. Students learn how to practically evaluate the effectiveness of parallel applications and compare it with the sequential applications.
 Requirements:

Basic programming techniques and data structures, programming language C/C++, design of sequential algorithms, basic graph theory, and the UNIX operating system at the user level.
 Syllabus of lectures:

1. Basic information about semestral projects, selection of the topic of the semestral project and discussion of a sequential algorithm solution.
2. Implementation of the sequential algorithm and consultations.
3. Checking the implementation of sequential algorithms. Experiments with programming templates for MPI and examples of MPI programs.
4. Implementation of the parallel algorithm and consultations.
5. Checking the implementation of parallel algorithm.
6. Checking the theoretical and practical analysis and report.
 Syllabus of tutorials:

1. Basic information about semestral projects, selection of the topic of the semestral project and discussion of a sequential algorithm solution.
2. Implementation of the sequential algorithm and consultations.
3. Checking the implementation of sequential algorithms. Experiments with programming templates for MPI and examples of MPI programs.
4. Implementation of the parallel algorithm and consultations.
5. Checking the implementation of parallel algorithm.
6. Checking the theoretical and practical analysis and report.
 Study Objective:

The aim of the course is to provide students with practical experience with the development, debugging and measurement of the applications designed for parallel cluster of workstations with distributed memory.
 Study materials:

1. Tvrdík, P. ''Parallel algorithms and computing''. Praha: ČVUT, 2009. ISBN 8001022676.
2. Duato, J., Yalamanchili, S., Ni, L. M. ''Interconnection Networks: An Engineering Approach''. IEEE, 1997. ISBN 0818678003.
3. Greenlaw, R., Hoover, J. H., Ruzzo, W. L. ''Limits to Parallel Computation: PCompleteness Theory''. Oxford University Press, 1995. ISBN 0195085914.
4. Jaja, J. ''An Introduction to Parallel Algorithms''. AddisonWesley Professional, 1992. ISBN 0201548569.
5. Kumar, V., Grama, A., Gupta, A., Karpis, G. ''Introduction to Parallel Computing: Design and Analysis of Parallel Algorithms''. BenjaminCummings, 1994. ISBN 0805331700.
6. Miller, R., Boxer, L. ''Algorithms Sequential and Parallel: A Unified Approach''. Pearson Education, 1999. ISBN 0130863734.
7. Wilkinson, B., Allen, M. ''Parallel Programming: Techniques and Applications Using Networked Workstations and Parallel Computers''. Prentice Hall, 1998. ISBN 0136717101.
 Note:
 Further information:
 No timetable has been prepared for this course
 The course is a part of the following study plans:

 Knowledge Engineering, in Czech, Presented in Czech, for Students who Enrolled in 2015 (compulsory course in the program, elective course)
 Master Informatics, Presented in Czech, Version for Students who Enrolled in 2015 (compulsory course in the program, elective course)