Compiler transformations for high-performance computing
ACM Computing Surveys (CSUR)
Using MPI (2nd ed.): portable parallel programming with the message-passing interface
Using MPI (2nd ed.): portable parallel programming with the message-passing interface
AspectC++: an aspect-oriented extension to the C++ programming language
CRPIT '02 Proceedings of the Fortieth International Conference on Tools Pacific: Objects for internet, mobile and embedded applications
Aspect-Oriented Programming of Sparse Matrix Code
ISCOPE '97 Proceedings of the Scientific Computing in Object-Oriented Parallel Environments
ICSE '76 Proceedings of the 2nd international conference on Software engineering
Toward a Common Component Architecture for High-Performance Scientific Computing
HPDC '99 Proceedings of the 8th IEEE International Symposium on High Performance Distributed Computing
Using AspectJ to separate concerns in parallel scientific Java code
Proceedings of the 3rd international conference on Aspect-oriented software development
Bridging the language gap in scientific computing: the Chasm approach
Concurrency and Computation: Practice & Experience - Computational Frameworks
A join point for loops in AspectJ
Proceedings of the 5th international conference on Aspect-oriented software development
Reusable aspect-oriented implementations of concurrency patterns and mechanisms
Proceedings of the 5th international conference on Aspect-oriented software development
Proceedings of the 6th workshop on Aspects, components, and patterns for infrastructure software
Taste of AOP: Blending concerns in cluster computing software
CLUSTER '07 Proceedings of the 2007 IEEE International Conference on Cluster Computing
Modular, Fine-Grained Adaptation of Parallel Programs
ICCS '09 Proceedings of the 9th International Conference on Computational Science: Part I
Flexible and Efficient In-Vivo Enhancement for Grid Applications
CCGRID '09 Proceedings of the 2009 9th IEEE/ACM International Symposium on Cluster Computing and the Grid
Novel runtime systems support for adaptive compositional modeling in PSEs
Future Generation Computer Systems - Special section: Complex problem-solving environments for grid computing
AspectMatlab: an aspect-oriented scientific programming language
Proceedings of the 9th International Conference on Aspect-Oriented Software Development
Incrementally developing parallel applications with AspectJ
IPDPS'06 Proceedings of the 20th international conference on Parallel and distributed processing
Hi-index | 0.00 |
Scientific software must be adapted for different execution environments, problem sets, and available resources to ensure its efficiency and reliability. Although adaptation patterns can be found in a sizable percentage of recent scientific applications, the traditional scientific software stack lacks the adequate adaptation abstractions and tools. As a result, scientific programmers manually implement ad-hoc solutions that are hard to maintain and reuse. In this paper, we present a novel approach to adapting scientific software written in Fortran. Our approach leverages the binary object code compatibility between stack-based imperative programming languages. This compatibility makes it possible to apply a C++ Aspect-Oriented Programming (AOP) extension to Fortran programs. Our approach expresses the adaptive functionality as abstract aspects that implement known adaptation patterns and can be reused across multiple scientific applications. Application-specific code is systematically expressed through inheritance. The resulting adaptive functionality can be maintained by any programmer familiar with AOP, which has become a staple of modern software development. We validated the expressive power of our approach by refactoring the hand-coded adaptive functionality of a real-world computational fluid dynamics application suite. The refactored code expresses the adaptive functionality in 27% fewer ULOC on average by removing duplication and leveraging aspect inheritance.