NPRG058: Advanced Programming in Parallel Environment

About

This is an informational web page for the Advanced Programming in Parallel Environment course (NPRG058), which is being taught at the Faculty of Mathematics and Physics, Charles University in Prague.

The lectures in 2026/27 are being held in S4 from 12:20 to 13:50 every Monday. The labs take place in S1 from 10:40 to 12:10. Please follow the schedule of lectures and labs for more details and irregularities.

Please, take your laptops to labs with you!

This is an advanced course. We assume you already have the necessary knowledge from the basic course NPRG042 Programming in parallel environment as well as advanced coding skills in C++. Also make sure you can work with GitLab and already have an account at our MFF GitLab.

There is also an option to get yourself involved in research directly connected to parallel and HPC programming in exchange for receiving a credit or replacing some of the course assignments with research-related assignments. It is also possible to pursue some of the research topics as master's thesis or even in a doctoral study program. Contact the teacher for more details.

Contact

The course is currently led by Martin Kruliš (krulis -at- d3s.mff.cuni.cz).

The primary communication channel is Mattermost! Invitations will be sent to all enrolled students via email at the beginning of the semester and the link is also attached in the note of the SIS scheduling event (visible to logged-in users). Do not forget to add yourself to the channel #nprg058-advpara, all important information will be shared there (and only there).

Hardware Info

For the purposes of this course, you will require access to our clusters, which are accessible via the following head node servers:

Both Parlab and Chimera use slurm for job control. Details can be found here https://gitlab.mff.cuni.cz/mff/hpc/clusters.

You may log in using your LDAP (CAS) credentials (with the name-based login, not by UKCO). Your home folder will be created on the first login (please note that the clusters have independent storage for home directories -- i.e., Parlab homes are not Chimera homes). The default SLURM account will grant you access to generic job queues that have the lowest priorities. You will be granted access to better queues (SLURM account nprg058s) before the first labs.

Once you log in for the first time, set up SSH key-based login (preferably using ed25519)! Parlab uses fail2ban, which adds your IP address to a blacklist if you try to log in with an incorrect password multiple times. This is quite unfortunate if you use shared addresses (as is the case with the Eduroam connection).

Do not use the Remote SSH VS Code extension! It consumes an awfully large amount of memory on the head nodes and even causes crashes when many students do this simultaneously.

For running short jobs on the Chimera cluster, use gpu-short-teach job queue (partition), which is dedicated for short jobs submitted by students during this course. Also do not forget to add --gpus=V100:1 (A100, L40, or H100) to the srun parameters to make sure that you can access the GPU (this is required even for tasks which do not directly require the GPU, due to some issues in srun itself). Moreover, always use the designated SLURM account by adding -A nprg058s parameter to make sure you can access the queues.