
High Performance Computing
Summary
This specialized course covers HPC fundamentals, performance optimization, and parallel computing for scientific and engineering applications. The curriculum is fully customizable – topics can be added, omitted, or emphasized based on your group’s specific needs and experience level.
From cluster basics and job scheduling to advanced parallelization techniques, we explore different approaches to improve computational performance across different programming languages and environments, with all content tailored to your specific domain and applications.
Target groups
Ideal for programmers, researchers, engineers, and developers with programming experience who want to:
- Learn HPC cluster usage and parallel computing from the ground up
- Accelerate computationally intensive applications and resolve existing performance bottlenecks
- Optimize existing parallel codes for better scalability and efficiency
- Develop new high-performance solutions for complex computational problems
Flexible Course structure
Content and programming languages (Python, C, or mixed approaches) are customized based on your team’s specific needs and applications. The course combines theoretical foundations with hands-on optimization of real-world code, including participants’ own projects when applicable.
The minimum number of live tutorials is 4 to cover all relevant topics, but the final number will depend on your team’s needs. The tutorials are 90-120min each. Participants should plan to invest at least 30 hours in total.
Content
- HPC environment fundamentals – cluster architecture, job schedulers (SLURM), batch systems
- Performance profiling and bottleneck identification
- Single-core optimization
- Parallel programming in C with MPI, OpenMP, CUDA
- Parallel programming in Python with Dask, CuPy, Numba or PyCUDA
- Memory optimization and efficient data structures
- Scalable computing strategies for clusters and HPC systems
- Hardware considerations and hybrid CPU/GPU parallelization