Compiler and Runtime Approach for Supporting Efficient Execution of Coarray Fortran Programs
Date
Authors
Journal Title
Journal ISSN
Volume Title
Publisher
Abstract
Fortran remains a very widely used programming language for technical computing. Fortran coarrays are new elements in the Fortran standard which aim to support the development of parallel programs without requiring the use of external constructs such as libraries (e.g. MPI) or directives (e.g. OpenMP). Coarrays provide a Partitioned Global Address Space (PGAS) approach to parallel programming in which the programmer declares arrays to be partitioned across different images that collaboratively perform the computations. However, to date coarrays are not widely used in commercial code since a robust implementation has only been available on Cray platforms. As a result, there has been relatively little experience with coarrays, reporting of performance data, and a clear lack of portability. The work described in this dissertation aims to make a fundamental contribution to the state of the art of parallel programming by providing a robust, open-source implementation of the coarray features in the Fortran standard. It describes an efficient, near-commercial strength implementation technology for coarrays which we developed. An evaluation of this implementation using developed micro-benchmarks is presented, where we show in particular the benefits of our approach for supporting strided communication, synchronization, and collectives compared to other coarray implementations. When running developed benchmarks and codes from real-world applications, we obtained performance with our coarray implementation on par or exceeding that obtained using other implementations. We also present support for additional features expected to be added to the Fortran standard, demonstrating its utility for writing and improving the performance of a range of codes. Finally, we describe an extension for parallel I/O in coarray programs which we designed.