Hi,

On Fri, Aug 14, 2015 at 03:19:26PM +0200, Ilya Verbin wrote:
> 2015-08-14 11:47 GMT+02:00 Thomas Schwinge <tho...@codesourcery.com>:
> > On Wed, 5 Aug 2015 18:09:04 +0300, Ilya Verbin <iver...@gmail.com> wrote:
> >> > > @@ -1095,6 +1092,8 @@ GOMP_target (int device, void (*fn) (void *), 
> >> > > const void *unused,
> >> > >      return gomp_target_fallback (fn, hostaddrs);
> >> > >
> >> > >    void *fn_addr = gomp_get_target_fn_addr (devicep, fn);
> >> > > +  if (fn_addr == NULL)
> >> > > +    return gomp_target_fallback (fn, hostaddrs);
> >
> > Is that reliable?  Consider the following scenario, with f1 and f2
> > implemented in separate TUs:
> >
> >     #pragma omp target data [map clauses]
> >     {
> >       f1([...]);
> >       f2([...]);
> >     }
> >
> > Consider that in f1 we have a OpenMP target region with offloading data
> > available, and in f2 we have a OpenMP target region without offloading
> > data available.  In this case, the GOMP_target in f1 will execute on the
> > offloading target, but the GOMP_target in f2 will resort to host fallback
> > -- and we then likely have data inconsistencies, as the data specified by
> > the map clauses is not synchronized between host and device.
> >
> > Admittedly, this is user error (inconsistent set of offloading functions
> > available -- need either all, or none), but in such a scenario probably
> > we should be doing a better job (at detecting this).  (Note, I'm not sure
> > whether my current patch actually does any better.)  ;-)
> 
> You're right. That's why I didn't send this patch for review yet.
> My current plan is as follows:
> * Use this approach for architectures with shared memory, since it
> allows mixing host and target functions.

Great, please keep me posted on these changes.

Thanks!

Martin

> * For non-shared memory, at the first splay tree lookup:
> ** If target fn is not found, run the whole program in host-fallback mode.
> ** If it's found, then all target fns must exist. I.e. if some
> tgt_addr (not first) is NULL, then libgomp will issue an error as it
> does now.
> 
>   -- Ilya

Reply via email to