Annotation
The main goal of the course is to introduce how to program GPU-accelerated applications using CUDA programming.
We will describe the main principles of heterogeneous or accelerated computing (with a short hardware description of the GPU-accelerated supercomputers) needed to properly understand how to design CUDA code.
The course is designed for beginners in GPU programming using CUDA. It will explain how the parallelisation is done with basic examples, how data transfers are managed between CPU and GPU memory, what types of memory there are in GPU and how to use them, how the parallel threads are executed, and finally, we will explain several key parallel computing patterns in CUDA.
As the course will use the Karolina supercomputer, we will also demonstrate how to write single and multi-GPU applications.
Level
intermediate in parallel programming, beginner in CUDA
Language
English
Course format
The hands-on parts will only be available for on-site participants.
The tutorial/lecture parts will be available to attendees who can participate online.
Prerequisites
Participants should be familiar with programming in either C/C++ or Fortran. Furthermore, they should be able to work on the Linux command line. Basic experience with the development of scientific code is preferable. Basic knowledge of parallel programming is an advantage.
Tutors
Lubomír Říha, Ph.D., is the Head of the Infrastructure Research Lab at IT4Innovations National Supercomputing Center. Previously, he was a senior researcher in the Parallel Algorithms Research Lab at IT4Innovations and a research scientist in the High-Performance Computing Lab at George Washington University, ECE Department. He received his Ph.D. and M.Sc. degrees in Electrical Engineering from the Czech Technical University in Prague, the Czech Republic, in 2011, and his Ph.D. degree in Computer Science from Bowie State University, USA. Currently, he is a local principal investigator of two EuroHPC projects: SCALABLE and EUPEX (designs a prototype of the European Exascale machine). Previously, he was a local principal investigator of the H2020 Center of Excellence POP2 and H2020-FET HPC READEX projects and investigator of the FP7 EXA2CT project and the Intel Parallel Computing Center. He is also a co-founding developer of the ESPRESO finite element library, which includes a parallel sparse solver designed for supercomputers with tens or hundreds of thousands of cores, with support for GPU, Intel Xeon Phi, and other modern accelerators. His research interests are optimising HPC applications, energy-efficient computing, accelerating scientific and engineering applications using GPU and many-core accelerators, developing scalable linear solvers, parallel and distributed rendering on new HPC architectures, and signal and image processing.
Milan Jaroš, Ph.D., is a researcher at IT4Innovations National Supercomputing Center. He has 10 years of experience in professional programming (C++, C#, Java, etc.). He has developed several commercial software (including mobile applications). In recent years, he has focused on research in the area of HPC computing (including support of GPU and Intel Xeon Phi coprocessor), medical image processing and scientific data visualisation (virtual reality, rendering, CFD postprocessing, etc.). He participates in developing plugins for various software (Blender, COVISE/OpenCOVER, Unity, Monado, etc.).
Jakub Homola is a PhD. student of Computational Science and a Research Assistant at IT4Innovations, VSB-TUO. He graduated in Computational and Applied Mathematics at VSB - Technical University of Ostrava, specializing in Computational Methods and HPC. His research and professional interests are FETI methods and GPU programming in CUDA, HIP and SYCL. He is partially involved in the EUPEX project, where he is working with the ESPRESO library to optimize it for future supercomputers with European processors.
Acknowledgements
This work was supported by the EPICURE project under grant agreement No 101139786. The project is supported by the European High-Performance Computing Joint Undertaking and its members (including top-up funding by the Ministry of Education, Youth and Sports of the Czech Republic ID: MC2402).
This course was supported by the Ministry of Education, Youth and Sports of the Czech Republic through the e-INFRA CZ (ID:90254).