Co-array Fortran is a small extension to Fortran 95. It is a simple, explicit notation for data decomposition, such as that often used in message-passing models, expressed in a natural Fortran-like syntax. The syntax is architecture-independent and may be implemented not only on distributed memory machines but also on shared memory machines and even on clustered machines.
The ISO Fortran Committee decided in May 2005 to include co-arrays in the next revision of the Fortran standard.
A full description of the original co-array syntax appeared in Numrich and Reid (1998), Co-Array Fortran for Parallel Programming, ACM Fortran Forum, volume 17, no 2, pp 1-31 (get from ACM portal here). It is also available as a Rutherford Lab report here. Since some of the details of the version adopted by WG5 differ from the 1998 version, a new description recently appeared in Numrich and Reid (2005), Co-arrays in the next Fortran Standard, ACM Fortran Forum, volume 24, no 2, pp 4-17 (get from ACM portal here). It is also available as WG5 paper N1642. The proposal itself is item UK-001 in WG5 document N1626.
For more information see:
Example Co-Array Fortran programs:
There are several papers describing co-array syntax and applications written using it. These do not necessarily conform to the latest language definition, but the changes required for conformance are relatively minor.
Co-Array Fortran is an example of a Partitioned Global Address Space language. Just as Co-Array Fortran is based on Fortran, UPC and Titanium are PGAS extensions to C and Java respectively. A Workshop on New Methods for Developing Peta-scalable Codes was held at Pittsburgh Supercomputing Center On May 3-4, 2004. It included presentations (available at the workshop web site) on Co-Array Fortran, UPC and Tritium. A recent Army HPC Research Center (AHPCRC) Bulletin (2004-Vol 14 No. 4) is devoted to this subject. AHPCRC and DARPA recently sponsored the Parallel Global Address Space (PGAS) Programming Models Conference. This was on partitioned PGAS languages, like Co-Array Fortran, and on new higher-level parallel languages, that provide a non-partitioned global view of objects, which are under development by DARPA's HPCS program. AHPCRC is also holding a hands-on Workshop on Co-Array Fortran from 24-26 October 2005. This is free but limited to 20 participants.
UPC (Unified Parallel C) is a parallel extension to C, similar in concept to Co-Array Fortran. See the book: "UPC: Distributed Shared Memory Programming"; by Tarek El-Ghazawi, William Carlson, Thomas Sterling, and Katherine Yelick; ISBN: 0-471-22048-5; Published by John Wiley and Sons - May, 2005.
Titanium is another Partitioned Global Address Space language, based on Java. It uses the same low level network layer, GASNet, as the Berkeley UPC compiler (one of several available UPC implementations). GASNet can also be used by Rice's Co-Array Fortran compiler.
Co-Array Fortran greatly simplifies SPMD parallel programming, but a typical single processor program will still require modification - perhaps at the algorithmic level. General references on parallel programming include:
These pages are maintained by Alan Wallcraft. Please send e-mail for more information, or to suggest additions/changes. Of particular interest are new links to programs or papers using Co-Array Fortran.