Scientific applications can model interactions of medicines with proteins, predict the behavior of nano-materials, model the climate, and lead to better understanding of physical phenomenon. These applications demand ever greater computational resources, which can only be supplied by new parallel computers with ever increasing capability and complexity. Parallel computing can bring about new breakthroughs only if the complexity of efficient parallel programming can be overcome. Yet developing parallel applications remains significantly more difficult than serial development. Petascale machines with hundreds of thousands(and possibly millions) of processors add to the complexity, as do new sophisticated algorithms and multi-physics applications.
This project is developing a new approach to parallel programming which builds upon the automatic resource management and composibility of the Charm++ framework. This approach includes development of multiple, individually incomplete, programming models. Each model simplifies parallel programming while still covering significant categories of applications. This collection of interoperable models, supported by complete models including Adaptive MPI and Charm++, provides a powerful environment for developing future petascale applications. A compiler framework is being developed which provides a common representation and facilitates compatibility between models. In addition, the vision includes abstractions supported by libraries for commonly needed data types and functionalities. These abstractions will support and interoperate with domain specific frameworks. The results of this project will enable the large community of computational scientists and engineers to harness petascale machines with relative ease in order to generate breakthroughs in scientific discovery and engineering design.
For several decades, computers became smaller, faster and cheaper every year. The speed increase stopped around 2003, because of physical limitations. Further increases in speed of computation can come mainly, if not only, by using many processors in parallel to solve a problem faster. At the high end, it has been possible to put together machines consisting of over a million processors. Advances in scientific and engineering modeling have brought the possibility of breakthroughs of societal importance on the horizon, if these large computers can be used for such modeling. Yet, programming parallel computers has remained a challenging problem. In the work conducted within this project over a period of six years, several advances were made towards solving this problem. One of the insights in this project is the idea that we need a varied toolbox, rather than a single magical tool: i.e. instead of looking for a single parallel programming language, we should look at a collection of specialized languages, each good for some specific subset of problems, and all able to work together in an interoperable framework. To explore these ideas, this project developed several incremental parallel languages, and extended some existing parallel languages. One of the early insights was that the languages can be specialized by observing the kinds of interactions among the set of independent entities. It is often the case that a class of parallel algorithms tend to exhibit a somewhat stylized pattern of interaction that can be captured and expressed by a specialized programming language. Based on this observation, languages such as Charisma and Multiphase Shared Arrays were defined, and other languages such as Hierarchical Tiled Arrays and Deterministic Parallel Java were extended. A new language DivCon, for expressing divide-and-conquer algorithms that dealing with distributed data arrays, was developed. A library that acts as a powerful programming methodology for algorithms involving a tree as a basic data structure was developed. We demonstrated that simple support by a compiler for a carefully designed language, with well-known static analysis techniques, could improve the productivity of a parallel programming methodology significantly. These ideas were embodied in a parallel language called "Charj". As measured by lines-of-code as well as by other subjective productivity metrics, Charj programs are elegant and are likely to improve programmer productivity. Although new programming languages are attractive, from the point of view of their innate properties and benefits, the inertia of existing code base and entrenched expertise in the older methodologies constitute major hurdles to their adoption. To this end, this project developed a framework that supports interoperability between the most popular parallel programming system, namely MPI, and the novel languages in the family of languages developed under this project. With this, software developers can incorporate the novel and radical programming languages in their ongoing project by possibly writing a small module in the new language. This allows for incremental adoption of the new methodologies. This idea was demonstrated in large scientific applications in production use within the Department of Energy. Several extensions and improvements were made to the Charm++ framework. Charm++ acts as a base language to which many of the new languages were translated. Its message driven execution model is key to the interoperability among different languages mentioned above. Charm++’s adaptive runtime system provides a common substrate for optimizing resource management across modules written in different languages. The utility and impact of this project was demonstrated by submissions to the international High Performance Computing Challenge Competition at the Supercomputing conference. This competition judges the productivity and performance of different programming models. In two consecutive years when it was submitted, Charm++ was among the finalists. It co-won the award in 2011, and was a finalist in 2012. Some of the broader impact of the project has been felt in science and engineering endeavors that depend on parallel computing. The Charm++ and associated languages and libraries enabled many science and engineering results during the performance period of this grant. Although this credit must be shared with other funded projects in science and engineering, it is notable that the HIV Capsid structure determination that made the cover of the prestigious Nature magazine in summer of 2012 was enabled by a Charm++-based application called NAMD. Similarly, an application in computational astronomy name ChaNGa, and an application in material modeling named OpenAtom have both benefitted from the outcomes of this project. Another remarkable outcome is the success of "Episimdemics", a highly scalable program for studying spread of contagion through populations and scoial network consisting of people and places. Numerous students have had their tuition and training funded under this project. Two participating undergraduates, Ekaterina Gonina and Edgar Solomonik, have each gone on to pursue a PhD in computer science from UC Berkeley. Solomonik was also awarded the competitive DOE CSGF fellowship.