Efficiently computing static single assignment form and the control dependence graph
ACM Transactions on Programming Languages and Systems (TOPLAS)
Journal of Parallel and Distributed Computing - Special issue on scalability of parallel algorithms and architectures
Algorithm-oriented generic libraries
Software—Practice & Experience
The TAMPR program transformation system: simplifying the development of numerical software
Modern software tools for scientific computing
Generic programming and the STL: using and extending the C++ Standard Template Library
Generic programming and the STL: using and extending the C++ Standard Template Library
High-level semantic optimization of numerical codes
ICS '99 Proceedings of the 13th international conference on Supercomputing
An annotation language for optimizing software libraries
Proceedings of the 2nd conference on Domain-specific languages
Next-generation generic programming and its application to sparse matrix computations
Proceedings of the 14th international conference on Supercomputing
Performance modeling and tuning of an unstructured mesh CFD application
Proceedings of the 2000 ACM/IEEE conference on Supercomputing
An Open-Source Project for Modeling Hydrodynamics in Astrophysical Systems
Computing in Science and Engineering
IPDPS '00 Proceedings of the 14th International Symposium on Parallel and Distributed Processing
A comparative study of language support for generic programming
OOPSLA '03 Proceedings of the 18th annual ACM SIGPLAN conference on Object-oriented programing, systems, languages, and applications
Improving the computational intensity of unstructured mesh applications
Proceedings of the 19th annual international conference on Supercomputing
Representation-independent program analysis
PASTE '05 Proceedings of the 6th ACM SIGPLAN-SIGSOFT workshop on Program analysis for software tools and engineering
An algebraic programming style for numerical software and its optimization
Scientific Programming
Optimistic parallelism requires abstractions
Proceedings of the 2007 ACM SIGPLAN conference on Programming language design and implementation
A semantics-based approach to optimizing unstructured mesh abstractions
A semantics-based approach to optimizing unstructured mesh abstractions
Annotating user-defined abstractions for optimization
IPDPS'06 Proceedings of the 20th international conference on Parallel and distributed processing
CC'05 Proceedings of the 14th international conference on Compiler Construction
LCPC'04 Proceedings of the 17th international conference on Languages and Compilers for High Performance Computing
Hi-index | 0.01 |
Computational scientists often must choose between the greater programming productivity of high-level abstractions, such as matrices and mesh entities, and the greater execution efficiency of low-level constructs. Performance is degraded when abstraction indirection introduces overhead and hinders compiler analysis. This can be overcome by targeting the semantics, rather than the implementation, of abstractions. Raising operators specified by a domain expert project an application from an implementation space to an abstraction space, where optimizations leverage domain semantics to complement conservative analyses. Raising operators define a domain-specific intermediate representation, which optimizations target for improved portability. Following optimization, transformed code is reified as a concrete implementation via lowering operators. We have developed a framework to implement this optimization strategy, which we use to introduce two domain-specific unstructured mesh optimizations. The first uses an inspector/executor approach to avoid costly traversals over a static mesh by memoizing the relatively few references required for mathematical computations. The executor phase accesses stored entities without incurring the indirections. The second optimization lowers object-based mesh access and iteration to a low-level implementation, which uses integer-based access and iteration.