Popis predmeta

Course Description

The course introduces students to the basic concepts of parallel computer systems, concurrency, and parallelism. The course explains the types of parallelism at low and higher abstraction levels: instructional, functional (task), data and pipeline. The models of execution in parallel systems, parallel programming models, synchronization, coherence and shared-memory concurrency are covered. Learned concepts are applied to design and optimize the performance of programs for parallel systems.

Learning Outcomes

  1. Recognize the types of parallelism in computer systems
  2. Recognize the models of execution in parallel systems.
  3. Recognize the concept of concurrecy and distinguish it from the concept of paralellism.
  4. Recognize the concepts of coherence, synchronization and memory models in parallel systems.
  5. Apply learned concepts to decompose simple problems for parallel execution.
  6. Apply learned concepts to performance optimizations of programs..

Forms of Teaching

Lectures

Lectures, teaching materials available, theoretical and practical coverage of weekly topics.

Independent assignments

Project assignment covering the course topics.

Laboratory

Practical assignments covering the specific topic.

Grading Method

Continuous Assessment Exam
Type Threshold Percent of Grade Threshold Percent of Grade
Laboratory Exercises 50 % 25 % 50 % 25 %
Class participation 0 % 5 % 0 % 5 %
Seminar/Project 50 % 30 % 50 % 30 %
Final Exam: Written 50 % 30 %
Final Exam: Oral 10 %
Exam: Written 50 % 30 %
Exam: Oral 10 %

Week by Week Schedule

  1. Multiple simultaneous computations, Goals of parallelism (e.g., throughput) versus concurrency (e.g., controlling access to shared resources)
  2. Parallelism, communication, and coordination, Goals and basic models of parallelism
  3. Shared Memory, Atomicity, Symmetric multiprocessing (SMP)
  4. Multicore processors, Shared vs; distributed memory
  5. SIMD, vector processing, GPU, co-processing
  6. Programming constructs for parallelism
  7. Task-based decomposition
  8. Midterm exam
  9. Data-parallel decomposition
  10. Programming errors not found in sequential programming
  11. Models for parallel program performance
  12. Evaluating communication overhead
  13. Load balancing
  14. Actors and reactive processes (e.g., request handlers)
  15. Final exam

Study Programmes

University undergraduate
Computing (study)
Free Elective Courses (5. semester)
Electrical Engineering and Information Technology (study)
Free Elective Courses (5. semester)
University graduate
Audio Technologies and Electroacoustics (profile)
Free Elective Courses (1. semester) (3. semester)
Communication and Space Technologies (profile)
Free Elective Courses (1. semester) (3. semester)
Computational Modelling in Engineering (profile)
Free Elective Courses (1. semester) (3. semester)
Computer Engineering (profile)
Core-elective courses (1. semester)
Computer Science (profile)
Free Elective Courses (1. semester) (3. semester)
Control Systems and Robotics (profile)
Free Elective Courses (1. semester) (3. semester)
Data Science (profile)
Free Elective Courses (1. semester) (3. semester)
Electrical Power Engineering (profile)
Free Elective Courses (1. semester) (3. semester)
Electric Machines, Drives and Automation (profile)
Free Elective Courses (1. semester) (3. semester)
Electronic and Computer Engineering (profile)
Free Elective Courses (1. semester) (3. semester)
Electronics (profile)
Free Elective Courses (1. semester) (3. semester)
Information and Communication Engineering (profile)
Free Elective Courses (1. semester) (3. semester)
Network Science (profile)
Free Elective Courses (1. semester) (3. semester)
Software Engineering and Information Systems (profile)
Free Elective Courses (1. semester) (3. semester)

Literature

John L. Hennessy, David A. Patterson (2017.), Computer Architecture, Morgan Kaufmann
Peter Pacheco (2011.), An Introduction to Parallel Programming, Elsevier
Ruud van der Pas, Eric Stotzer, Christian Terboven (2017.), Using OpenMP -- The Next Step, MIT Press
David R. Kaeli, Perhaad Mistry, Dana Schaa, Dong Ping Zhang (2015.), Heterogeneous Computing with OpenCL 2.0, Morgan Kaufmann

Laboratory exercises

For students

General

ID 183376
  Winter semester
