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