[J3] Coarrays + CO_REDUCE and (polymorphic) allocatable components
Bill Long
longb at cray.com
Thu Mar 18 21:45:32 UTC 2021
The restrictions on the OPERATOR function - that it be PURE - have side-effect limitations on its arguments that might cover some of your issues. For example.
"The function result of a pure function shall not be both polymorphic and allocatable, or have a polymorphic allocatable ultimate component.”
Cheers,
Bill
> On Mar 18, 2021, at 6:36 AM, Tobias Burnus via J3 <j3 at mailman.j3-fortran.org> wrote:
>
> Hi all,
>
> I was wondering whether the following is valid:
>
> type t
> integer, allocatable :: A(:)
> type(t), allocatable :: B
> class(*), allocatable :: C
> end type t
>
> type(t) :: var[*]
>
> ...
> call co_reduce(var, my_red_fn)
>
> At a glance, I could not find anything which states that
> this is invalid, but I note that for a distributed-memory
> implementation, the CO_REDUCE has to remotely access
> var[i]%A and var[i]%B
> before calling 'my_red_fn' locally – and especially
> resolving the dynamic type of 'B' might be difficult.
>
> And worse is the part about distributing the data back to
> the result_image or all images, in particular if the
> shape/dynamic type does not match.
>
> For data-ref, there is:
>
> C917 (R911) Except as an actual argument to an
> intrinsic inquiry function or as the designator in a
> type parameter inquiry, a data-ref shall not be a
> coindexed object that has a polymorphic allocatable
> potential subobject component
>
> C918 Except as an actual argument to an intrinsic
> inquiry function or as the designator in a type parameter
> inquiry, if the rightmost part-ref is polymorphic,
> no other part-ref shall be coindexed.
>
> And for CO_REDUCE, there is: "'A' shall not be polymorphic."
>
>
> Is this intended to be valid? Did I miss some constraint?
> Or was this an oversight?
>
>
> Tobias
>
Bill Long longb at hpe.com
Engineer/Master , Fortran Technical Support & voice: 651-605-9024
Bioinformatics Software Development fax: 651-605-9143
Hewlett Packard Enterprise/ 2131 Lindau Lane/ Suite 1000/ Bloomington, MN 55425
More information about the J3
mailing list