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: | Term 2026: | Term 2023: |
Learning outcomes
Knowledge, a graduate knows and understands:
KP6_WG4 - advanced computational methods used to solve typical physical problems and examples of practical implementation of such methods using appropriate IT tools; knows the elements of programming and software engineering within the scope provided by the study curriculum;
Skills, a graduate is able to:
KP6_UW4 - apply numerical methods to solve mathematical problems; possesses the ability to use basic software packages and selected programming languages within the scope provided by the study curriculum;
KP6_UK5 - perform a critical analysis of measurement, observation, or theoretical calculation results, along with a quantitative assessment of the accuracy of the results;
Social competences, a graduate is ready to:
KP6_KK4 - enhance professional and personal competences;
KP6_KO1 - properly determine priorities for the implementation of tasks set by themselves or others;
KP6_KO2 - consult scientific and popular science literature in order to deepen and broaden their knowledge, taking into account the risks involved in acquiring information from unverified sources, including the Internet;
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: