This is a public repository with some of the course materials created for Master in High Performace computing.
All questions should be addressed to info@mhpc.it
The course is designed as an introductory module that every scientist working in HPC should master. It introduces Unix-like operating systems, and shows how to set up a scientific programming environment in such systems. The topics include bash scripting, introduction to best practices in code maintenance (version control, documentation), debugging techniques, build systems and basic rules of cluster usage. The course also incorporates the learning of the C language and uses it to practice the topics mentioned above.
This course mainly focuses on modern C++ and is designed to teach the latest features and best practices of the language up to C++17. The goal of the course is to present the topics relevant to writing scientific simulation codes using the advanced features of the language and to see the applications of the techniques learned during the introductory course.
HPC programmers often have to code in Fortran due to huge existing codebases in that language. As such, it is important for many scientists to master Fortran even if it is now not an evident choice for a modern programmer. The course is designed in such a way that students can learn Fortran while also studying the fundamental data structures and their impact on performance and memory consumption. The classical algorithm for sorting and searching data are considered. The course also emphasizes best practices in code development such as integrating a build system and providing testing for the completed examples.