AI as a tool for change
AI as a tool for change
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
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.
Lessons developed by CodeRefinery covering topics like versioning, git, test-driven development and more.
Best practices in HPC training
Learn how to use CMake as a build tool for your projects through a hands-on workshop!
What is ColonyOS and how do I use it?
Creative AI
This lesson will teach you how to effectively use EMTO for material science!
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).
Extra Unix Shell Material
NVIDIA-developed materials on GPU programming with different paradigms
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.
Learn how to extract the maximum performance from your GROMACS simulations!
Learn how graph neural networks became some of the most popular architectures and how they can be used to sovle complex problems!
Learn how to use SYCL in C++ to program different accelerators with a single source approach
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.
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.
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.
Intermediate concepts in OpenACC and CUDA.
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.
This workshop is an introduction to using high-performance computing systems effectively.
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.
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.
This lesson will give you the fundamental building blocks to understand quantum computing.
This material aims at researchers and developers who have experience working with AI and wish to train their applications on supercomputers.
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.
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.
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.
Recordings from a NEK5000 workshop held in collaboration with Excellerat.
This lesson material covers the basics of OpenFOAM, a widely used open-source CFD package.
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.
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.
This lesson is an introduction to programming in Python 3 for people with little or no previous programming experience.
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.
This course will teach you how to use Python for high performance computing tasks, including parallel programming and accelerator offloading.
With this lesson material, you will learn how to use Vlasiator to simulate space plasma.
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.
Targeting chemical accuracy with quantum Monte Carlo on LUMI
This workshop teaches us how to scale an AI-powered application in large clusters, i.e., supercomputers.
This lesson will show you how to run VASP efficiently on supercomputers.
GROMACS Umbrella Sampling
Material on VeloxChem in High Performance Computing settings