Training courses and slides

Courses offered by SCITAS

Intro courses

These courses are organized once a year, before the semester start. Each of the 4 courses has a duration of half a day. These courses can be organized on demand for a group of 4 or more people and can be adapted to the audience. If you wish to have one or more introductory courses for your lab or class, please contact us.

Introduction to Linux

The goal of this course is to give the basis on the usage of a Linux system in order for the user to be able to use the general purpose clusters, and to feel at ease like a penguin in cold water.


  •  Overview of Linux
  •  Connecting to a remote machine (from Linux, Windows or Mac)
  •  Using a Linux/Unix system with only the command line
  •  Basics on file organization
  •  Common shell commands
  •  Writing a shell script


Participants are asked to bring their laptop in order for the training to be personalized to their specific environment.

Using the general purpose clusters


This course is for new users of the central HPC resources and those who want to use the sequential job HPC “Castor” for Matlab/Mathematica.

  • introduction to the SLURM batch system
  • disk space management
  • how to use modules
  • how to create job-scripts
  • job submission excercises
  • querying jobs
  • debugging jobs
  • tools & tips


A minimal knowledge of Linux/Unix environments is required.

Data management on HPC platforms: transferring data and handling code with Git

Simulation data are very varied in size and in nature and for each data type there is an optimal transfer and storage method.

  • source files
  • input files
  • output
  • big data

In this workshop the students will learn how to handle their data when using remote machines for computations.


A minimal knowledge of Linux/Unix environments is required.

Compiling code and using MPI on the central HPC facilities


You’ve been given some code and you wish to run on out platform.

  • Synopsis
  • Choosing a compiler
  • Choosing an MPI version
  • Things you never wanted to know about MPI
  • Using MPI with the batch system
  • Practical exercises


The course “Using the general purpose clusters” should have been followed prior to this course.

Master course

The MATH-454 Parallel and High Performance Computing course is offered in the spring semester and covers the following topics:

  • The essentials
    • Using the facilities
    • Understanding HPC concepts
  • Writing efficient code
    • Profiling
    • Optimizing
  • Parallelization methods
    • OpenMP
    • MPI
    • CUDA
  • Advanced topics
    • Hybrid computing
    • Proposal writing

It can be followed by master students and PhD students. The exam consists in an individual project. The topic is to be chosen among the ones suggested by the instructors. However, PhD students can suggest their own, as long as the project can be included in their PhD work.

Doctoral School course

The PHYS-743 Parallel programming course is given as a 1-week intensive course followed by a 1-week individual project. The contents of the course are:

  • Optimization of a sequential code
  • Parallelization on a shared memory node
  • Parallelization on a distributed memory cluster: basic concepts
  • Parallelization on a distributed memory cluster: advanced concepts
  • Hybrid programming (OpenMP + MPI)

Specific courses

Using the platform

This course is organized on-demand

Introduction to profiling and software optimization

1 day course.

In this course you will learn how to profile your code in order to measure the performance. Several tools will be presented. The second part of this workshop will show software optimization techniques.


Introduction to profiling and software optimization

  • Introduction to profiling and software optimization
  • Score-P
  • Tau
  • Scalasca
  • Software optimization tecniques
  • Test cases


The course “Introduction to the central HPC facilities” should have been followed prior to this course or users should have equivalent experience.

MPI, an introduction to parallel programming

Course duration

3 days


The course is organized as a three-day, intensive, full-time course. It puts emphasis on practical implementation and includes examples and exercises performed on a dedicated PC Linux cluster. After an introduction to various parallelization models, the course focuses on the Message Passing Interface (MPI) standard and the shared memory programming paradigm OpenMP. After the 3-days course, the attendees will be able to understand, modify, or program from scratch applications in most of the scientific and engineering fields using the functions of the MPI-1 standard and the OpenMP 3.0 specifications. The topics covered include

  • Parallelization using MPI (2 days)
    • Overview of parallel programming models
    • Point-to-point communications
    • Collective communications
  • Parallelization using OpenMP (1 day):
    • Overview of the OpenMP 3.0 standard
    • Fine grain / coarse grain approaches
    • Control, data and synchronization constructs, scheduling
    • Traps with OpenMP
    • “OpenMP-ization” methodolgy (good programing practices)


No prior experience of parallel programming is required but a working knowledge of either Fortran or C/C++ as well as a basic knowledge of Unix/Linux is mandatory.

MPI, advanced parallel programming


2 days


The course is organized as a two-day, intensive, full-time course. It is mainly for participants who have finished the introductory course An Introduction to Parallel Programming or equivalent working experience of MPI programming in Fortran and C/C++.

Programmers having already a solid experience on MPI are indeed welcome.

Goal of the course

To tackle advanced MPI functionalities, including MPI-OpenMP hybrid programming.

Computing on GPUs


1 day


GPUs are becoming more and more popular and nowadays they are widely available. During this course you will receive an introduction about numerical methods on GPU.


  • GPU architecture
  • Parallel algorithms
  • Optimizing GPU programs
  • Parallel computing patterns