[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