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

Steve M. Quenette, B. F. Appelbe, M. Gurnis, L. J. Hodkinson, Louis Moresi, P. D. Sunter

Research output: Contribution to journalArticleResearchpeer-review

3 Citations (Scopus)

Abstract

Maintaining and adapting scientific applications software is an ongoing issue for many researches 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 maintainance, 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.

Original languageEnglish
JournalANZIAM Journal
Volume46
Issue number5 ELECTRONIC SUPPL.
Publication statusPublished - 1 Dec 2004

Cite this