OpenCoarrays project / Multi-image coarray support in GCC/gfortran 5

Tobias Burnus burnus@net-b.de
Thu Aug 21 18:14:00 GMT 2014


ANNOUNCEMENT

The work of Alessandro Fanfarillo (library) and Tobias Burnus (mostly 
compiler) has resulted in multi-image coarray support in GCC's Fortran 
compiler (gfortran) and in a set of libraries implementing the transport 
layer for coarray communication.

The compiler work is part of the GCC 5 (previously known as 4.10), 
scheduled to be released in Spring 2015. The developer version (GCC 
trunk) is available as source code or as binary at least for x86/x86-64 
for Linux (nightly build), MinGW/MinGW-64 and MacPorts (snapshot). See 
https://gcc.gnu.org/wiki/GFortranBinaries

For the transport-layer libraries, see http://opencoarrays.org and its 
forum/mailing list at https://groups.google.com/forum/#!forum/opencoarrays

OpenCoarrays is an open-source software project for developing, porting, 
and tuning transport layers that support coarray Fortran compilers. The 
above web page includes a link to a public OpenCoarrays repository. The 
current version is considered experimental with limited documentation 
and build infrastructure. It does have extensive integration tests in 
benchmarks, scientific applications, and application kernels. The 
library is available under the three-clause BSD license.

On the library side, the MPI version has the widest coverage of the 
coarray features; it is the easiest to install and use.  It requires at 
least a standard MPI-2.0 implementation, an MPI-3.0 implementation is 
preferable.  It also the most updated version and it is intended as 
default version for the coarray support in gfortran.

OpenCoarrays provides two more libraries based on GASNet and ARMCI, 
respectively. The GASNet version is provided as an expert version. 
Currently, it is experimental and some of the coarray features provided 
by the MPI version are not implemented yet.  The ARMCI version is a 
draft and it does not provide reliable communication support. Libraries 
using other transport layers might be added in the future.

Support:

Coarray support in the compiler: Full Fortran 2008 coarray support and 
support of all atomics intrinsics and the co_sum/co_min/co_max 
collectives proposed for inclusion in the Fortran 2015 standard (see 
latest draft Technical Specification 
TS18508,ftp://ftp.nag.co.uk/sc22wg5/N2001-N2050/N2007.pdf)

However, the following of the Fortran 2008 revision is not yet working 
in the compiler:
* Locking is unimplemented except for the working CRITICAL.
* Coindexed access to allocatable and pointer components of coarrays is 
not implemented.
* Coindexed array access to scalar components of coarrays will not work 
("caf(:)[i]%scalar").
* ASSOCIATE and SELECT TYPE won't work with nonallocatable coarray dummy 
arguments
* Vector subscripts and numeric type conversion is implemented but 
untested - and, hence, probably will have some bugs
See also https://gcc.gnu.org/wiki/Coarray

For the implementation status of the library, see 
https://bitbucket.org/sourceryinstitute/opencoarrays/raw/master/STATUS

Alessandro expects to present a paper at PGAS 2014, and a poster at 
ACMSRC at PACT 14 - and acknowledges the support as Google Summer of 
Code project, to CINECA, UCAR/NCAR and NERSC.



More information about the Fortran mailing list