Lecturer(s)
|
-
Osička Petr, Mgr. Ph.D.
-
Tříska Jan, Mgr. Ph.D.
-
Vyjídáček Roman, Mgr.
-
Laštovička Jan, Mgr. Ph.D.
-
Mikula Tomáš, Mgr.
|
Course content
|
Knowledge of tools and techniques of parallel programming is today, due to the development of hardware (multicore processors, hundreds of processors in graphic cards usable for general computing), one of the basic demands on a good-class programmer. In the course students will learn both advantages and problems coming up in parallel programs with shared memory, both in classical synchronization problems and in experience, and learn to solve them by synchronization methods. Programming is held in C/C# languages using interfaces provided by operating systems a also in Common Lisp language in which extensions for parallel programming, which nowadays become part of modern programming languages, are introduced. The course is followed by some courses in master study of Computer Science in which the areas of parallel programming and also distributed systems, which become popular with the development of computer and other (e.g. mobile) networks, are discussed in a more details. 1. Parallel program: features, advantages, problems. Atomic actions and their support by HW. 2. Synchronization, reentrancy, active a passive waiting. 3. Demonstration of basic problems, producer-consumer problem. 4. Critical section and its usage. A lock (mutex), mutual exclusion, conditional waiting. 5.,6. Barrier and its usage in critical section and data parallel algorithms. Problems which can be solved by data parallel algorithms. 7. Semaphore and its usage in solving critical section, barriers and the producer-consumer (bounded buffer) problem. 8. The readers and writers problem and its various solutions. 9. Further typical synchronization problems: dinning philosophers, sleeping barber, tobacco smokers and other. 10. Monitor and conditional variable. Their usage in solutions of synchronization problems. 11. Support for paralellization in programming languages, new means of parallel programming in .NET and MacOS X.
|
Learning activities and teaching methods
|
Lecture, Demonstration
|
Learning outcomes
|
The students become familiar with basic concepts of parallel programming.
3. Application: Indetify and solve obstacles in developing parallel programs.
|
Prerequisites
|
unspecified
|
Assessment methods and criteria
|
Oral exam, Written exam
Active participation in class. Completion of assigned homeworks. Passing the oral (or written) exam.
|
Recommended literature
|
-
ANDREWS G. R. (2000). Foundations of Multithreaded, Parallel, and Distributed Programming. Addison-Wesley.
-
Ben-Ari M. (2006). Principles of concurrent and distributed programming. Addison-Wesley.
-
McCool M., Reinders J., Robinson A. (2012). Structured parallel programming: patterns for efficient computation. Morgan Kaufman.
-
Roosta, Seyed H. (2000). Parallel processing and parallel algorithms. Springer.
-
Schmidt Ph.D., Gonzales-Domingues, J., Hundt, Cc., Schlarb, M. (2017). Parallel Programming: Concepts and Practice. Morgan Kaufman.
-
Schneider F. B. (1997). On concurrent programming. Springer.
|