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