Supercomputing: From Multi- to Many-core Platforms
This second-week course addressed 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 had different backgrounds and previous experience in parallel programming, and also different interests, we split up into a course that discussed implementation of models within a concrete simulation environment (GeoClaw), and a course that gave an introduction to programming on manycore platforms (as in GPU computing, based on CUDA).
Both courses were organized as a lab course, with introductory sessions in the morning plus extensive tutorials and practical/programming sessions in the afternoons. Participants presented their project results on Friday morning.
In the GeoClaw course, students studied the use of 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 dealt with geophysical data sets (bathymetry and topography, earthquake source parameters, tide gauge data for comparison, etc.). As the GeoClaw software can also be applied to model storm surge, landslides, and other geophysical flows, an additional focus was how to apply or extend it for new scenarios.
One of the "afternoon projects" by the participants, for example, was around "near field modelling of the 2010 Chile tsunami using GeoClaw".
See the following website for course material on the Finite Volume lectures and tutorials by R.J. LeVeque:
In the GPU Computing course, students parallelised the core routines of a basic shallow water solver (SWE) 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 were discussed. The resulting implementations were tested on a multi-GPU cluster provided by the Naval Postgraduate School.
On of the "afternoon projects" in the second week, for example, compared Matlab, C, and CUDA implementations of a simple shallow-water model in terms of runtime. The "Golden Bell Prize" for the best approach to improve performance of the SWE was awarded to the G2S3 participant David Sanchez.
See also the following course material:
- the SWE code used for the CUDA tutorials is available under GPL - check the SWE home page for further details;
- for a rough description of the code and its CUDA implementation, see the respective slides on SWE