Extensible component-based architecture for FLASH, a massively parallel, multiphysics simulation code

  • Authors:
  • Anshu Dubey;Katie Antypas;Murali K. Ganapathy;Lynn B. Reid;Katherine Riley;Dan Sheeler;Andrew Siegel;Klaus Weide

  • Affiliations:
  • ASC/Flash Center, The University of Chicago, 5640 S. Ellis Ave, Chicago, IL 60637, United States;Lawrence Berkeley National Laboratory, 1 Cyclotron Road, Berkeley, CA 94720, United States;Google Inc., 1600 Amphitheatre Pkwy, Mountain View, CA 94043, United States;ASC/Flash Center, The University of Chicago, 5640 S. Ellis Ave, Chicago, IL 60637, United States;Argonne National Laboratory, 9700 S. Cass Ave, Argonne, IL 60439, United States;Argonne National Laboratory, 9700 S. Cass Ave, Argonne, IL 60439, United States;Argonne National Laboratory, 9700 S. Cass Ave, Argonne, IL 60439, United States;ASC/Flash Center, The University of Chicago, 5640 S. Ellis Ave, Chicago, IL 60637, United States

  • Venue:
  • Parallel Computing
  • Year:
  • 2009

Quantified Score

Hi-index 0.00

Visualization

Abstract

FLASH is a publicly available high performance application code which has evolved into a modular, extensible software system from a collection of unconnected legacy codes. FLASH has been successful because its capabilities have been driven by the needs of scientific applications, without compromising maintainability, performance, and usability. In its newest incarnation, FLASH3 consists of inter-operable modules that can be combined to generate different applications. The FLASH architecture allows arbitrarily many alternative implementations of its components to co-exist and interchange with each other, resulting in greater flexibility. Further, a simple and elegant mechanism exists for customization of code functionality without the need to modify the core implementation of the source. A built-in unit test framework providing verifiability, combined with a rigorous software maintenance process, allow the code to operate simultaneously in the dual mode of production and development. In this paper we describe the FLASH3 architecture, with emphasis on solutions to the more challenging conflicts arising from solver complexity, portable performance requirements, and legacy codes. We also include results from user surveys conducted in 2005 and 2007, which highlight the success of the code.