Test-driven Coarray parallelization of a legacy Fortran application
Rouson, D. W. I.
Kassinos, Stavros C.
PublisherAffiliation: EXA High Performance Computing, Nicosia, Cyprus
Affiliation: Center for Computational Earth and Environmental Sciences, Stanford University, Stanford, CA, United States
Affiliation: Combustion Research Facility, Sandia National Laboratories, Livermore, CA, United States
Affiliation: Performance Research Laboratory, University of Oregon, Eugene, OR, United States
Affiliation: UCY-CompSci, University of Cyprus, Nicosia, Cyprus
Correspondence Address: EXA High Performance Computing, Nicosia, Cyprus
SourceProc. of SE-HPCCSE 2013: 1st Int. Workshop on SE for High Performance Computing in Computational Science and Engineering - Held in Conjunction with SC 2013: The ICHPC, Networking, Storage and Analysis
Google Scholar check
MetadataShow full item record
This paper summarizes a strategy for parallelizing a legacy Fortran 77 program using the object-oriented (OO) and coarray features that entered Fortran in the 2003 and 2008 standards, respectively. OO programming (OOP) facilitates the construction of an extensible suite of model-verification and performance tests that drive the development. Coarray parallel programming facilitates a rapid evolution from a serial application to a parallel application capable of running on multi-core processors and many-core accelerators in shared and distributed memory. We delineate 17 code modernization steps used to refactor and parallize the program, and study the resulting performance. Our scaling studies show that the bottleneck in the performance was due to the implementation of the collective sum procedure. Replacing the sequential procedure with a binary tree procedure improved the scaling performance of the program. This bottleneck will be resolved in the future by new collective procedures in Fortran 2015. Copyright 2013 ACM.