Parallel Programming

Course Description

The course points to the need for algorithms that can take advantage of the increasing availability of parallel computational power. It describes the principles of parallel algorithm development and parallel programming models. The course also presents parallel programming utilities and enables the students to utilize the presented techniques.

Learning Outcomes

  1. describe parallel computation and parallel programming models
  2. describe the PRAM computer model
  3. apply the PRAM programming model in parallel programming
  4. apply MPI technology in parallel program development
  5. recognize phases of parallel algorithm design
  6. combine parallel algorithm development elements
  7. evaluate efficiency and scalability of parallel algorithms

Forms of Teaching

Lectures

predavanja

Exercises

vježbe

Independent assignments

programski projekt

Grading Method

Continuous Assessment Exam
Type Threshold Percent of Grade Threshold Percent of Grade
Laboratory Exercises 0 % 15 % 0 % 10 %
Mid Term Exam: Written 0 % 35 % 0 %
Final Exam: Written 0 % 50 %
Exam: Written 50 % 50 %
Exam: Oral 40 %

Week by Week Schedule

  1. Flynn’s taxonomy
  2. Parallel algorithm development models
  3. Message passing, Shared vs; distributed memory
  4. Message passing
  5. Formal models of parallel computation, including the Parallel Random Access Machine (PRAM/APRAM) and alternatives such as Bulk Synchronous Parallel (BSP)
  6. Formal models of parallel computation, including the Parallel Random Access Machine (PRAM/APRAM) and alternatives such as Bulk Synchronous Parallel (BSP)
  7. Parallel algorithmic patterns (divide-and-conquer, map and reduce, master-workers, others)
  8. Midterm exam
  9. Parallel algorithmic patterns (divide-and-conquer, map and reduce, master-workers, others)
  10. Analysis methods for parallel algoritmhs
  11. Speed-up and scalability
  12. Performance measurement and model evaluation
  13. Modular parallel algorithms
  14. Non-uniform memory architectures; GPGPU
  15. Final exam

Study Programmes

University graduate
[FER3-HR] Audio Technologies and Electroacoustics - profile
Elective Courses (2. semester)
[FER3-HR] Communication and Space Technologies - profile
Elective Courses (2. semester)
[FER3-HR] Computational Modelling in Engineering - profile
Elective Courses (2. semester)
[FER3-HR] Computer Engineering - profile
Elective Course of the profile (2. semester)
Elective Courses (2. semester)
[FER3-HR] Computer Science - profile
(2. semester)
[FER3-HR] Control Systems and Robotics - profile
Elective Courses (2. semester)
[FER3-HR] Data Science - profile
Elective Courses (2. semester)
[FER3-HR] Electrical Power Engineering - profile
Elective Courses (2. semester)
[FER3-HR] Electric Machines, Drives and Automation - profile
Elective Courses (2. semester)
[FER3-HR] Electronic and Computer Engineering - profile
Elective Courses (2. semester)
[FER3-HR] Electronics - profile
Elective Courses (2. semester)
[FER3-HR] Information and Communication Engineering - profile
Elective Courses (2. semester)
[FER3-HR] Network Science - profile
Elective Courses (2. semester)
[FER3-HR] Software Engineering and Information Systems - profile
Core-elective courses (2. semester)
[FER2-HR] Computer Engineering - profile
Specialization Course (2. semester)
[FER2-HR] Computer Science - profile
Specialization Course (2. semester)
[FER2-HR] Software Engineering and Information Systems - profile
Specialization Course (2. semester)

Literature

D. Jakobović (.), Paralelno programiranje - skripta,
I. Foster (.), Designing and Building Parallel Programs, Addison-Wesley

Laboratory exercises

For students

General

ID 240706
  Summer semester
5 ECTS
L1 English Level
L1 e-Learning
45 Lectures
0 Seminar
0 Exercises
15 Laboratory exercises
0 Project laboratory

Grading System

Excellent
Very Good
Good
Sufficient