High-performance design patterns for modern Fortran

  • Authors:
  • Magne Haveraaen;Karla Morris;Damian Rouson

  • Affiliations:
  • University of Bergen, Bergen, Norway;Sandia National Laboratories, Livermore, California;Stanford University, Stanford, California

  • Venue:
  • SE-HPCCSE '13 Proceedings of the 1st International Workshop on Software Engineering for High Performance Computing in Computational Science and Engineering
  • Year:
  • 2013

Quantified Score

Hi-index 0.00

Visualization

Abstract

High-performance software, as all software, continuously evolves. Besides the normal changes in user requirements, e.g., the wish to solve a variation of a scientific problem, such software is also challenged by a flood of new technologies that promise higher performance and better energy utilization. Continuously adapting HPC codes for multicore processors and many-core accelerators while also adapting to new user requirements, however, drains human resources and prevents utilization of more cost-effective hardware. Here we present some ideas for dealing with software variability in the PDE domain, namely the use of coordinate-free numerics for achieving flexibility. We also show how Fortran, over the last few decades, has changed to become a language well suited for state-of-the-art software development. Fortran's new coarray distributed data structure, the language's class mechanism and side-effect-free, pure function capability provide the scaffolding on which we implement high performance software. These features empower compilers to organize parallel computations with efficient communication. We present some programming patterns that support asynchronous evaluation of expressions comprised of parallel operations on distributed data.