1. Over view
The focus of this paper will be on the role of systems engineering in the development of a flexible and extendible infrastructure for parallel structured adaptive meshes. The fundamental systems engineering principles used are well-known but their application in the development of software for large scale parallel computation leads to some new abstractions for the formulation of computational software.
2. Problem Statement
There are a wide variety of computational algorithms based structured adaptive mesh refinement. There are a diversity of parallel execution environments which must be supported ranging from shared memory multiprocessors to geographically dispersed networks. Additionally, computationally-based experimentation is no longer "just computation" but involves visualization and other sophisticated analyses.
Any infrastructure for support of structured adaptive mesh refinement (SAMR) must, therefore, be readily extendible if it is to be widely applicable. This paper focuses on the design and implementation considerations which enable the hierarchical dynamic distributed array(HDDA)/directed acyclic grid hierarchy(DAGH) infrastructure (HDDA/DAGH) to be readily extendible.
The approach we have taken to meeting requirements for breadth of application and for efficient execution on multiple execution platforms is to separately define data management and computational abstractions and to use object-oriented development methods.
HDDA and DAGH are separate abstraction layers and within each of these layer there are sublayers. The HDDA is the lowest level of abstraction. The lowest level of abstraction with the HDDA level is that of an index space. Separation of specification of index space from data access and storage allows the index space for a problem domain to be derived directly from the geometric and topological properties of the domain. This direct mapping from the problem space to the index space enables maintenance of problem-defined locality in physical memory. The next level of the HDDA implements data storage and access in which we have included issues such as extendibility, communication and synchronization as well as storage. The DAGH defines grids, meshes, etc. One instantiation of the next level above DAGH defines programming abstractions which are specific to particular methods of structured adaptive mesh refinement such as Berger/Oliger, multigrid, etc. Another instantiation of the next level above DAGH implements additional usability features such as checkpointing. Yet another instantiation above DAGH defines an interface to visualization systems such as AVS and Explorer.
A compact and efficient implementation depends upon the capabilities provided in object-oriented programming systems. Each layer is implemented as a set of C++ classes which inherit from the classes defined in the lower layers or use composition/template mechanisms to create container classes. Use of inlining is critical to efficiency when several layers must be traversed
4. Content of Paper
The main content of the paper will be definition of the abstractions and their composition into a system. Example programs will be given to illustrate the concepts.