This is the mail archive of the
mailing list for the GCC project.
Re: [PATCH 4/6, OpenACC, libgomp] Async re-work, libgomp/target.c changes
- From: Jakub Jelinek <jakub at redhat dot com>
- To: Thomas Schwinge <thomas at codesourcery dot com>
- Cc: Chung-Lin Tang <cltang at codesourcery dot com>, gcc-patches at gcc dot gnu dot org
- Date: Thu, 6 Dec 2018 18:43:46 +0100
- Subject: Re: [PATCH 4/6, OpenACC, libgomp] Async re-work, libgomp/target.c changes
- References: <firstname.lastname@example.org> <email@example.com>
- Reply-to: Jakub Jelinek <jakub at redhat dot com>
On Thu, Dec 06, 2018 at 06:21:16PM +0100, Thomas Schwinge wrote:
> On Tue, 25 Sep 2018 21:11:24 +0800, Chung-Lin Tang <firstname.lastname@example.org> wrote:
> > Hi Jakub,
> > This part has changes to 'struct goacc_asyncqueue*' arguments to various
> > memory copying/mapping functions. To lessen the amount of code changes new 'gomp_map/unmap_vars_async'
> > functions names are used (with the non-async original names defined with the asyncqueue==NULL).
> Is that the way you'd like this to be done, or should instead that
> "struct goacc_asyncqueue *aq" parameter be added/passed through all the
> existing functions? (The latter would be my preference, actually.)
I'd prefer not to increase the amount of arguments where possible, because
many of the functions already have more arguments than can be passed in
registers. Could it be e.g. added into gomp_coalesce_buf which is already
Another option would be to use always_inline as C template if the OpenMP and
OpenACC needs diverge too much, then have simply small wrappers that just
call the always_inline function, in one case with the argument NULL or other
constant, in another one with whatever it has been called with.