Applications of Parallel Computers

Completion:examination (written&verbal)
Type of
Hour/semLecturesSem. ExercisesLab. exercisesComp. exercisesOther
Guarantee:Fučík Otto, doc. Dr. Ing., DCSY
Lecturer:Jaroš Jiří, Ing., Ph.D., DCSY
Faculty:Faculty of Information Technology BUT
Department:Department of Computer Systems FIT BUT
Parallel System Architecture and Programming (ARC), DCSY
Learning objectives:
  To clarify possibilities of parallel programming on multi-core processors, on clusters and on GP GPUs. View over synchronization and communication techniques. Get to know a method of parallelization and performance prediction of selected real-world applications, the design of correct programs and the use parallel computing in practice.
  The course gives an overview of usable parallel platforms and models of programming, mainly shared-memory programming (OpenMP), message passing (MPI) and data-parallel programming (CUDA, OpenCL). A parallelization methodology is completed by performance studies and applied to a particular problem. The emphasis is put on practical aspects and implementation.
Knowledge and skills required for the course:
  Types of parallel computers, programming in C/C++, basic numerical methods
Subject specific learning outcomes and competences:
  To learn how to parallelize various classes of problems and predict their performance. To be able to utilize parallelism and communication at thread- and process level. To get acquainted with state-of-the-art standard interfaces, language extensions and other tools for parallel programming (MPI, OpenMP). Write and debug a parallel program for a selected task.
Generic learning outcomes and competences:
  Parallel architectures with distributed and shared memory,  programming in C/C++ with MPI and OpenMP, GPGPU, parallelization of basic numerical methods.
Syllabus of lectures:
  • Parallel computer architectures, performance measures and their prediction
  • Patterns for parallel programming
  • Synchronization and communication techniques.
  • Shared variable programming with OpenMP
  • Message-passing programming with MPI
  • Data parallel programming with CUDA/OpenCL
  • Examples of task parallelization and parallel applications
Fundamental literature:
  • Pacecho, P.: Introduction to Parallel Programming. Morgan Kaufman Publishers, 2011, 392 s., ISBN: 9780123742605  
  • Kirk, D., and Hwu, W.: Programming Massively Parallel Processors: A Hands-on Approach, Elsevier, 2010, s. 256, ISBN: 978-0-12-381472-2
Study literature:
  1. http://www.cs.berkeley.edu/~demmel/cs267_Spr13/
Controlled instruction:
  Defence of a software project based on a variant of parallel programming.