Parallel Programming 390-FG1-3PR
Study profile: general academic
Form of study: full-time
Subject type: compulsory
Field and discipline of science: Field of exact and natural sciences, Discipline of physical sciences
Level of education: first-cycle studies
Year of study/semester: 3rd year/6th Semester
ECTS Points: 3
Student Workload Balance:
- Participation in lectures (15 hours),
- Participation in laboratories (30 hours),
- Participation in consultations (15 hours),
- Student's own work at home (15 hours),
Quantitative Indicators:
- Student workload related to classes requiring direct teacher involvement - 2.4 ECTS;
- Student workload related to independent work - 0.6 ECTS.
Principles of Artificial Intelligence (AI) Use:
During classes, the use of AI systems is permitted for the following purposes:
1. Machine translation of source texts from foreign languages.
2. Searching for and organizing scientific sources.
The use of AI systems is not permitted during exams.
If violations of the above rules are found, the student may be held accountable under separate disciplinary provisions.
Lecture Contents:
- Parallel Programming for Shared Memory Machines
- Introduction to OpenMP
- Basic Clauses
- Library Functions, Environment Variables, Controlling Execution and Thread Count
- Advanced Clauses
- Parallel Programming for Distributed Memory Machines
- Introduction and Installation of MPI
- Point-to-Point Communication
- Simple Collective Communication
- Collective Communication with Reduction
- Parallel Programming for Computing Accelerators
- Introduction to CUDA Programming
- Introduction to OpenCL Programming
Lab Contents:
The lab involves practical exercises related to the content covered in the lecture.
Type of course
Mode
Requirements
Prerequisites
Prerequisites (description)
Course coordinators
Term 2024: | Term 2025: |
Learning outcomes
(K_W24) - Has basic knowledge of algorithms and data structures.
Has basic knowledge and is familiar with the concepts of parallel programming.
(K_U23) - Is able to write a simple computer program in a selected programming language, compile it, and run it.
Is able to write a computer program that performs parallel calculations on selected hardware architectures.
(K_U25) - Is able to search for and use specialized computer software on the Internet, respecting intellectual property rights and terms of use.
(K_K05) - Is able to independently search for information in literature and on the Internet, including in foreign languages.
Assessment criteria
The lab is graded based on the average of the grades obtained from two computer-based tests.
The use of AI systems is not permitted during the lab.
The use of AI systems to generate code is prohibited during homework assignments.
The lecture is graded based on the final exam.
The use of AI systems is not permitted during the exam.
Bibliography
Basic Reading:
- Z. Czech. Introduction to Parallel Computing, PWN, Warsaw 2010.
- P. Stpiczyński, M. Brzuszek, Fundamentals of Parallel Computing Programming, UMCS, Lublin 2011.
- Jason Sanders, Edward Kandrot: Miracles in Examples: An Introduction to General GPU Process Programming, Helion Publishing House, 2012.
Supplementary Reading:
- OpenMP: https://www.openmp.org/
- Open MPI: https://www.open-mpi.org/
- CUDA: https://docs.nvidia.com/cuda/
- OpenCL: https://www.khronos.org/opencl/
- C++11 Threads: https://en.cppreference.com/w/cpp/thread
Additional information
Additional information (registration calendar, class conductors, localization and schedules of classes), might be available in the USOSweb system: