In today’s computational landscape, high-performance computing (HPC) has become an essential tool for solving complex problems in fields such as science, engineering, medicine, and finance. At its core, HPC involves the efficient use of massive amounts of computing power to analyze large datasets, simulate complex phenomena, and optimize processes.
This course is designed to introduce you to the fundamentals of HPC with CPUs, focusing on the theoretical foundations, practical applications, and programming techniques required to harness the full potential of high-performance computing clusters. Throughout this module, we will delve into topics such as parallel processing, data structures, algorithm design, and system architecture, providing a comprehensive understanding of how to build, deploy, and optimize HPC applications.
Course Outline:
The course is divided into three main components:
- Lectures: In-depth exploration of the theoretical foundations of HPC, including parallel processing models (e.g., MPI, OpenMP, AVX), data structures and algorithms, and system architecture.
- Labs: Hands-on experience with HPC systems, including programming languages (e.g., C++), compilers, and runtime environments (e.g., MPI, OpenMP).
- Seminars: Opportunities for you to present and discuss research on HPC topics, including writing a short summary of a paper.
Learning Objectives:
By the end of this course, you will be able to:
- Understand the fundamental principles of parallel processing and data structures
- Design and implement efficient algorithms for HPC applications
- Build and deploy HPC applications using various programming models and tools
- Analyze and optimize the performance of HPC applications
Prerequisites: The first mathematics and programming lectures are compulsory, and a basic understanding of computer science concepts (e.g., algorithms, data structures) is recommended.
Course Schedule:
- Lecture in the summer term,
- Lab between summer and winter term,
- Seminar in the winter term.
Upcoming Courses:
The advent of Graphics Processing Units (GPUs) has revolutionized the field of computational computing, enabling scientists, engineers, and researchers to tackle complex problems in fields such as physics, engineering, computer vision, and machine learning. With their massive parallel processing capabilities, modern GPUs have become an essential tool for accelerated computing, offering significant performance gains over traditional Central Processing Units (CPUs).
This course is designed to introduce you to the fundamentals of Accelerated Computing with GPUs, focusing on the theoretical foundations, practical applications, and programming techniques required to harness the full potential of GPU acceleration. Throughout this course, we will delve into topics such as parallel processing models (e.g., CUDA), memory management, data structures, and algorithm design, providing a comprehensive understanding of how to build, deploy, and optimize GPU-accelerated applications.
Course Outline:
The course is divided into three main components:
- Lectures: In-depth exploration of the theoretical foundations of Accelerated Computing with GPUs, including parallel processing models, memory management, data structures, and algorithm design.
- Labs: Hands-on experience with GPU programming languages (e.g., CUDA), compilers, and tool chains (e.g., NVIDIA’s Nsight). You will work on projects that demonstrate the application of GPU acceleration in various domains.
- Seminars: Opportunities for you to present and discuss research on accelerated computing topics, including writing a short summary of a paper.
Learning Objectives:
By the end of this course, you will be able to:
- Understand the fundamental principles of parallel processing and memory management on GPUs
- Design and implement efficient algorithms for GPU-accelerated applications
- Build and deploy GPU-accelerated applications using CUDA
- Analyze and optimize the performance of GPU-accelerated applications
Prerequisites: The first mathematics and programming lectures are compulsory, and a basic understanding of computer science concepts (e.g., algorithms, data structures) is recommended.
Course Schedule:
- Lecture in the winter term,
- Lab between winter and summer term,
- Seminar in the summer term.
Upcoming Courses: