ENCCS - EuroCC National Competence Centre Sweden logo Learn More

ENCCS - Lesson Library

Carefully curated and open-source lesson material from ENCCS and external partners that guide you into the world of supercomputing.

Our experts at ENCCS create custom lesson material for all our courses, as well as external organisations that we have close collaboration with. The lessons are regularly improved and kept up-to-date.

Click on the lesson materials from our workshops below which are also fitting for self learning.

AI as a tool for change

AI as a tool for change

AI
difficulty: beginner maturity: stable

AMD ROCm ecosystem

This training material is created by AMD in collaboration with ENCCS. It covers how to develop and port applications to run on AMD GPU and CPU hardware on top AMD-powered supercomputers. You will learn about the ROCm software development languages, libraries, and tools, as well as getting a developer’s view of the hardware that powers the system. The material focuses mostly on how to program applications to run on the GPU.

GPU Programming
difficulty: intermediate maturity: stable

Best practices and tools for software development

Lessons developed by CodeRefinery covering topics like versioning, git, test-driven development and more.

Programming Tools
difficulty: intermediate maturity: stable

Best practices in HPC training

Best practices in HPC training

HPC Instructor Training
difficulty: intermediate maturity: stable

CMake hands-on workshop

Learn how to use CMake as a build tool for your projects through a hands-on workshop!

Programming Tools
difficulty: intermediate maturity: stable

ColonyOS tutorial

What is ColonyOS and how do I use it?

Basics of HPC
difficulty: intermediate maturity: stable

Creative AI

Creative AI

AI
difficulty: beginner maturity: stable

EMTO Best practices

This lesson will teach you how to effectively use EMTO for material science!

Electronic Structure Calculations
difficulty: intermediate maturity: stable

Efficient materials modelling on HPC with Quantum ESPRESSO, Yambo and BigDFT

This training material gives a broad overview of important fundamental concepts for molecular and materials modelling on HPC, with a focus on three of the most modern codes for electronic structure calculations (QUANTUM ESPRESSO, Yambo and BigDFT).

Electronic Structure Calculations
difficulty: intermediate maturity: stable

Extra Unix Shell Material

Extra Unix Shell Material

Basics of HPC
difficulty: intermediate maturity: stable

GPU bootcamp

NVIDIA-developed materials on GPU programming with different paradigms

GPU Programming
difficulty: beginner maturity: stable

GPU: Why, When and How?

Learn how the architecture of GPUs differs from that of CPUs and what tools are available for GPU programming, both in high- and low-level languages, and which of them are portable across different vendors.

GPU Programming
difficulty: beginner maturity: stable

GROMACS GPU performance

Learn how to extract the maximum performance from your GROMACS simulations!

Molecular Dynamics
difficulty: advanced maturity: stable

Graph Neural Networks and Transformers

Learn how graph neural networks became some of the most popular architectures and how they can be used to sovle complex problems!

AI
difficulty: intermediate maturity: stable

Heterogeneous programming with SYCL

Learn how to use SYCL in C++ to program different accelerators with a single source approach

GPU Programming
difficulty: intermediate maturity: stable

High Performance Data Analytics in Python

This lesson provides a broad overview of methods to work with large datasets using tools and libraries from the Python ecosystem. Since this field is fairly extensive, we will try to expose just enough details on each topic for you to get a good idea of the picture and an understanding of what combination of tools and libraries will work well for your particular use case.

High Level Language Programming
difficulty: beginner maturity: alpha

Hyper Parameter Search using Optuna

Designing Neural Network learning algorithm requires setting many hyper parameters. In this 2 hour workshop we will see how we can use the Optuna python package to automate the labourious task of finding good hyper parameters.

High Level Language Programming
difficulty: beginner maturity: stable

Intermediate MPI

This training material targets programmers who already have experience with basic MPI and are ready to take the next step to more advanced usage. Topics covered include communicators and groups, derived datatypes, one-sided communication, collective communication and hybrid MPI-threading approaches.

CPU Programming
difficulty: intermediate maturity: stable

Intermediate OpenACC/CUDA

Intermediate concepts in OpenACC and CUDA.

GPU Programming
difficulty: intermediate maturity: stable

Intro to CUDA & OpenACC

This lesson is an introduction to GPU programming using the directive-based OpenACC paradigm and language-extension-based CUDA. The course consists of lectures, type-along and hands-on exercises. Topics covered include the architecture of the GPU accelerators, basic usage of OpenACC and CUDA, and how to control data movement between CPUs and GPUs. Basic optimization of the code will also be covered.

GPU Programming
difficulty: beginner maturity: stable

Introduction to HPC Programming

This workshop is an introduction to using high-performance computing systems effectively.

Basics of HPC
difficulty: beginner maturity: stable

Introduction to Julia

This lesson covers the basics of Julia: its syntax, multiple-dispatch paradigm, package development and best practices. It spans the necessary foundational skills required to follow the two other ENCCS lessons on Julia.

