Course Program

Supercomputing: From Multi- to Many-core Platforms

This second-week course will address the general question of implementation of the underlying models and numerical methods, on modern supercomputing hardware, and within versatile software environments, respectively. As the participants will likely have different backgrounds and previous experience in parallel programming, and also different interests, we intent to split up this course into a course that discusses implementation of models within a concrete simulation environment (GeoClaw), and a course that will give an introduction to programming on manycore platforms (as in GPU computing, based on CUDA).

GeoClaw

In the GeoClaw course, students will learn to use this software package as a tool for exploring both the numerical methods (changing grid resolution or the method used, for example), and also the physical fluid dynamics of tsunamis. They will learn to deal with geophysical data sets (bathymetry and topography, earthquake source parameters, tide gauge data for comparison, etc.) and by the end of the course should be proficient at setting up and modeling a new scenario. The GeoClaw software can also be applied to model storm surge, landslides, and other geophysical flows, and students with an interest in a particular topic will be supported in learning how to apply or extend it.

GPU Computing

In the GPU Computing course, students will implement a basic shallow water solver using CUDA. Starting from a respective C++ code, the required steps to "port" the code to a GPU platform, and to optimize the code to achieve satisfactory performance on GPU platforms will be discussed. Students with a solid background in parallel computing (or even CUDA) can take on these exercises towards a combined MPI/CUDA implementation on multi-GPU clusters (provided by the Naval Postgraduate School).