DOE PAGES title logo U.S. Department of Energy
Office of Scientific and Technical Information

Title: High-Performance Design Patterns for Modern Fortran

Abstract

This paper presents ideas for using coordinate-free numerics in modern Fortran to achieve code flexibility in the partial differential equation (PDE) domain. 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 its side-effect-free, pure procedure capability provide the scaffolding on which we implement HPC 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. We implemented these patterns using coarrays and the message passing interface (MPI). We compared the codes’ complexity and performance. The MPI code is much more complex and depends on external libraries. The MPI code on Cray hardware using the Cray compiler is 1.5–2 times faster than the coarray code on the same hardware. The Intel compiler implements coarrays atop Intel’s MPI library with the result apparently being 2–2.5 times slower than manually coded MPI despite exhibiting nearly linear scaling efficiency. As compilers mature and further improvements to coarrays comes in Fortran 2015, we expect this performance gap to narrow.

Authors:
 [1];  [2];  [3];  [4];  [3]
  1. Department of Informatics, University of Bergen, 5020 Bergen, Norway
  2. Sandia National Laboratories, Livermore, CA 94550, USA
  3. Stanford University, Stanford, CA 94305, USA
  4. EXA High Performance Computing, 1087 Nicosia, Cyprus
Publication Date:
Sponsoring Org.:
USDOE
OSTI Identifier:
1197692
Grant/Contract Number:  
AC04-94-AL85000; AC02-05CH11231
Resource Type:
Published Article
Journal Name:
Scientific Programming
Additional Journal Information:
Journal Name: Scientific Programming Journal Volume: 2015; Journal ID: ISSN 1058-9244
Publisher:
Hindawi Publishing Corporation
Country of Publication:
Egypt
Language:
English

Citation Formats

Haveraaen, Magne, Morris, Karla, Rouson, Damian, Radhakrishnan, Hari, and Carson, Clayton. High-Performance Design Patterns for Modern Fortran. Egypt: N. p., 2015. Web. doi:10.1155/2015/942059.
Haveraaen, Magne, Morris, Karla, Rouson, Damian, Radhakrishnan, Hari, & Carson, Clayton. High-Performance Design Patterns for Modern Fortran. Egypt. https://doi.org/10.1155/2015/942059
Haveraaen, Magne, Morris, Karla, Rouson, Damian, Radhakrishnan, Hari, and Carson, Clayton. Thu . "High-Performance Design Patterns for Modern Fortran". Egypt. https://doi.org/10.1155/2015/942059.
@article{osti_1197692,
title = {High-Performance Design Patterns for Modern Fortran},
author = {Haveraaen, Magne and Morris, Karla and Rouson, Damian and Radhakrishnan, Hari and Carson, Clayton},
abstractNote = {This paper presents ideas for using coordinate-free numerics in modern Fortran to achieve code flexibility in the partial differential equation (PDE) domain. 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 its side-effect-free, pure procedure capability provide the scaffolding on which we implement HPC 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. We implemented these patterns using coarrays and the message passing interface (MPI). We compared the codes’ complexity and performance. The MPI code is much more complex and depends on external libraries. The MPI code on Cray hardware using the Cray compiler is 1.5–2 times faster than the coarray code on the same hardware. The Intel compiler implements coarrays atop Intel’s MPI library with the result apparently being 2–2.5 times slower than manually coded MPI despite exhibiting nearly linear scaling efficiency. As compilers mature and further improvements to coarrays comes in Fortran 2015, we expect this performance gap to narrow.},
doi = {10.1155/2015/942059},
journal = {Scientific Programming},
number = ,
volume = 2015,
place = {Egypt},
year = {Thu Jan 01 00:00:00 EST 2015},
month = {Thu Jan 01 00:00:00 EST 2015}
}

Journal Article:
Free Publicly Available Full Text
Publisher's Version of Record
https://doi.org/10.1155/2015/942059

Citation Metrics:
Cited by: 3 works
Citation information provided by
Web of Science

Save / Share:

Works referenced in this record:

The Tau Parallel Performance System
journal, May 2006

  • Shende, Sameer S.; Malony, Allen D.
  • The International Journal of High Performance Computing Applications, Vol. 20, Issue 2
  • DOI: 10.1177/1094342006064482