Seminar series
Date
Thu, 01 Mar 2012
Time
10:15 - 11:15
Location
OCCAM Common Room (RI2.28)
Speaker
Aron Ahmadia
Organisation
KAUST

As Herb Sutter predicted in 2005, "The Free Lunch is Over", software programmers can no longer rely on exponential performance improvements from Moore's Law.  Computationally intensive software now rely on concurrency for improved performance, as at the high end supercomputers are being built with millions of processing cores, and at the low end GPU-accelerated workstations feature hundreds of simultaneous execution cores.  It is clear that the numerical software of the future will be highly parallel, but what language will it be written in?

Over the past few decades, high-level scientific programming languages have become an important platform for numerical codes. Languages such as MATLAB, IDL, and R, offer powerful advantages: they allow code to be written in a language more familiar to scientists and they permit development to occur in an evolutionary fashion, bypassing the relatively slow edit/compile/run/plot cycle of Fortran or C. Because a scientist’s programming time is typically much more valuable than the computing cycles their code will use, these are substantial benefits. However, programs written in such languages are not portable to high performance computing platforms and may be too slow to be useful for realistic problems on desktop machines. Additionally, the development of such interpreted language codes is partially wasteful in the sense that it typically involves reimplementation (with associated debugging) of some algorithms that already exist in well-tested Fortran and C codes.  Python stands out as the only high-level language with both the capability to run on parallel supercomputers and the flexibility to interface with existing libraries in C and Fortran.

Our code, PyClaw, began as a Python interface, written by University of Washington graduate student Kyle Mandli, to the Fortran library Clawpack, written by University of Washington Professor Randy LeVeque.  PyClaw was designed to build on the strengths of Clawpack by providing greater accessibility.  In this talk I will describe the design and implementation of PyClaw, which incorporates the advantages of a high-level language, yet achieves serial performance similar to a hand-coded Fortran implementation and runs on the world's fastest supercomputers. It brings new numerical functionality to Clawpack, while making maximal reuse of code from that package.  The goal of this talk is to introduce the design principles we considered in implementing PyClaw, demonstrate our testing infrastructure for developing within PyClaw, and illustrate how we elegantly and efficiently distributed problems over tens of thousands of cores using the PETSc library for portable parallel performance.  I will also briefly highlight a new mathematical result recently obtained from PyClaw, an investigation of solitary wave formation in periodic media in 2 dimensions.

Please contact us with feedback and comments about this page. Last updated on 04 Apr 2022 14:57.