# 401-3670-00L High-Performance Computing Lab for CSE

Semester | Spring Semester 2020 |

Lecturers | R. Käppeli, O. Schenk |

Periodicity | yearly recurring course |

Language of instruction | English |

Abstract | This HPC Lab for CSE will focus on the effective exploitation of state-of-the-art HPC systems with a special focus on Computational Science and Engineering. The content of the course is tailored for 3th year Bachelor students interested in both learning parallel programming models, scientific mathematical libraries, and having hands-on experience using HPC systems. |

Objective | A goal of the course is that students will learn principles and practices of basic numerical methods and HPC to enable large-scale scientific simulations. This goal will be achieved within six to eight mini-projects with a focus on HPC and CSE. |

Content | Despite the success of parallel programming languages standardization, there is growing evidence that future computational science applications will depend on a computational software stack. The computational software approach in this HPC Lab is based on building and using small, simple software parts with flexible, easy-to-use interfaces. These simple software parts are toolkits - libraries containing basic services commonly needed by applications - and they build the underlying software layer for computational science and engineering applications. This course will introduce some of the many ways in which mathematical HPC software and numerical algorithms in computer science and mathematics play a role in computational science. The students will learn within several mini-projects how these algorithms and software can be used to enable large-scale scientific applications. It covers topics such as single core optimization for the memory hierarchy, parallel large-scale graph partititoning, parallel mathematical linear solvers, large-scale nonlinear optimization, and parallel software for the mathematical solution of nonlinear partial differential equations. The course takes both an algorithmic and a computing approach, focusing on techniques that have a high level of applicability to engineering, computer science, and industrial mathematics. |

Lecture notes | Link to Moodle course: Link |

Prerequisites / Notice | Solid knowledge of the C programming language, parallel programming paradigms such as OpenMP and MPI, and numerical methods in scientific computing in the area of linear algebra, mathematical optimization, and partial differential equations. The students might continue to study these HPC techniques within the annual USI-CSCS summer school on "Effective High-Performance Computing & Data Analytics Summer School". The content of the course is tailored for intermediate graduate students interested in both learning parallel programming models, and having hands-on experience using HPC systems. Starting from an introductory explanation of the available systems at CSCS, the course will progress to more applied topics such as parallel programming on accelerators, scientific libraries, and deep learning software frameworks. The following topics will be covered: GPU architectures, GPU programming, Message passing programming model (MPI), Performance optimization and scientific libraries, interactive supercomputing, Python libraries, Introduction to Machine Learning, and GPU optimized framework. The Summer School will be held from July 13 to 24, 2020 at the Steger Center in Riva San Vitale, located in the Italian area of Switzerland. More information about the summer school is available here: Link |