151-0116-00L  High Performance Computing for Science and Engineering (HPCSE) for CSE

SemesterSpring Semester 2020
LecturersP. Koumoutsakos, S. M. Martin
Periodicityyearly recurring course
Language of instructionEnglish

AbstractThis course focuses on programming methods and tools for parallel computing on multi and many-core architectures. Emphasis will be placed on practical and computational aspects of Bayesian Uncertainty Quantification and Machine Learning including the implementation of these algorithms on HPC architectures.
ObjectiveThe course will teach
- programming models and tools for multi and many-core architectures
- fundamental concepts of Uncertainty Quantification and Propagation (UQ+P) for computational models of systems in Engineering and Life Sciences.
- fundamentals of Deep Learning
ContentHigh Performance Computing:
- Advanced topics in shared-memory programming
- Advanced topics in MPI
- GPU architectures and CUDA programming

Uncertainty Quantification:
- Uncertainty quantification under parametric and non-parametric modeling uncertainty
- Bayesian inference with model class assessment
- Markov Chain Monte Carlo simulation

Machine Learning
- Deep Neural Networks and Stochastic Gradient Descent
- Deep Neural Networks for Data Compression (Autoencoders)
- Recurrent Neural Networks
Lecture noteshttps://www.cse-lab.ethz.ch/teaching/hpcse-ii_fs20/
Class notes, handouts
Literature- Class notes
- Introduction to High Performance Computing for Scientists and Engineers, G. Hager and G. Wellein
- CUDA by example, J. Sanders and E. Kandrot
- Data Analysis: A Bayesian Tutorial, D. Sivia and J. Skilling
- An introduction to Bayesian Analysis - Theory and Methods, J. Gosh, N. Delampady and S. Tapas
- Bayesian Data Analysis, A. Gelman, J. Carlin, H. Stern, D. Dunson, A. Vehtari and D. Rubin
- Machine Learning: A Bayesian and Optimization Perspective, S. Theodorides
Prerequisites / NoticeAttendance of HPCSE I