I got as far as applying and regression testing version 2. I have queried
around for others to look over the patch. I will scan this one.

Since you are the expert in this area, we may just have you push and let
the pieces fall out.

I will get back to you later today.

Jerry

On Fri, Dec 20, 2024, 4:37 AM Andre Vehreschild <ve...@gmx.de> wrote:

> Hi all,
>
> pinging again.
>
> Please note, that attached patch is a slightly updated version.
>
> Regtests ok on x86_64-pc-linux-gnu. Ok for mainline?
>
> Regards,
>         Andre
>
> On Mon, 16 Dec 2024 10:58:22 +0100
> Andre Vehreschild <ve...@gmx.de> wrote:
>
> > PING!
> >
> > On Fri, 6 Dec 2024 19:10:08 +0100
> > Andre Vehreschild <ve...@gmx.de> wrote:
> >
> > > Hi all,
> > >
> > > I had to dive deeply into the issue with handling allocatable
> components in
> > > derived types and to find a future proof solution. I hope do have
> found a
> > > universal and flexible one now:
> > >
> > > For each allocatable (or pointer) component in a derived type a coarray
> > > token is required. While this is quite easy for the current compilation
> > > unit, it is very difficult to do for arbitrary compilation units or
> when
> > > one gets libraries that are not aware of coarray's needs. The approach
> this
> > > patch now implements is to delegate the evaluation of a reference into
> a
> > > coarray into a separate access routine. This routine is present on
> every
> > > image, because it is generated by the compiler at the time it knows
> that a
> > > coarray access is done. With external compilation units or libraries
> this
> > > solves the access issue, because each image knows how to access its own
> > > objects, but does not need a coarray token for allocatable (or pointer)
> > > components anymore. The access on the remote image's object is done by
> the
> > > remote image itself (for the MPI implementation in a separate thread).
> > > Therefore it knows about the bounds of arrays, allocation and
> association
> > > state of components and can handle those.
> > >
> > > Furthermore is this approach faster, because it has O(1) complexity
> > > regarding the communication. The old approach was O(N) where N is the
> > > number of allocatable/pointer components + array descriptors on the
> path of
> > > the access. The new approach sends a set of parameters to the remote
> image
> > > and gets the desired data in return.
> > >
> > > At the moment the patch handles only getting of data from a remote
> image. It
> > > is split into two patchsets. The first one does some preparatory clean
> up,
> > > like stopping to add caf_get calls into the expression tree and
> removing
> > > them afterwards again, where they are in the way.
> > >
> > > The second patch is then doing the access routine creation.
> Unfortunately is
> > > this the longer patch. I have also updated the documentation of the caf
> > > API. I hope to not have overlooked something.
> > >
> > > This is the first part of a series to rework all coarray access
> routines to
> > > use the new approach and then remove the deprecated calls. This makes
> things
> > > clearer and easier to maintain, although the tree-dump now presents
> some
> > > more generated routines, which might look odd.
> > >
> > > Bootstrapped and regtested ok on x86_64-pc-linux-gnu / Fedora 39 and
> 41. Ok
> > > for mainline?
> > >
> > > I will continue working on the coarray stuff and fix upcoming bugs in
> the
> > > future.
> > >
> > > Regards,
> > >     Andre
> > > --
> > > Andre Vehreschild * Email: vehre ad gmx dot de
> >
> >
> > --
> > Andre Vehreschild * Email: vehre ad gmx dot de
>
>
> --
> Andre Vehreschild * Email: vehre ad gmx dot de
>

Reply via email to