POOMA: A C++ Toolkit for High-Performance Parallel Scientific Computing | ||
---|---|---|
Prev | Chapter 1. Introduction | Next |
The POOMA Toolkit was developed at Los Alamos National Laboratory to assist nuclear fusion and fission research. In 1994, the toolkit grew out of the Object-Oriented Particle Simulation Class Library developed for particle-in-cell simulations. The goals of the Framework, as it was called at the time, were driven by the Numerical Tokamak's "Parallel Platform Paradox":
The framework's goal of being able to quickly write efficient scientific code that could be run on a wide variety of platforms remains unchanged today. Development, mainly at the Advanced Computing Laboratory at Los Alamos, proceeded rapidly. A matrix solver application was written using the framework. Support for hydrodynamics, Monte Carlo simulations, and molecular dynamics modeling soon followed.The average time required to implement a moderate-sized application on a parallel computer architecture is equivalent to the half-life of the latest parallel supercomputer.
By 1998, POOMA was part of the U.S. Department of Energy's Accelerated Strategic Computing Initiative (ASCI). The Comprehensive Test Ban Treaty forbid nuclear weapons testing so they were instead simulated using computers. ASCI's goal was to radically advance the state of the art in high-performance computing and numerical simulations so the nuclear weapon simulations could use 100-teraflop parallel computers. A linear accelerator code linac and a Monte Carlo neutron transport code MC++ were among the codes written.
POOMA 2 involved a new conceptual framework and a complete rewriting of the source code to improve performance. The Array class was introduced with its use of Engines, separating container use from container storage. A new asynchronous scheduler permitted out-of-order execution to improve cache coherency. Incorporating the Portable Expression Template Engine (PETE) permitted faster loop execution. Soon, container views and ConstantFunction and IndexFunction Engines were added. Release 2.1.0 included Fields with their spatial extent and DynamicArrays with the ability to dynamically change domain size. Support for particles and their interaction with Fields were added. The POOMA messaging implementation was revised in release 2.3.0. Use of the Cheetah Library separated POOMA from the actual messaging library used, and support for applications running on clusters of computers was added. CodeSourcery, LLC, and Proximation, LLC, took over POOMA development from Los Alamos National Laboratory. During the past two years, the Field abstraction and implementation was improved to increase its flexibility, add support for multiple values and materials in the same cell, and permit lazy evaluation. Simultaneously, the execution speed of the inner loops was greatly increased.