Message ID | 87d1pl3dgd.fsf@hertz.schwinge.homeip.net |
---|---|
State | New |
Headers | show |
On Tue, Apr 19, 2016 at 04:01:06PM +0200, Thomas Schwinge wrote: > Two other solutions have been proposed in the past months: Chung-Lin's > patches with subject: "Adjust offload plugin interface for avoiding > deadlock on exit", later: "Resolve libgomp plugin deadlock on exit", > later: "Resolve deadlock on plugin exit" (still pending review/approval), > and Alexander's much smaller patch with subject: "libgomp plugin: make > cuMemFreeHost error non-fatal", > <http://news.gmane.org/find-root.php?message_id=%3C1458323327-9908-4-git-send-email-amonakov%40ispras.ru%3E>. > (Both of which I have not reviewed in detail.) Assuming that Chung-Lin's > patches are considered too invasive for gcc-6-branch, can we at least get > Alexander's patch committed to gcc-6-branch as well as on trunk, please? Yeah, Alex' patch is IMHO fine, even for gcc-6-branch. > --- libgomp/ChangeLog.gomp-nvptx > +++ libgomp/ChangeLog.gomp-nvptx > @@ -1,3 +1,7 @@ > +2016-03-11 Alexander Monakov <amonakov@ispras.ru> > + > + * plugin/plugin-nvptx.c (map_fini): Make cuMemFreeHost error non-fatal. > + > 2016-03-04 Alexander Monakov <amonakov@ispras.ru> > > * config/nvptx/bar.c: Remove wrong invocation of > diff --git libgomp/plugin/plugin-nvptx.c libgomp/plugin/plugin-nvptx.c > index adf57b1..4e44242 100644 > --- libgomp/plugin/plugin-nvptx.c > +++ libgomp/plugin/plugin-nvptx.c > @@ -135,7 +135,7 @@ map_fini (struct ptx_stream *s) > > r = cuMemFreeHost (s->h); > if (r != CUDA_SUCCESS) > - GOMP_PLUGIN_fatal ("cuMemFreeHost error: %s", cuda_error (r)); > + GOMP_PLUGIN_error ("cuMemFreeHost error: %s", cuda_error (r)); > } > > static void Jakub
On Tue, 19 Apr 2016, Thomas Schwinge wrote: > Well, I certainly had done at least some thinking before proposing this: > we're talking about the libgomp "fatal exit" function, called when > something has gone very wrong, and we're about to terminate the process, > because there's no hope to recover. By the way, this relates to something I wanted to bring up for a while now. The OpenMP spec does not talk about error conditions arising in well-formed programs due to resource exhaustion (OOM, in particular). My understanding is that an implementation always has a "way out": if e.g. it fails to allocate memory required for a thread, it could run with reduced parallelism. Ultimately the implementation can "fail gracefully" all the way back to running the program sequentially. Offloading makes that unclear due to how host fallbacks for target regions are observable (which I don't understand, and I hope we get a chance to discuss it), but is the above understanding generally correct? Today libgomp is clearly "trigger happy" to crash the process when something goes slightly wrong, but was graceful failure ever considered as a design [non-]goal? In that light, can a general policy of avoiding aborting the program be in place, and should plugin authors work towards introducing fallback paths instead of [over-]using GOMP_PLUGIN_fatal? Thanks. Alexander
On Tue, 19 Apr 2016, Jakub Jelinek wrote: > On Tue, Apr 19, 2016 at 04:01:06PM +0200, Thomas Schwinge wrote: > > Two other solutions have been proposed in the past months: Chung-Lin's > > patches with subject: "Adjust offload plugin interface for avoiding > > deadlock on exit", later: "Resolve libgomp plugin deadlock on exit", > > later: "Resolve deadlock on plugin exit" (still pending review/approval), > > and Alexander's much smaller patch with subject: "libgomp plugin: make > > cuMemFreeHost error non-fatal", > > <http://news.gmane.org/find-root.php?message_id=%3C1458323327-9908-4-git-send-email-amonakov%40ispras.ru%3E>. > > (Both of which I have not reviewed in detail.) Assuming that Chung-Lin's > > patches are considered too invasive for gcc-6-branch, can we at least get > > Alexander's patch committed to gcc-6-branch as well as on trunk, please? > > Yeah, Alex' patch is IMHO fine, even for gcc-6-branch. Applied to both. Thanks. Alexander
diff --git libgomp/ChangeLog.gomp-nvptx libgomp/ChangeLog.gomp-nvptx index 7eefe0b..6bd9e5e 100644 --- libgomp/ChangeLog.gomp-nvptx +++ libgomp/ChangeLog.gomp-nvptx @@ -1,3 +1,7 @@ +2016-03-11 Alexander Monakov <amonakov@ispras.ru> + + * plugin/plugin-nvptx.c (map_fini): Make cuMemFreeHost error non-fatal. + 2016-03-04 Alexander Monakov <amonakov@ispras.ru> * config/nvptx/bar.c: Remove wrong invocation of diff --git libgomp/plugin/plugin-nvptx.c libgomp/plugin/plugin-nvptx.c index adf57b1..4e44242 100644 --- libgomp/plugin/plugin-nvptx.c +++ libgomp/plugin/plugin-nvptx.c @@ -135,7 +135,7 @@ map_fini (struct ptx_stream *s) r = cuMemFreeHost (s->h); if (r != CUDA_SUCCESS) - GOMP_PLUGIN_fatal ("cuMemFreeHost error: %s", cuda_error (r)); + GOMP_PLUGIN_error ("cuMemFreeHost error: %s", cuda_error (r)); } static void