ANZIAM J. 46(E) pp.C1001--C1016, 2005.

An investigation into design for performance and code maintainability in high performance computing

S. M. Quenette

B. F. Appelbe

M. Gurnis

L. J. Hodkinson

L. Moresi

P. D. Sunter

(Received 29 October 2004; revised 12 September 2005)

Abstract

Maintaining and adapting scientific applications software is an ongoing issue for many researchers and communities, especially in domains such as geophysics, where community codes are constantly evolving to adopt new solution methods and constitutive laws. Traditional high performance computing code is written in C or Fortran, which offer high performance but are notoriously difficult to evolve and maintain. Object-oriented and interpretive programming languages (such as C++, Java, and Python) offer better support for code evolution and maintenance, but have not been widely adopted for scientific programming, for reasons including their performance and/or complexity. This paper describes our approach to developing scientific codes in C that provides the flexibility of interpreted object-oriented environments with the performance of traditional C programming, through techniques including entry points, plug-ins, and coarse grained objects. This approach has been used to implement two very differently formulated scientific codes in active use and development by the geophysics scientific community.

Download to your computer

Authors

S. M. Quenette
VPAC, Melbourne, Australia. mailto:steve@vpac.org
B. F. Appelbe
VPAC, Melbourne, Australia. mailto:bill@vpac.org
M. Gurnis
California Inst. of Technology, Pasadena, USA. mailto:gurnis@gps.caltech.edu
L. J. Hodkinson
VPAC, Melbourne, Australia. mailto:lhodkins@vpac.org
L. Moresi
Monash University, Melbourne, Australia. mailto:louis.moresi@sci.monash.edu.au
P. D. Sunter
VPAC, Melbourne, Australia. mailto:pds@vpac.org

Published October 7, 2005. ISSN 1446-8735

References

  1. F. Brooks, Jr. The Mythical Man-Month (20th Anniversary edition). Addison--Wesley, 1995.
  2. L. Moresi, D. May, J. Freeman, B. Appelbe. Mantle convection modeling with viscoelastic/brittle lithosphere: Numerical and computational methodology. Lecture Notes in computer Science 2660: Computational Science ICCS2003, p.281, 2003
  3. B. W. Boehm, P. N. Papaccio. Understanding and Controlling Software Costs. IEEE Transactions in Software Engineering, p.1472, 1998
  4. S. McConnell. Rapid Development. Microsoft Press, 1996
  5. http://www.agilemanifesto.org
  6. D. Anderson. Agile Management for Software Engineering. Prentice Hall, 2003.
  7. http://www.python.org
  8. G. Silberschatz. Operating system concepts (5th Edition). Addison--Wesley, 1998
  9. S. Balay, V. Eijkhout, W. D. Gropp, L. C. McInnes, and B. F. Smith. Efficient Management of Parallelism in Object Oriented Numerical Software Libraries. Modern Software Tools in Scientific Computing. E. Arge, A. M. Bruaset, and H. P. Langtangen, editors, pages 163-202, Birkhauser Press, 1997
  10. W. Humphrey, R. Ryne, T. Cleland, J. Cummings, S. Habib, G. Mark, and J. Qiang. Particle beam dynamics simulations using the POOMA Framework. Lecture Notes Computer Science 1505, 25 (1998), Proceedings ISCOPE'98 (Santa Fe, NM 1998)
  11. http://www.javagrande.org