4.5 Article

Graph-Based Software Design for Managing Complexity and Enabling Concurrency in Multiphysics PDE Software

Journal

Publisher

ASSOC COMPUTING MACHINERY
DOI: 10.1145/2382585.2382586

Keywords

Algorithms; Design; Scientific computing; object-oriented design; multiphysics; task graph

Funding

  1. DOE NNSA ASC Integrated Codes effort at Sandia National Laboratories [DE-AC04-94AL85000]
  2. DOE NNSA ASC Algorithms effort
  3. DOE Office of Science AMR program at Sandia National Laboratories [DE-AC04-94AL85000]
  4. National Nuclear Security Administration under the Advanced Simulation and Computing program through DOE Research Grant [DE-NA0000740]
  5. National Science Foundation [PetaApps-0904631]
  6. United States Department of Energy' s National Nuclear Security Administration [DE-AC04-94AL85000]
  7. Office of Advanced Cyberinfrastructure (OAC)
  8. Direct For Computer & Info Scie & Enginr [0904631] Funding Source: National Science Foundation

Ask authors/readers for more resources

Multiphysics simulation software is plagued by complexity stemming from nonlinearly coupled systems of Partial Differential Equations (PDEs). Such software typically supports many models, which may require different transport equations, constitutive laws, and equations of state. Strong coupling and a multiplicity of models leads to complex algorithms (i.e., the properly ordered sequence of steps to assemble a discretized set of coupled PDEs) and rigid software. This work presents a design strategy that shifts focus away from high-level algorithmic concerns to low-level data dependencies. Mathematical expressions are represented as software objects that directly expose data dependencies. The entire system of expressions forms a directed acyclic graph and the high-level assembly algorithm is generated automatically through standard graph algorithms. This approach makes problems with complex dependencies entirely tractable, and removes virtually all logic from the algorithm itself. Changes are highly localized, allowing developers to implement models without detailed understanding of any algorithms (i.e., the overall assembly process). Furthermore, this approach complements existing MPI-based frameworks and can be implemented within them easily. Finally, this approach enables algorithmic parallelization via threads. By exposing dependencies in the algorithm explicitly, thread-based parallelism is implemented through algorithm decomposition, providing a basis for exploiting parallelism independent from domain decomposition approaches.

Authors

I am an author on this paper
Click your name to claim this paper and add it to your profile.

Reviews

Primary Rating

4.5
Not enough ratings

Secondary Ratings

Novelty
-
Significance
-
Scientific rigor
-
Rate this paper

Recommended

No Data Available
No Data Available