This is an informational web page for the Programming in Parallel Environment course (NPRG042), which is being taught at the Faculty of Mathematics and Physics, Charles University in Prague. The lectures are being held in S4, from 12:20 to 13:50 every Monday. The seminars are in S5 from 10:40 to 12:10 once a fortnight on Thursday starting the first week. The labs are every other week either at the same time in SW2 or in SW2 from 14:00 to 15:30 on Thursday.

You can find here:

You may also want to check out information regarding our KSI clusters.


The course is currently led by Jakub Yaghob and Martin Kruliš. Please direct inqueries of a specific topic (or home assignment) to the teacher who presented the topic.

Latest Updates

24.2.2021 The web page was updated for the new scholar year.
17.2.2020 The web page was updated for the new scholar year.
13.2.2019 The web page was updated for the new scholar year.
14.2.2018 The web page was updated for the new scholar year.


The grading criteria for this course are summarized in the following. Please, read them carefully. In case any rules are not clear, contact Dr. Jakub Yaghob.

Home Assignments

There will be 5 home assignments which are designed to explore several technologies and parallel platforms. The main criterium for grading is the speedup of your solution computed by measuring wall-time of your solution and reference serial solution.

You may recieve up to 4 points for each performance assigment. The sum of your points will determine your final mark as follows:

points mark
12 or more 1 (excellent)
9 to 11 2 (well done)
6 to 8 3 (OK)
5 or less failed

Furthermore, 5 points are required to receive a credit for the seminar (which is also required) and at least 1 point is required from each assignment. In other words, you need to solve all assignments at least in a minimal way.

If you are not satisfied with your mark, but you have at least 5 points - 1 point from each assignment (an thus the credit), you may request an oral examination where your mark will be determined. Once subscribing for the exam, your mark recieved from the assignments is no longer valid — i.e., you may fail the exam even if you have enough points from the assignments.

Each assignment has a strict deadline. Once the deadline is reached, all assignments are collected and graded. You may submit your solution after the deadline and ask for (re)evaluation, but you will recieve reduced points. Submissions that would get 2 or more points normally will get only 1 point if submitted late. Late submissions which would not worth 2 points normally will receive no points when delivered late.


The domain of parallel architectures and parallel programming is perhaps the most intensively developing field in the computer science. Hence, the slides are being updated continuously. Furthermore, bare in mind that some information on the slides may become outdated despite our best efforts. If you have any questions or suggestions related to the lectures, please contact the teachers.

1.3.2021 Parallel programming theory PPTX File Icon 01-theory.ppt 963 5693 3313
8.3.2021 C# and .NET PPTX File Icon 17-cs.pptx
15.3.2021 Finding parallelism PPTX File Icon 02-finding.ppt 963 5693 3313
22.3.2021 Intel Threading Building Blocks PPTX File Icon 12-tbb.pptx
29.3.2021 Algorithm structures PPTX File Icon 03-algorithm.ppt 963 5693 3313
12.4.2021 OpenMP PPTX File Icon 13-openmp.pptx 963 5693 3313
19.4.2021 Algorithm structures (continuation) PPTX File Icon 03-algorithm.ppt 963 5693 3313
26.4.2021 GPGPU, CUDA PPTX File Icon 16-cuda.pptx
3.5.2021 GPGPU, CUDA (continuation) PPTX File Icon 16-cuda-adv.pptx
10.5.2021 Support structures PPTX File Icon 04-support.ppt 963 5693 3313
17.5.2021 Apache Spark PPTX File Icon 15-spark.pptx 963 5693 3313
24.5.2021 Support structures (continuation) PPTX File Icon 04-support.ppt 963 5693 3313
31.5.2021 Support structures (continuation) PPTX File Icon 04-support.ppt 963 5693 3313


Each assignment objective is to implement a parallel solution for described problem using specified technology. Let us emphasize, that the solution must use particular technology and must not use any other technology for parallelization. Please, read the assignment specification carefully and observe all details regarding the file naming conventions, framework utilization, compilation, and APIs.

The correct results are provided by the serial solution which is provided for each problem. The speedup is computed as the ratio of measured wall time of the serial solution and your parallel solution. When multiple datasets are provided, the speedup is determined for each dataset separately, and the final speedup is computed as a harmonic mean of the individual speedups.

The parallel solution must return the exact same results as the serial solution unless specified otherwise. A solution that fails to do so will not be accepted (i.e., no points will be granted). Furthermore, a solution is forbidden to produce any output to both stdout and stderr which is not required or allowed in the problem description. Debugging outputs may interfere with our testing framework and so your solution will be treated as if it does not provide a correct output.

The testing environment does not use any sand box or other means to prevent the submitted solutions from performing malicous tasks since we need to measure the performance without any interference. Please, take extra care to ensure that your solution is not performing any tasks that may violate the security of parlab. Any attempt for intentional breach will result into severe disciplinary (and possibly legal) actions against the participants.

The details regarding the testing infrastructure and the assignment submission can be found on KSI clusters page.

Please note that the parlab uses CentOS Linux, which has rather old version of g++ compiler. We have installed newer versions of g++ on all workers to let you fully appreciate new features of C++11/14/17. The new g++ compiler will be also used for testing your submits. It will be invoked with following flags CXXFLAGS=-Wall -O3 -std=c++17.

Additional materials are located at /mnt/home/_teaching . The subdirectory para holds the data related to the assignments (data, frameworks, ...) and the subdirectory examples holds the examples that will be presented during the lectures.

Assignment Submission

Unless specified otherwise, you are expected to submit your solution by copying appropriate files to the submit_box directory inside your home. The entire contents of this directory is copied atomically by our collection script when the deadline passes. The collection process also purges the submit box, so it is ready for another submission. Make sure you have copy the correct files which are requested by the assignment specification. Also make sure that you have your own copy of the files somewhere else.


The work in labs focues on introducing thechnologies, which are subsequently used in home assignments. Therefore, it is widely recommended to attend the labs. Details about labs and seminars will be updated continuously.

Both labs and home assignments will require that you get yourselves familiar with our parlab and gpulab clusters and the SLURM management system. See the KSI clusters readme.

date ZOOM details
4.3.2021 927 5572 5683 Revising parallelism in operating systems and mainstream multicore CPUs seminar - slides
11.3.2021 C# tasks, assignment #1 assignment #1
18.3.2021 Consultation for the assignment #1 assignment #1
25.3.2021 Intel Threading Building Blocks, assignment #2 assignment #2 Matrix Transposition
1.4.2021 Consultation for the assignment #2, discussing possible solutions for assignment #1 assignment #2
8.4.2021 Consultation for the assignment #2. assignment #2
15.4.2021 927 5572 5683 OpenMP, assignment #3 Minimum and Matrix Mul assignment #3
22.4.2021 Consultation for the assignment #3, discussing possible solutions for assignment #2. assignment #3
29.4.2021 CUDA blur stencil, assignment #4 Instructions assignment #4
6.5.2021 927 5572 5683 Consultation for the assignment #4, discussing possible solutions for assignment #3. assignment #4
13.5.2021 Consultation for the assignment #4. assignment #4
20.5.2021 927 5572 5683 Apache Spark, assignment #5 assignment #5
27.5.2021 Consultation for the assignment #5, discussing possible solutions for assignment #4. assignment #5
3.6.2021 927 5572 5683 Discussing possible solutions for assignment#5.


Pages from the previous years.

close download