Principal Investigator: Michael Lang, Los Alamos National Laboratory
The Flexible Computational Science Infrastructure (FleCSI) project provides a compile-time configurable C++ infrastructure to support the needs of a broad variety of solver and data requirements as needed for multiphysics applications. As such, FleCSI attempts to provide a very general set of infrastructure design patterns that can be specialized and extended to suit the needs of a broad variety of solver and data requirements. Current support includes multi-dimensional mesh topology, mesh geometry, mesh adjacency information, n-dimensional hashed-tree data structures, graph partitioning interfaces, and dependency closures.
FleCSI also introduces a functional programming model with control, execution, and data abstractions that are consistent with both MPI and state-of-the-art task-based runtimes such as Legion and Charm++. The FleCSI abstraction layer provides the developer with insulation from the underlying runtime, while allowing support for multiple runtime systems, including conventional models like asynchronous MPI. The intent is to give developers a concrete set of user-friendly programming tools that can be used now, while allowing flexibility in choosing runtime implementations and optimizations that can be applied to architectures and runtimes that arise in the future. The control and execution models in FleCSI also provide formal nomenclature for describing poorly understood concepts like kernels and tasks. To provide a low barrier to entry, the FleCSI data model does not lock developers into particular layouts or data structure representations, thus providing a low-buy-in approach that makes FleCSI an attractive option for many application projects.