Enroll for Fall – Math 671: Scientific Computing – Algorithms, Computer Architecture, and Software

As computing hardware has improved remarkably over the past two decades, the need to understand scientific algorithms, computer architecture, and scientific software in a unified way has increased. The purpose of this class is to teach each of these elements but most of all to emphasize the interaction between them.

This class will be offered in Fall 2012, on Tuesdays and Thursdays, 1:00-2:30 pm. The instructor is Divakar Viswanath (divakar@umich.edu).

The class will be a mixture of basic mathematical ideas and issues that arise from the interface of science with high performance computing. It will consist of segments devoted first to compilation units, linking and naming conventions, use of makefiles, mixed language programming (Fortran/C/C++), and the use of scientific libraries (BLAS, LAPACK, MKL, FFTW), and then to computer architecture including basic 64 bit x86 assembly programming, x86 register architecture, compiler optimizations, memory hierarchy (with an emphasis on shared memory programming using OpenMP), networks (with an emphasis on MPI), and GPU architecture.

Overall the goal of this class is to introduce scientific computing with an orientation towards high performance computing and the creation of substantial scientific codes. Our aim is not to exhaustively detail the syntax of OpenMP and MPI, but to understand what happens beneath the hood and what sort of performance bottlenecks to expect, and to do so in the context of scientific problems. And a lot happens beneath the hood: a finite difference code, which is written carefully but without expert knowledge, may not even approach 2% of the peak performance or an MPI user unaware of the nature of network architecture may use blocking calls and lose 50% of the network bandwidth right away. Knowledge of register architecture is indispensable to GPU programming.

The prerequisites include knowledge of numerical methods at the level of Math 471 or higher, and some exposure to Fortran or C or C++. Background in mathematics or computer science beyond these prerequisites is not needed and will not be assumed. The grade for the class will be based on six homework assignments. There will be no exams nor is there a textbook for the class. Notes will be handed out for all the lectures. Feel free to email for more details.