# High Performance Scientific Computing¶

## General information¶

**Instructor:**Mohammad Motamed**Disclaimer:**These notes on high performance scientific computing are being developed for the course Math/CS 471 at the University of New Mexico, Fall 2020. As a work in progress, these pages will be modified and supplemented over time. It is not intended to be a complete textbook on the subject, by any means. The goal is to get the student started with a few key concepts and then encourage further reading elsewhere.**License:**These notes are being made freely available and are released under the Creative Commons CC BY license. Interested students and researchers are welcome to use the materils and quote from them as long as they give appropriate attribution.**Description:**This is an introductory course in scientific computing, the third pillar of the scientific method. The course will attempt to expose you to a number of different concepts, ideas, and technologies, including introduction to hardware, software, and programming for large-scale scientific computing; overview of multicore, cluster, and supercomputer architectures; Fortran 90/95 programming language; Perl scripting language; parallel computing paradigms and languages; performance evaluation; stability of numerical methods; error analysis and convergence; ODE/PDE applications such as diffusion, heat transfer, and wave propagation; Monte Carlo simulations; and scientific software development.**Syllabus:**An inital version of the syllabus can be found here. Check it regularly for possible updates.**Required background:**- UNM Prerequisites: Llinear algebra (Math 314 or 321), and ODEs (Math 316), and programming skills.
- Required: Experience writing and debugging computer programs is required. Students should also be comfortable with undergraduate mathematics, particularly calculus and linear algebra.
- Recommended: Experience with mathematical/statistical computing, for example in Matlab or R, is preferred. Past exposure to numerical analysis and computation is a plus. Previous knowledge of Fortran or parallel computing languages is not assumed.

## Course topics¶

- Scientific Computing
- UNIX/LINUX operating system
- Reproducibility
- Version Control
- Bitbucket
- Git
- Perl
- Laboratory Sessions on Perl
- Newton’s Method
- Fortran basics
- Makefiles
- Finite difference approximations
- Ordinary differential equations
- Parallel computing
- Stampede2 supercomputer
- OpenMP
- Partial differential equations
- MPI