Communications of the ACM
Generative programming: methods, tools, and applications
Generative programming: methods, tools, and applications
Application-level checkpointing for shared memory programs
ASPLOS XI Proceedings of the 11th international conference on Architectural support for programming languages and operating systems
When and how to develop domain-specific languages
ACM Computing Surveys (CSUR)
Companion to the 21st ACM SIGPLAN symposium on Object-oriented programming systems, languages, and applications
Region-based image clustering and retrieval using multiple instance learning
CIVR'05 Proceedings of the 4th international conference on Image and Video Retrieval
A technique for non-invasive application-level checkpointing
The Journal of Supercomputing
JUG: a JUnit generation, time complexity analysis and reporting tool to streamline grading
Proceedings of the 17th ACM annual conference on Innovation and technology in computer science education
Hi-index | 0.00 |
Scientific applications usually involve large number of distributed and dynamic resources and huge datasets. A mechanism like checkpointing is essential to make these applications resilient to failures. Using checkpointing as an example, this paper presents an approach for integrating the latest software engineering techniques with the development of scientific software. Generative programming is used in this research to achieve the goals of non-intrusive reengineering of existing applications to insert the checkpointing mechanism and to decouple the checkpointing-specifications from its actual implementation. The end-user specifies the checkpointing details at a higher level of abstraction, using which the necessary code is generated and woven into the application. The lessons learned and the implementation approach presented in this paper can be applied to the development of scientific applications in general. The paper also demonstrates that the generated code does not introduce any inaccuracies and its performance is comparable to the manually inserted code.