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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [Patch, Fortran] Add coarray communication support to the trunk (coindex variables)


Dear Tobias and Alessandro,

Well what can I say?  The patch is something of a tour de force!
Sandro, questo à assolutamente meraviglioso. Molte grazie da tutti
noi.

I have done nothing to check the functionality of the patch.  However,
I have checked the conformance with coding standards and that it is
well and truly insulated from the rest of gfortran by the coarray
option.

OK for trunk

Once again many thanks for the patch.

Paul


On 17 June 2014 08:28, Tobias Burnus <burnus@net-b.de> wrote:
> This patch add the first coarray communication support to the trunk
> (ignoring the co_sum/co_min/co_max support, which was recently merged).
> [Note: In terms of the library this is still libcaf_single, but see below.]
>
> The patch is based on my work on the fortran-caf branch, but has a slightly
> modified ABI. The patch should support most communications, but it is not
> complete. I intent to submit soon a patch which irons some wrinkles.
>
> In particular, this patch adds three library calls to handle coindexed
> communication: Assignment to a coindex variable (caf_send), a coindexed
> expression (caf_expression) and assigning a coindexed variable to a
> coindexed variable (caf_sendget). The coarray is identified by a token
> (opaque object provided by the coarray library), an offset to that base
> address, an image index and an array descriptor for the coarray, which is
> also used for scalars â and which has the value of the whole array for
> vector subscripts. Additionally, one passes a "kind" variable as extra
> argument as the current array descriptor cannot destinguish a len=1 kind=4
> from a len=4 kind=1 character string. And for vector subscripts, the
> subscripts are passed as additional argument.
>
> For assignments, the library is supposed to handle padding/trimming of
> strings and type conversion (e.g. "cmplx_caf(:)[i] = int_array") as well as
> "array = scalar" assignments.
>
> The following is left to be done as follow up:
>
> * Support of vector subscripts with assumed-size variables: To be tested;
> might need the new array descriptor or some similar work around â or just a
> test case.
> * The library libcaf_single supports padding/trimming of strings but still
> lacks the support for type conversion and vector subscripts.
> * Adding an ABI documentation
> * There are still some issues with regards to polymorphic coarrays, in
> particular with passing them as dummy arguments and in ASSOCIATE/SELECT
> TYPE, but presumably also with using them in coindexed expressions.
>
> And as bigger item: Allocatable components of coarrays are not supported â
> not is the access to pointer or allocatable components (part refs);
> currently, there is no compile time diagnostic for it.
>
>
> Additionally, I have remove the vector subscript preparations from the
> co_sum/min/max as it does not make much sense for those. And I added a
> collective test case, which I found on my hard disk.
>
> Build and regtested. OK for the trunk?
>
> Tobias
>
> PS: Additional missing bits, not listed above: Locking and CRITICAL and
> atomics for Fortran 2008. And for TS18508 co_broadcast and co_reduce, the
> atomics extensions, teams, events and error recovery.



-- 
The knack of flying is learning how to throw yourself at the ground and miss.
       --Hitchhikers Guide to the Galaxy


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]