Course: Parallel Programming

» List of faculties » FAV » KIV
Course title Parallel Programming
Course code KIV/PPR-E
Organizational form of instruction Lecture + Tutorial
Level of course Master
Year of study not specified
Semester Winter
Number of ECTS credits 6
Language of instruction English
Status of course unspecified
Form of instruction Face-to-face
Work placements This is not an internship
Recommended optional programme components None
Lecturer(s)
  • Demko Jan, doc. Ing. Ph.D.
Course content
1. Classification of parallel computer architectures. Performance criteria. 2. Program code paralelization, shared memory paralelism. 3. Functional and data parallelism, threads, basic and structured forms of interaction. 4. Programming languages with a support for threads - means for parallelization: Java and C++ threads, Ada's tasks andrendez-vous. 5. Threading libraries, POSIX and WinAPI 6. Other than traditional means of concurrency code: OpenMP, Intel Threading Building Blocks and OpenCL (GPGPU). 7. Multiprocessor systems with distributed memory, MPDM and SPMD models. Communication parallelism & effects of physical network topology and virtual topology. 8. Tools for distributed computing - PVM. 9. Tools for distributed computing - MPI. 10. Grid Environment, Globus Toolkit. 11. Advanced techniques for speeding up a distributed computation. 12. Real-time systems. 13. Multithreading implementation on uniprocessor and symmetric multiprocessor.

Learning activities and teaching methods
Lecture supplemented with a discussion, Skills demonstration, Task-based study method, Seminar classes, Individual study
  • Preparation for an examination (30-60) - 104 hours per semester
  • Graduate study programme term essay (40-50) - 52 hours per semester
prerequisite
Knowledge
Fundamental knowledge of operating systems, KIV/ZOS. Knowledge of a language with thread support, or with a possibility to utilize threading functions of underlying operating system. Knowledge of a pointer language such as C is an advantage, KIV/PC.
learning outcomes
To student, the course provides a body of knowledge that student can apply in development of parallel applications and in development of tools for development and runtime of parallel applications. The body of knowledge covers: - Parallel programming theory, program models - Means of interaction for processes and threads - Computational environments with shared and distributed memories - Means of Java and ADA programming languages, POSIX and WinAPI for SMP - Means of PVM and MPI for a distribute environment - Means for speed-up of a computation - Real-time systems
teaching methods
Lecture supplemented with a discussion
Task-based study method
Skills demonstration
Individual study
Seminar classes
assessment methods
Written exam
Test
Seminar work
Individual presentation at a seminar
Recommended literature
  • Andrews, Gregory R. Foundations of multithreaded, parallel, and distributed programming. Reading : Addison-Wesley, 2000. ISBN 0-201-35752-6.
  • Berman, Kenneth A.; Paul, Jerome L. Algorithms: sequential, parallel, and distributed. Boston : Course Technology, 2005. ISBN 0-534-42057-5.
  • Grama, Ananth. Introduction to parallel computing. 2nd ed. Harlow : Pearson, 2003. ISBN 0-201-64865-2.
  • Ježek, Karel; Matějovic, Přemysl; Racek, Stanislav. Paralelní architektury a programy. Plzeň : ZČU, 1997. ISBN 80-7082-322-4.
  • Skillicorn, David. Foundations of parallel programming. Cambridge : University Press, 1994. ISBN 0-521-45511-1.


Study plans that include the course
Faculty Study plan (Version) Category of Branch/Specialization Recommended year of study Recommended semester