Co-arrays in the next Fortran Standard

The WG5 committee, at its meeting in Delft, May 2005, decided to include co-arrays in the next Fortran Standard. A special issue of Fortran Forum in August 1998 explained the feature, but since many of the details of the version adopted by WG5 differ from the 1998 version, it seems appropriate to describe it afresh in a self-contained article.A Fortran program containing co-arrays is interpreted as if it were replicated a fixed number of times and all copies were executed asynchronously. Each copy has its own set of data objects and is called an image. The array syntax of Fortran is extended with additional trailing subscripts in square brackets to give a clear and straightforward representation of access to data on other images.References without square brackets are to local data, so code that can run independently is uncluttered. Only where there are square brackets, or where there is a procedure call and the procedure contains square brackets, is communication between images involved.The additional syntax requires support in the compiler, but it has been designed to be easy to implement and to give the compiler scope both to apply its optimizations within each image and to optimize the communication between images.The extension includes intrinsic procedures to synchronize images, to return the number of images, to return the index of the current image, and to perform collective actions.

[1]  John M. Mellor-Crummey,et al.  A Multi-Platform Co-Array Fortran Compiler , 2004, IEEE PACT.

[2]  Benoît Dupont de Dinechin,et al.  Definition of the F-- Extension to Fortran 90 , 1997, LCPC.

[3]  Robert W. Numrich,et al.  F-: A Parallel Extension to Cray Fortran , 1997, Sci. Program..

[4]  Robert W. Numrich,et al.  Simple Parallel Extensions to Fortran 90 , 1997, PPSC.

[5]  Robert W. Numrich A note on scaling the Linpack benchmark , 2007, J. Parallel Distributed Comput..

[6]  Robert A. van de Geijn,et al.  Scalability Issues Affecting the Design of a Dense Linear Algebra Library , 1994, J. Parallel Distributed Comput..

[7]  Boleslaw K. Szymanski,et al.  High-Performance Object-Oriented Scientific Programming in Fortran 90 , 1997, PPSC.

[8]  John Reid The future of Fortran , 2003, Comput. Sci. Eng..

[9]  John M. Mellor-Crummey,et al.  Experiences with Co-array Fortran on Hardware Shared Memory Platforms , 2004, LCPC.

[10]  Robert W. Numrich A Parallel Numerical Library for Co-array Fortran , 2005, PPAM.

[11]  Jack J. Dongarra,et al.  Software Libraries for Linear Algebra Computations on High Performance Computers , 1995, SIAM Rev..

[12]  Jack Dongarra,et al.  LAPACK Users' Guide, 3rd ed. , 1999 .

[13]  Robert W. Numrich,et al.  Parallel numerical algorithms based on tensor notation and Co-Array Fortran syntax , 2005, Parallel Comput..

[14]  Para,et al.  Applied Parallel Computing Large Scale Scientific and Industrial Problems , 1998, Lecture Notes in Computer Science.

[15]  Robert W. Numrich,et al.  Co-arrays in the next Fortran Standard , 2007 .

[16]  Robert W. Numrich,et al.  Writing a Multigrid Solver Using Co-array Fortran , 1998, PARA.

[17]  John M. Mellor-Crummey,et al.  Experiences with Sweep3D implementations in Co-array Fortran , 2006, The Journal of Supercomputing.

[18]  AKIN Object-oriented programming via Fortran 90/95 , 2003 .

[19]  Van Snyder Review of "Fortran 95/2003 Explained, by Michael Metcalf, John Reid, and Malcolm Cohen" OUP, Oxford and New York, 2004. , 2004, FORF.

[20]  Bryan Carpenter,et al.  ARMCI: A Portable Remote Memory Copy Libray for Ditributed Array Libraries and Compiler Run-Time Systems , 1999, IPPS/SPDP Workshops.

[21]  Robert W. Numrich,et al.  Co-array Fortran for parallel programming , 1998, FORF.

[22]  Michael Metcalf,et al.  Fortran 95/2003 Explained , 1996 .

[23]  Tarek A. El-Ghazawi,et al.  An evaluation of global address space languages: co-array fortran and unified parallel C , 2005, PPoPP.

[24]  John M. Mellor-Crummey,et al.  Co-array Fortran Performance and Potential: An NPB Experimental Study , 2003, LCPC.