Course: Parallel Programming

« Back
Course title Parallel Programming
Course code UFY/PPI
Organizational form of instruction Lecture + Lesson
Level of course unspecified
Year of study not specified
Frequency of the course In each academic year, in the winter semester.
Semester Winter
Number of ECTS credits 4
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
Course availability The course is available to visiting students
Lecturer(s)
  • Předota Milan, doc. RNDr. Ph.D.
Course content
Lectures: 1. Introduction to parallel computing. What is parallel computing? Why do we need parallel computers? Parallelization strategies. Acquaintance with a simple parallel program. 2. Commands of the C language for working with files and timing of the program. 3. Differences in parallelization with respect to cooperation of threads during the calculation. Shared vs. distributed memory, MPI vs. OpenMP parallel environments. 4. What is MPI? Commands for creating and managing a parallel environment. 5. Parallelization of MPI, basic commands (MPI_BCAST MPI_REDUCE, MPI_ALLREDUCE). 6. Management of tasks, execution of parallel tasks, queue submission systems. 7. Parallelization using MPI, other commands (SEND_MPI, MPI_RECV). 8. Input and output in parallel programs. Comparison of different methods. 9. Communication vs. computing time - optimizing the number of threads' efficiency. 10. Parallelization in OpenMP, basic commands. 11. Application: Parallel Computing in mathematics. 12. Application. Parallel sorting. 13. Application. Parallel molecular dynamics. 14. Programming on the graphic cards (GPU). Seminars: Seminars accompany the lectures - students work on remote parallel cluster, code and execute tasks accompanying each lecture.

Learning activities and teaching methods
Monologic (reading, lecture, briefing), Demonstration, Activating (simulations, games, drama)
  • Class attendance - 39 hours per semester
  • Preparation for classes - 39 hours per semester
  • Preparation for exam - 30 hours per semester
Learning outcomes
Introduction to CPU parallelization, methods of parallelization, its hardware and software implementation using MPI and OpenMP. Quick introduction to parallelization on GPU - graphical cards. Solution of sample practical tasks, work in a parallel environment.
Knowledge of MPI and OpenMP parallelization, knowledge of principles of GPU parallelization. Capability to write a parallel source code and/or parallelize serial code.
Prerequisites
Basic knowledge of programming in language C, or other. Basics of work in linux (can be quickly gained).

Assessment methods and criteria
Oral examination, Student performance assessment

Criteria for obtaining the course credit (zápočet): Solving at least 70% of tasks solved during exercises with the help of the teacher. Independent solution of two larger individual tasks to at least 50%. Criterium for passing the exam: At least 50% knowledge of the topic contained in the two drawn test questions.
Recommended literature
  • BARBARA CHAPMAN, GABRIELE JOST, RUUD VAN DER PAS: Using OpenMP: Portable Shared Memory Parallel Programming, The MIT Press, 2007.
  • E-learning materials of the course by M. Předota.
  • MICHAEL J. QUINN: Parallel Programming in C with MPI and OpenMP, McGraw Hill Higher Education, 2003.
  • ROHIT CHANDRA, LEO DAGUM, DAVE KOHR, DOR MAYDAN: Parallel Programming in OpenMP, Morgan Kaufmann, 2000.
  • WILLIAM GROPP, EWING LUSK, AND ANTHONY SKJELLUM: Using MPI - 2nd Edition: Portable Parallel Programming with the Message Passing Interface (Scientific and Engineering Computation), The MIT Press, 1999.


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