Abstract
Co-Array Fortran, formally called F−−, is a small set of extensions to Fortran 90/95 for Single-Program-Multiple-Data (SPMD) parallel processing. OpenMP Fortran is a set of compiler directives that provide a high level interface to threads in Fortran, with both thread-local and thread-shared memory. OpenMP is primarily designed for loop-level directive-based parallelization, but it can also be used for SPMD programs by spawning multiple threads as soon as the program starts and having each thread then execute the same code independently for the duration of the run. The similarities and differences between these two SPMD programming models are described.
Co-Array Fortran can be implemented using either threads or processes, and is therefore applicable to a wider range of machine types than OpenMP Fortran. It has also been designed from the ground up to support the SPMD programming style. To simplify the implementation of Co-Array Fortran, a formal Subset is introduced that allows the mapping of co-arrays onto standard Fortran arrays of higher rank. An OpenMP Fortran compiler can be extended to support Subset Co-Array Fortran with relatively little effort.
Similar content being viewed by others
References
Cray Research Inc. Application Programmer's Library Reference Manual. Cray Research SR-2165, 1996.
D. Dougherty. Sed & Awk. O'Reilly and Assoc., Sebastopol, CA, 1990.
S. Kleiman, D. Shah, and B. Smaalders. Programming with Threads. SunSoft Press, Prentice Hall, Upper Saddle River, NJ, 1996.
C. H. Koelbel, D. B. Loveman, R. S. Schreiber, G. L. Steele Jr., and M. E. Zosel. The High Performance Fortran Handbook. MIT Press, Cambridge, MA, 1994.
The Message Passing Interface Forum. MPI-2: Extensions to the Message Passing Interface, http://www.mpi-forum.org/docs/docs.html, 1997.
R. W. Numrich and J. Reid. Co-array Fortran for parallel programming. Fortran Forum, 17(2):1–31, 1998.
The OpenMP Organization. OpenMP: A Proposed Industry Standard API for Shared Memory Programming, http://www.openmp.org, 1997.
The OpenMP Organization. OpenMP Fortran Application Programming Interface version 1.1, http://www.openmp.org, 1999.
The OpenMP Organization. OpenMP Fortran Application Programming Interface version 2.0, http://www.openmp.org, 2000.
M. Snir, S. W. Otto, S. Huss-Lederman, D. W. Walker, and J. Dongarra. MPI: The Complete Reference. MIT Press, Cambridge, MA, 1996.
A. J. Wallcraft. SPMD OpenMP vs MPI for ocean models. Concurrency: Practice and Experience, 12:1155–1164, 2000.