Tutorial High-Performance Computing for Cyber-Physical Systems
Lecturer (assistant) | |
---|---|
Number | 0000004182 |
Type | exercise |
Duration | 1 SWS |
Term | Sommersemester 2025 |
Language of instruction | English |
Position within curricula | See TUMonline |
Dates | See TUMonline |
Dates
- 07.05.2025 14:00-15:30 U150, Seminar
- 21.05.2025 14:00-15:30 U150, Seminar
- 04.06.2025 14:00-15:30 U150, Seminar
- 18.06.2025 14:00-15:30 U150, Seminar
- 02.07.2025 14:00-15:30 U150, Seminar
- 16.07.2025 14:00-15:30 U150, Seminar
Admission information
Objectives
Upon successful completion of the module, participants are able to apply their learned knowledge and methods for high-performance computing for cyber-physical systems using Python. This includes the understanding of theoretical concepts and theories of high-performance computing and the deployment of these methods. Students are able to design and implement solutions for a variety of cyber-physical systems by taking the given platform into account.
Additional practical experience is gained through the lab projects during which students form small groups requiring them to coordinate software development in a team thoughtfully. While working on the project, students are expected to design applications that utilize the abilities of cyber-physical systems.
Additional practical experience is gained through the lab projects during which students form small groups requiring them to coordinate software development in a team thoughtfully. While working on the project, students are expected to design applications that utilize the abilities of cyber-physical systems.
Description
In this module, students will learn advanced programming techniques in Python to develop efficient and scalable programs for cyber-physical systems (CPS). Cyber-physical systems are the computational backbone of many application domains, such as transportation networks, energy systems, and manufacturing processes. Due to the complex environments in which they operate, efficient use of the computational resources of cyber-physical systems is crucial and requires advanced programming skills.
We will cover both the theoretical and practical aspects of high-performance computing (HPC) to meet the performance requirements of modern cyber-physical systems. Python is a popular and powerful language that is well-suited for introducing HPC and has a large number of libraries and frameworks for HPC, such as NumPy and JAX. We will focus on the use of parallel computing, which allows Python programs to take advantage of the multiple cores and processors available on modern computers. Topics covered include concepts such as multiprocessing, shared memory, multi-threading for I/O, and efficient database access.
Starting from a discussion of basic Python programming techniques to speed up Python code, students will be introduced to object-orientated paradigms required for the development of performant code and efficient access to large databases. Subsequently, students will learn how to use multiprocessing in Python to create and manage multiple processes in their programs. They will learn how to use different synchronization and communication mechanisms to coordinate the work of these processes. Part of these methods will be taught on a real multi-core embedded board. Eventually, the course will introduce recent trend in high-performance computing that allows for the efficient development of parallelized code on accelerators. A final project concludes the course which gives the students the opportunity to use the learned techniques and develop their own high-performance computing program.
By the end of the module, students will be able to develop efficient and scalable Python programs that can take advantage of multiprocessing to speed up their computations. They will have a solid understanding of the principles and practices of using Python for high-performance computing for cyber-physical systems and will be able to apply these skills to their own projects.
We will cover both the theoretical and practical aspects of high-performance computing (HPC) to meet the performance requirements of modern cyber-physical systems. Python is a popular and powerful language that is well-suited for introducing HPC and has a large number of libraries and frameworks for HPC, such as NumPy and JAX. We will focus on the use of parallel computing, which allows Python programs to take advantage of the multiple cores and processors available on modern computers. Topics covered include concepts such as multiprocessing, shared memory, multi-threading for I/O, and efficient database access.
Starting from a discussion of basic Python programming techniques to speed up Python code, students will be introduced to object-orientated paradigms required for the development of performant code and efficient access to large databases. Subsequently, students will learn how to use multiprocessing in Python to create and manage multiple processes in their programs. They will learn how to use different synchronization and communication mechanisms to coordinate the work of these processes. Part of these methods will be taught on a real multi-core embedded board. Eventually, the course will introduce recent trend in high-performance computing that allows for the efficient development of parallelized code on accelerators. A final project concludes the course which gives the students the opportunity to use the learned techniques and develop their own high-performance computing program.
By the end of the module, students will be able to develop efficient and scalable Python programs that can take advantage of multiprocessing to speed up their computations. They will have a solid understanding of the principles and practices of using Python for high-performance computing for cyber-physical systems and will be able to apply these skills to their own projects.
Prerequisites
It is expected that students have a good understanding of computer science and engineering. Previous experience with Python is helpful but not mandatory; however, proficient use of another programming language is recommended. A limited introduction to Python basics will be given.
Teaching and learning methods
The module consists of a class lecture and a lab-based tutorial. The lecture explains the basic concepts and methods of software design for cyber-physical systems using presentations and limited demonstration of the discussed programming methods. In the tutorial, which is designed as a project work with assignments, the focus is on promoting active learning. Students directly apply the methods and concepts covered in the lecture. Thus they learn to design and analyze high-performance software for cyber-physical applications. They then discuss their results with a supervisor who can give direct feedback during the tutorials and will provide support during the work on the project assignments.
Through a combination of lectures, discussions, and hands-on activities, students will learn how to design, implement, and evaluate high-performance computing solutions for various cyber-physical systems.
Workload:
- Total hours: 90
- Contact hours: 45
- Self-study hours: 45
Through a combination of lectures, discussions, and hands-on activities, students will learn how to design, implement, and evaluate high-performance computing solutions for various cyber-physical systems.
Workload:
- Total hours: 90
- Contact hours: 45
- Self-study hours: 45
Examination
The module examination takes the form of two partial module examinations: This includes a written final exam (weighting 100%) and a tutorial (project work, passed/not passed). During the tutorial, students work on programming tasks that demonstrate that they can design and analyze high-performance computing programs that use advanced Python programming techniques and are able to develop parallel computing programs. A passing grade in the tutorial is required for participation in the written final exam. This type of verification is necessary because only this practical application of methods and concepts of high-performance computing enables the achievement of the intended learning result. In the final exam, students demonstrate their understanding of the concepts of high-performance computing for cyber-physical systems.