Course: Parallel programming and computing

» List of faculties » FBI » UFY
Course title Parallel programming and computing
Course code UFY/505
Organizational form of instruction Lecture + Lesson
Level of course Bachelor
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 Compulsory
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.
  • Musil Patrik, Mgr.
Course content
Content of 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.-3. MPI Parallelization, basic commands (MPI_Bcast, MPI_Reduce, MPI_Allreduce). Different ways of parallelization of cycles. 4. Communication of arrays (MPI_Scatter, MPI_Gather). 5. Commands of the C language for working with files, input/output in parallel codes, comparison of different methods. 6. Timing of the program execution, communication vs. computing time - optimization of the number of threads, efficiency. 7. Point to point parallelization in MPI, MPI_Send, MPI_Recv). 8. Commands for creation and management of MPI parallel environment, , execution of parallel tasks on multiple nodes, queue submission systems. 9. Differences in parallelization with respect to cooperation of threads during the calculation. Shared vs. distributed memory, MPI vs. OpenMP parallel environments, shared vs. private variables. 10. Parallelization in OpenMP, basic commands (pragma, parallelization of cycles, reduction). 11. Parallelization in OpenMP, advanced commands (pragma single/master, critical/atomic/ordered, parallelization of sections). 12.-13. Programming on the graphic cards (GPU) in OpenCL, host + kernel, passing of arguments, setting number of GPU threads. Content of tutorials/seminar: Seminars accompany the lectures - students work on remote parallel cluster, code and execute tasks accompanying each lecture.

Learning activities and teaching methods
unspecified
Learning outcomes
Introduction to CPU parallelization, methods of parallelization, its HW and SW implementation using MPI and OpenMP. Quick introduction to parallelization on GPU - graphical cards. Solution of sample practical tasks, work in a parallel environment.

Prerequisites
Knowledge of programming in any programming language (ideally C, which is used in the course), basics of working in Linux.

Assessment methods and criteria
unspecified
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. 26 hours: Home preparation 20 hours: Semester work 10 hours: Preparation for credit test 10 hours: Preparation for the exam Additional study materials: Materials for lectures and tutorials will be in USB LMS Moodle.
Recommended literature
  • " RUUD VAN DER PAS, ERIC STOTZER, CHRISTIAN TERBOVEN. Using OpenMP-The Next Step: Affinity, Accelerators, Tasking, and SIMD, MIT Press; 1st edition 2017, ISBN: 978-0262534789.
  • BARBARA CHAPMAN, GABRIELE JOST, RUUD VAN DER PAS. Using OpenMP: Portable Shared Memory Parallel Programming, The MIT Press, 2007..
  • GERASSIMOS BARLAS. Multicore and GPU Programming: An Integrated Approach, Morgan Kaufmann 2014, ISBN: 978-0124171374.
  • Chandra, R., Dagum, L., Kohr, D., Dor Maydan. Parallel Programming in OpenMP. Morgan Kaufmann, 2000.
  • MICHAEL J. QUINN. Parallel Programming in C with MPI and OpenMP, McGraw Hill Higher Education, 2003..
  • WILLIAM GROPP, EWING LUSK, AND ANTHONY SKJELLUM. Using MPI - 3rd Edition: Portable Parallel Programming with the Message Passing Interface (Scientific and Engineering Computation), The MIT Press, 2014..


Study plans that include the course
Faculty Study plan (Version) Category of Branch/Specialization Recommended year of study Recommended semester
Faculty: Faculty of Science Study plan (Version): Bioinformatics (1) Category: Informatics courses 3 Recommended year of study:3, Recommended semester: Winter