Developing scientific applications using Generative Programming

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.

[1]  Message Passing Interface Forum MPI: A message - passing interface standard , 1994 .

[2]  Purushotham Bangalore,et al.  Using Aspect-Oriented Programming for Checkpointing a Parallel Application , 2008, PDPTA.

[3]  T. Chung Computational Fluid Dynamics: FOUR. AUTOMATIC GRID GENERATION, ADAPTIVE METHODS, AND COMPUTING TECHNIQUES , 2002 .

[4]  J. Duell The design and implementation of Berkeley Lab's linux checkpoint/restart , 2005 .

[5]  Siegfried Benkner,et al.  SCALABLE COMPUTING Practice and Experience , 2008 .

[6]  Gregor Kiczales,et al.  Aspect-oriented programming , 1996, CSUR.

[7]  D. Birchall,et al.  Computational Fluid Dynamics , 2020, Radial Flow Turbocompressors.

[8]  Jason Duell,et al.  The design and implementation of Berkeley Lab's linuxcheckpoint/restart , 2005 .

[9]  Ira D. Baxter,et al.  Design maintenance systems , 1991, CACM.

[10]  Peter K. Szwed,et al.  Application-level checkpointing for shared memory programs , 2004, ASPLOS XI.

[11]  Krzysztof Czarnecki,et al.  Generative programming - methods, tools and applications , 2000 .

[12]  Message P Forum,et al.  MPI: A Message-Passing Interface Standard , 1994 .

[13]  Janice Singer,et al.  How do scientists develop and use scientific software? , 2009, 2009 ICSE Workshop on Software Engineering for Computational Science and Engineering.

[14]  Chengcui Zhang,et al.  Region-Based Image Clustering and Retrieval Using Multiple Instance Learning , 2005, CIVR.

[15]  Cristina V. Lopes,et al.  Aspect-oriented programming , 1999, ECOOP Workshops.

[16]  Jean Bézivin,et al.  Model-based DSL frameworks , 2006, OOPSLA '06.

[17]  M Mernik,et al.  When and how to develop domain-specific languages , 2005, CSUR.

[18]  Jeffrey C. Carver,et al.  Understanding the High-Performance-Computing Community: A Software Engineer's Perspective , 2008, IEEE Software.

[19]  Jeffrey G. Gray,et al.  Model-based Aspect Weaver Construction , 2007 .

[20]  Suman Roychoudhury,et al.  A Domain-Specific Language for Application-Level Checkpointing , 2008, ICDCIT.

[21]  Frederick P. Brooks,et al.  No Silver Bullet: Essence and Accidents of Software Engineering , 1987 .