Parallel Programming

Data is displayed for the academic year: 2024./2025.

Laboratory exercises

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.

Prerequisites

In order to successfully master the course, prior knowledge of operating systems and multi-threaded and multi-process programming is required.

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 Courses (2. semester)
Elective Courses of the profile (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)

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

lectures

Exercises

exercises

Independent assignments

software project

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. Oblikovni obrasci za razvoj paralelnih algoritama (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

Literature

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

General

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

Grading System

Excellent
Very Good
Good
Sufficient