This grant is a planning grant to fund the conceptualization of an institute for software infrastructure for sustained innovation. It funds the planning of the technical and organizational aspects. To understand community requirements, it involves workshops and outreach to gather community requirements.
To fully understand the behavior of a complex physical phenomenon such as a burning building, it is often necessary to understand both large-scale effects such as the buildup of heat on each floor, and small-scale effects, such as how a steal beam in the foundation deforms as it gets hotter. Computational simulations that study such effects in tandem are called "multi-scale" simulations, and are exceedingly difficult to write. This is because the computational models that represent the different scales differ widely, and the software components used to simulate each scale are often incompatible. Combining these disparate components requires painstaking and error prone programmer labor.
This project will conceptualize an institute devoted to providing solutions to scientists investigating multi-scale problems. The project centers around reaching out to computational scientists and computer systems researchers to determine both what kinds of programming abstractions may be useful for different computational models and how to best adapt existing abstractions to the challenges of multi-scale simulation. The goal is to enable the establishment of an institute that will study the use of various programming abstractions to bridge the gap between differing software components, hence easing the pain of writing multi-scale simulations. The ultimate effect will be to allow multi-scale systems to be simulated accurately and efficiently, providing deeper insights into the behavior of complex physical systems.
The goal of the project was to develop a strategic plan for creating an institute that will develop software methodologies and implementations to enable engineers and scientists to use high-performance parallel computers without having to invest immense amounts of time and effort in learning the idiosyncracies of each parallel computer. Intellectual merit: Parallel programming has always been a challenge, but new trends in computer hardware and in applications are aggravating this problem.The hardware of parallel computers is getting more heterogeneous, consisting today of clusters of conventional processing cores, graphical processing units (GPUs), and a type of programmable hardware called FPGAs. Programming such heterogeneous computers is more challenging than programming homogeneous machines consisting of conventional processing cores, which were the standard until recently. Furthermore, application programs are becoming more complex since they now model complex phenomena involving multiple domains such as fluid mechanics and fracture mechanics, instead being restricted to a single domain. To address these problems, the project brought together an interdisciplinary team of computer scientists and researchers from application areas such as fracture mechanics and computational biology. The most promising methodology identified by the team is to define and implement a set of semantically-rich software abstractions that will isolate the application programmer from the complexity of heterogeneous parallel computers. In this context, the term software abstractions means (i) a set of software routines that have been optimized for different parallel computers by a small group of expert parallel programmers, usually computer scientists, and (ii) an accompanying set of well-defined interfaces (known as APIs) to these routines so that they can be used by application programmers without knowing the internals of these routines. The term semantically-rich software abstractions means that the APIs for the routines are associated with specifications of what these routines accomplish, so that these routines can be combined and optimized automatically by compilers and runtime systems. To demonstrate the feasibility of this approach, the team implemented such abstractions for sparse graph computations. These computations arise in many problem domains incuding finite-element solvers for partial differential equations, web search, recommendation systems, visualization and computational biology. This software, called the Galois system, was made publicly available for download. Researchers unconnected to this project have used it for doing FPGA placement and routing in parallel, as well as for implementing multifrontal solvers for fracture problems, demonstrating the feasibility of the proposed approach. These experiences were key to the formulation of a strategic plan for creating an Institute for using inter-domain abstractions to support inter-disciplinary applications. Broader impact: Team members held several workshops and tutorials at major venues such as Supercomputing to inform the community of this project, to get their feedback on the proposed strategy, and to train them to use the Galois system for applications that involved sparse graph computations. In addition, course material was developed at the project sites for use in graduate and undergraduate courses. Roughly a dozen graduate students at the Masters and PhD levels have been involved in various aspects of this project including the design and implementation of the software artifacts and the preparation of tutorial material.