High Level Language Programming
difficulty: advanced maturity: stable

Introduction to MPI

As processors develop, it’s getting harder to increase their clock speed. Instead, new processors tend to have more processing units. To take advantage of the increased resources, programs need to be written to run in parallel. MPI is one of the most common frameworks to solve this problem.

CPU Programming
difficulty: beginner maturity: stable

Introduction to Quantum Computing and hybrid HPC-QC systems

This lesson will give you the fundamental building blocks to understand quantum computing.

HPC Quantum Computing
difficulty: intermediate maturity: stable

Introduction to containers

This material aims at researchers and developers who have experience working with AI and wish to train their applications on supercomputers.

Basics of HPC
difficulty: beginner maturity: stable

Introduction to the Unix shell

Use of the shell is fundamental to a wide range of advanced computing tasks, including high-performance computing. These lessons will introduce you to this powerful tool.

Basics of HPC
difficulty: beginner maturity: stable

Julia for High-Performance Computing

This lesson goes through various approaches for writing performant and parallel code, including how to write fast serial code, how to write multithreaded and distributed code, how to run Julia on an HPC system, and how to port Julia code to GPUs.

High Level Language Programming GPU Programming CPU Programming
difficulty: advanced maturity: stable

Julia for High-Performance Data Analytics

Julia has a rich ecosystem of libraries aimed towards scientific computing and a powerful builtin package manager to install and manage their dependencies. Thanks to a rapidly growing ecosystem of packages for data science and machine learning, Julia is quickly gaining ground in both academic and industrial domains which deal with large datasets.

High Level Language Programming AI
difficulty: advanced maturity: stable

NEK5000

Recordings from a NEK5000 workshop held in collaboration with Excellerat.

Computational Fluid Dynamics
difficulty: intermediate maturity: stable

OpenFOAM

This lesson material covers the basics of OpenFOAM, a widely used open-source CFD package.

Computational Fluid Dynamics
difficulty: intermediate maturity: alpha

OpenMP for GPU offloading

This course is intended for newcomers to OpenMP GPU offloading. By the end of it, students will feel comfortable with the basic process of introducing OpenMP offloading constructs to a simple code base.

Gpu Programming
difficulty: beginner maturity: stable

Performance Programming

In this lesson, you will learn about efficient coding as well as how to measure and model programs performance using a set of standard tools. We will address these questions in a language and architecture agnostic way as far as possible, with code examples in C (and optionally Fortran, in some cases). Our main architectural example will be the x86 and its implementations.

CPU Programming
difficulty: intermediate maturity: stable

Plotting and Programming in Python

This lesson is an introduction to programming in Python 3 for people with little or no previous programming experience.

High Level Language Programming
difficulty: intermediate maturity: stable

Python for Scientific Computing

This course discusses how Python can be utilized in scientific computing. The course starts by introducing some of the main Python tools for computing: Jupyter for interactive analysis, NumPy and SciPy for numerical analysis, Matplotlib for visualization, and so on.

High Level Language Programming
difficulty: beginner maturity: stable

Python for high performance computing

This course will teach you how to use Python for high performance computing tasks, including parallel programming and accelerator offloading.

High Level Language Programming
difficulty: intermediate maturity: stable

Quantum Autumn School 2023

Quantum Computing
difficulty: intermediate maturity: stable

Quantum Autumn School 2024

Quantum Computing
difficulty: intermediate maturity: stable

Space Plasma Simulations with Vlasiator on LUMI Supercomputer

With this lesson material, you will learn how to use Vlasiator to simulate space plasma.

HPC Plasma Physics
difficulty: intermediate maturity: stable

Supercomputing for AI

High performance computing (HPC) resources can be used to accelerate AI workflows. The EuroHPC Joint Undertaking (JU) offers free access to such resources to SMEs as well as larger companies. This lessons will introduce you to these workflows.

AI Basics of HPC
difficulty: beginner maturity: stable

Targeting chemical accuracy with quantum Monte Carlo on LUMI

Targeting chemical accuracy with quantum Monte Carlo on LUMI

Computational Fluid Dynamics
difficulty: beginner maturity: stable

Upscaling AI workflows

This workshop teaches us how to scale an AI-powered application in large clusters, i.e., supercomputers.

High Level Language Programming
difficulty: beginner maturity: stable

VASP Best practices

This lesson will show you how to run VASP efficiently on supercomputers.

Electronic Structure Calculations
difficulty: intermediate maturity: stable

VeloxChem: quantum chemistry from laptop to HPC

GROMACS Umbrella Sampling

Electronic Structure Calculations
difficulty: advanced maturity: stable

VeloxChem: quantum chemistry towards pre-exascale and beyond

Material on VeloxChem in High Performance Computing settings

Electronic Structure Calculations
difficulty: advanced maturity: stable