Skip to content

PDC Summer School

This page contains useful information for the PDC summer school.

Account and login

Please see instructions for acquiring a PDC account and logging in to PDC clusters in the General instructions for PDC courses.

Virtual machine

All participants will receive a USB memory stick with an Ubuntu virtual machine (VM) image which can be used to log in to PDC. To use the VM, you will need to install VirtualBox. The image can also be downloaded here.

Note that you can also use the VM for the Software Engineering and Singularity lessons, so we recommend all participants to install VirtualBox.

Compiling code

Dardel have different compiler environments which you will use to compile code for the lab exercises. Detailed information can be found at https://www.pdc.kth.se/support/documents/software_development/development_intro.html, but a summary is found below.

Dardel uses compiler wrappers so that source code is compiled with the compiler environment currently loaded. By default the PrgEnv-cray module is loaded when you log in, but you can change to the AMD compiler suite by

$ module swap PrgEnv-cray PrgEnv-aocc

and to GNU compilers with

$ module swap PrgEnv-cray PrgEnv-gnu

Regardless of which compiler suite is loaded, you should use the same compiler commands ftn, cc and CC to compile.

Compiling serial and MPI code (note that no MPI flags are needed):

# Fortran
ftn [flags] source.f90
# C
cc [flags] source.c
# C++
CC [flags] source.cpp

Compiling OpenMP code:

ftn -homp source.f90
cc -fopenmp source.c
CC -fopenmp source.cpp

Running jobs

After logging in you are on the login node of the cluster. The login node is a shared resource and should not be used for running parallel jobs. Instead, the SLURM scheduling system should be used to either run interactive jobs or submit batch jobs to the queue (see How to Run Jobs). You can however use the login node to edit files and compile code.

To request compute resources interactively or via a batch job, you need to specify an allocation ID, a reservation ID, how much time your job needs and how many nodes it should use. To request an interactive node for 1 hour, run the command

$ salloc -A edu19.summer --reservation <reservation-name> -N 1 -t 1:0:0

When the interactive compute node is allocated to you, a new shell session is started (in the same terminal). To run a parallel job on the interactive node, type:

$ srun -n 32 ./my_executable

To run a batch job, you first need to prepare a submit script. In the simplest case, it can look like this:

#! bin bash  l
#SBATCH  A edu19 summer
#SBATCH   reservation= reservation name 
#SBATCH  P shared
#SBATCH  J name of my job
#SBATCH  t 1 00 00
#SBATCH  N 2
srun -n 64 ./my_executable > my_output_file 2>&1

To submit the job to the scheduler, type

$ sbatch my_submit_script.bash

You can then monitor the job using

$ squeue -u <your-username>

and if you need to cancel the job, find its job-ID using the squeue command and type

$ scancel <job-ID>

File transfer

Files are transferred with scp from PDC to your local machine as follows:

$ scp <username>@dardel.pdc.kth.se:<filename> .

or the other way by:

$ scp <filename> <username>@dardel.pdc.kth.se:~/

Here is more information on Using scp/rsync

Lab exercises

Quick Reference Guide

Check out our quick reference guide to using PDC resources.

Introduction to PDC

Lecture slides can be found here.

Software engineering

All course material, including exercises and installation/preparation steps to be done before the summer school starts, can be found on this page.

Singularity

Lecture slides can be found here.

OpenMP

All exercises can be found in this GitHub repository. You can either clone it to your computer or navigate the exercises on GitHub.

CUDA

All exercises can be found in this GitHub repository. You can either clone it to your computer or navigate the exercises on GitHub.

Instructions for the two sets of exercises:

  • Lab 1 in C and guidelines for solving the lab in Fortran.
  • Lab 2 in C (and use the same guidelines as above for solving it in Fortran).

MPI

All exercises can be found in this GitHub repository. You can either clone it to your computer or navigate the exercises on GitHub.

Performance Engineering

TBD