Array Design and Expression Evaluation in POOMA II
POOMA is a templated C++ class library for use in the development of large-scale scientific simulations on serial and parallel computers. POOMA II is a new design and implementation of POOMA intended to add richer capabilities and greater flexibility to the framework. The new design employs a generic Array class that acts as an interface to, or view on, a wide variety of data representation objects referred to as engines. This design separates the interface and the representation of multidimensional arrays. The separation is achieved using compile-time techniques rather than virtual functions, and thus code efficiency is maintained. POOMA II uses PETE, the Portable Expression Template Engine, to efficiently represent complex mathematical expressions involving arrays and other objects. The representation of expressions is kept separate from expression evaluation, allowing the use of multiple evaluator mechanisms that can support nested where-block constructs, hardware-specific optimizations and different run-time environments.
KeywordsParse Tree Array Design Domain Object Virtual Function Multidimensional Array
Unable to display preview. Download preview PDF.
- William Humphrey, Steve Karmesin, Federico Bassetti, and John Reynders. Optimization of data-parallel field expressions in the POOMA framework. In ISCOPE’ 97, December 1997. Marina del Rey, CA.Google Scholar
- John Reynders et al. POOMA: A framework for scientific simulations on parallel architectures. In Gregory V. Wilson and Paul Lu, editors, Parallel Programming using C++, pages 553–594. MIT Press, 1996.Google Scholar
- Todd Veldhuizen. Expression templates. C++ Report, June 1995.Google Scholar
- James O. Coplien. Advanced C++ Programming Styles and Idioms. Addison-Wesley, 1992.Google Scholar
- David R. Musser and Atul Saini. STL Tutorial and Reference Guide: C++ Programming with the Standard Template Library. Addison-Wesley, 1996.Google Scholar
- Federico Bassetti, Kei Davis, and Dan Quinlan. A comparison of performance-enhancing strategies for parallel numerical object-oriented frameworks. In ISCOPE’ 97, December 1997. Marina del Rey, CA.Google Scholar