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

Date

Authors

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

Journal Title

Journal ISSN

Volume Title

Publisher

Access Statement

Research Projects

Organizational Units

Journal Issue

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.

Description

Keywords

Citation

Source

ANZIAM Journal

Book Title

Entity type

Publication

Access Statement

License Rights

DOI

Restricted until