Building robust scientific codes

by Dr Matthew G Knepley

University of Chicago Computation Institute

Dr Knepley delivering an energetic lecture
Dr Knepley delivering an energetic lecture

Scientific software has progressed far beyond its humble beginnings in single-author codes developed quickly and abandoned on graduation. A modern simulation will incorporate many third-party packages for specific functionality, involve several developers, usually geographically distributed, and must leverage the latest advances in hardware, from the distributed Blue Gene P to the massively parallel Fermi C2050.

We will guide students through each facet of code construction:

  • Overall design of multilanguage codes
  • Version control
  • Configure and Build systems
  • Linear algebra and solvers
  • Integration of GPU resources
  • Symbolic computing
  • Metaprogramming and code generation
  • Benchmarking

To make the experience concrete, and provide students a platform on which to build, we will follow a particular version of this paradigm in class using popular open-source tools:

We will produce working prototype code incorporating all these diverse elements by the end of this course. Extensive laboratory sessions will accompany the lecture, and the instructor will be closely involved in helping students construct scalable, extensible software that will outlive this summer school. In addition, material from other courses in this institute can be easily and quickly implemented during this course.

Student Requirements

In order to derive the most benefit from this course, the interested student should have:

  • familiarity with Python,
  • a concrete simulation problem in mind,
  • willingness to write code and experiment.

Supplementary material

Schematic for a generic scientific application
Schematic for a generic scientific application