Course Description
High Performance Computing (HPC) is a rapidly growing field that is transforming the way we approach complex computational problems across diverse industries and scientific disciplines. This course provides a comprehensive overview of the fundamental concepts, architectures, and programming techniques that underpin modern HPC systems.
The course begins by exploring the need for HPC, its societal and economic impact, and the key differences between HPC and traditional parallel computing. Students will learn how to measure and optimize software performance, as well as understand the critical hardware-software interface in HPC environments.
Through hands-on exercises and case studies, participants will gain practical experience in programming various HPC architectures, including multinode systems using MPI, multicore systems using OpenMP, and GPU-accelerated systems programmed in CUDA or OpenCL.
This course is designed for a wide range of audiences, from computer science and engineering students to hardware/software developers, high-tech managers, and researchers in computational and data-driven science and engineering. Whether you're new to HPC or looking to deepen your expertise, this course will provide you with the knowledge and skills to harness the power of high-performance computing.
What you'll learn
After completing this course you will be able to:
• Understand what HPC is and its applications and impact.
• Identify the difference between HPC and parallel systems.
• Measure and optimize software program performance.
• Apply the interfacing of the HW and SW in programming in general.
• Program multinode parallel systems in MPI.
• Program multicore parallel systems in OpenMP.
• Program GPU systems in CUDA/OpenCL.
Requirements
Complete course:
C Programming From Basics to Mastery
Ubuntu Linux Essentials