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 2025/26 are being held in S3 from 15:40 to 17:10 every Monday and the labs take place right afterwards (from 17:20 to 18:50) also in S3 (please follow the schedule of lectures and labs for more details).
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 decent coding skills in C++. Also make sure you can work with GitLab and you already have account at [https://gitlab.mff.cuni.cz/](our MFF GitLab).
There is also an option to get yourself involved in research directly connected to parallel 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). In the past, it was co-taught with Jakub Yaghob (jakub.yaghob -at- matfyz.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).
Hardware Info
For the purposes of this course, you will require access to the following head node servers:
parlab.ms.mff.cuni.cz- a frontend for CPU-only clustergpulab.ms.mff.cuni.cz- a frontend for GPU-accelerated cluster
All servers have SSH running on port 42222. Both parlab and gpulab 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. The default SLURM account will grant you access to generic job queues that have the lowest priorities. You will be assigned access to better queues (SLURM account nprg058s) before the first labs.
Once you log in for the first time, establish a login via SSH keys! Parlab uses fail2ban, which adds your IP address to a blacklist if you try to log in with a wrong password multiple times. This is quite unfortunate if you use shared addresses (like in the case of the Eduroam connection).
Do not use Remote SSH VSCode extension! It consumes awfully lot memory on the parlab head node and even causes crashes when many students do this simultaneously.
For running short jobs on the gpulab, use gpu-short-teach job queue (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). Moreover, always use the designated SLURM account by adding -A nprg058s parameter. Otherwise, you may not be able to access the queues.