This is the mail archive of the fortran@gcc.gnu.org mailing list for the GNU Fortran project.

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

From: Tobias Burnus <burnus at net-b dot de>

To: gfortran <fortran at gcc dot gnu dot org>

Date: Thu, 21 Aug 2014 20:14:09 +0200

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

Authentication-results: sourceware.org; auth=none

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

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

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

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.