5 ECTS
L2 English Level
L1 e-Learning
45 Lectures
15 Laboratory exercises

Grading System

90 Excellent
75 Very Good
65 Good
50 Acceptable

Learning Outcomes

  1. Recognize the types of parallelism in computer systems
  2. Recognize the models of execution in parallel systems.
  3. Recognize the concept of concurrecy and distinguish it from the concept of paralellism.
  4. Recognize the concepts of coherence, synchronization and memory models in parallel systems.
  5. Apply learned concepts to decompose simple problems for parallel execution.
  6. Apply learned concepts to performance optimizations of programs..

Forms of Teaching

Lectures

Lectures, teaching materials available, theoretical and practical coverage of weekly topics.

Independent assignments

Project assignment covering the course topics.

Laboratory

Practical assignments covering the specific topic.

Grading Method

Continuous Assessment Exam
Type Threshold Percent of Grade Threshold Percent of Grade
Laboratory Exercises 50 % 25 % 50 % 25 %
Class participation 0 % 5 % 0 % 5 %
Seminar/Project 50 % 30 % 50 % 30 %
Final Exam: Written 50 % 30 %
Final Exam: Oral 10 %
Exam: Written 50 % 30 %
Exam: Oral 10 %

Week by Week Schedule

  1. Multiple simultaneous computations, Goals of parallelism (e.g., throughput) versus concurrency (e.g., controlling access to shared resources)
  2. Parallelism, communication, and coordination, Goals and basic models of parallelism
  3. Shared Memory, Atomicity, Symmetric multiprocessing (SMP)
  4. Multicore processors, Shared vs; distributed memory
  5. SIMD, vector processing, GPU, co-processing
  6. Programming constructs for parallelism
  7. Task-based decomposition
  8. Midterm exam
  9. Data-parallel decomposition
  10. Programming errors not found in sequential programming
  11. Models for parallel program performance
  12. Evaluating communication overhead
  13. Load balancing
  14. Actors and reactive processes (e.g., request handlers)
  15. Final exam

Study Programmes

University undergraduate
Computing (study)
Free Elective Courses (5. semester)
Electrical Engineering and Information Technology (study)
Free Elective Courses (5. semester)
University graduate
Audio Technologies and Electroacoustics (profile)
Free Elective Courses (1. semester) (3. semester)
Communication and Space Technologies (profile)
Free Elective Courses (1. semester) (3. semester)
Computational Modelling in Engineering (profile)
Free Elective Courses (1. semester) (3. semester)
Computer Engineering (profile)
Core-elective courses (1. semester)
Computer Science (profile)
Free Elective Courses (1. semester) (3. semester)
Control Systems and Robotics (profile)
Free Elective Courses (1. semester) (3. semester)
Data Science (profile)
Free Elective Courses (1. semester) (3. semester)
Electrical Power Engineering (profile)
Free Elective Courses (1. semester) (3. semester)
Electric Machines, Drives and Automation (profile)
Free Elective Courses (1. semester) (3. semester)
Electronic and Computer Engineering (profile)
Free Elective Courses (1. semester) (3. semester)
Electronics (profile)
Free Elective Courses (1. semester) (3. semester)
Information and Communication Engineering (profile)
Free Elective Courses (1. semester) (3. semester)
Network Science (profile)
Free Elective Courses (1. semester) (3. semester)
Software Engineering and Information Systems (profile)
Free Elective Courses (1. semester) (3. semester)

Literature

John L. Hennessy, David A. Patterson (2017.), Computer Architecture, Morgan Kaufmann
Peter Pacheco (2011.), An Introduction to Parallel Programming, Elsevier
Ruud van der Pas, Eric Stotzer, Christian Terboven (2017.), Using OpenMP -- The Next Step, MIT Press
David R. Kaeli, Perhaad Mistry, Dana Schaa, Dong Ping Zhang (2015.), Heterogeneous Computing with OpenCL 2.0, Morgan Kaufmann

Laboratory exercises

For students

General

ID 183376
  Winter semester
5 ECTS
L2 English Level
L1 e-Learning
45 Lectures
15 Laboratory exercises

Grading System

90 Excellent
75 Very Good
65 Good
50 Acceptable