https://gcc.gnu.org/g:84fc8f4f3263d66503663bb784b58b49dd714dd9

commit r14-9397-g84fc8f4f3263d66503663bb784b58b49dd714dd9
Author: Thomas Schwinge <tschwi...@baylibre.com>
Date:   Thu Mar 7 15:51:54 2024 +0100

    GCN: The original meaning of 'GCN_SUPPRESS_HOST_FALLBACK' isn't applicable 
(non-shared memory system)
    
    'GCN_SUPPRESS_HOST_FALLBACK' originated as 'HSA_SUPPRESS_HOST_FALLBACK' in 
the
    libgomp HSA plugin, where the idea was -- in my understanding -- that you
    wouldn't have device code available for all functions that may be called, 
and
    in that case transparently (shared memory system!) do host-fallback 
execution.
    Or, with 'HSA_SUPPRESS_HOST_FALLBACK' set, you'd get those diagnosed.
    
    This has then been copied into the libgomp GCN plugin as
    'GCN_SUPPRESS_HOST_FALLBACK'.  However, the original meaning isn't 
applicable
    for the libgomp GCN plugin anymore: we assume that we're generating device 
code
    for all relevant functions, and we're implementing a non-shared memory 
system,
    where we cannot transparently do host-fallback execution for individual
    functions.
    
    However, 'GCN_SUPPRESS_HOST_FALLBACK' has gained an additional meaning, to
    enforce a fatal error in case that 'libhsa-runtime64.so.1' can't be 
dynamically
    loaded; keep that meaning.
    
            libgomp/
            * plugin/plugin-gcn.c (GOMP_OFFLOAD_can_run): Don't consider
            'GCN_SUPPRESS_HOST_FALLBACK' anymore (assume always-'true').
            (init_hsa_context): Adjust 'GCN_SUPPRESS_HOST_FALLBACK' error
            message.

Diff:
---
 libgomp/plugin/plugin-gcn.c | 14 +++++---------
 1 file changed, 5 insertions(+), 9 deletions(-)

diff --git a/libgomp/plugin/plugin-gcn.c b/libgomp/plugin/plugin-gcn.c
index 4b7ab5e83c5..7e141a85f31 100644
--- a/libgomp/plugin/plugin-gcn.c
+++ b/libgomp/plugin/plugin-gcn.c
@@ -1524,9 +1524,11 @@ init_hsa_context (void)
   init_environment_variables ();
   if (!init_hsa_runtime_functions ())
     {
-      GCN_WARNING ("Run-time could not be dynamically opened\n");
+      const char *msg = "Run-time could not be dynamically opened";
       if (suppress_host_fallback)
-       GOMP_PLUGIN_fatal ("GCN host fallback has been suppressed");
+       GOMP_PLUGIN_fatal ("%s\n", msg);
+      else
+       GCN_WARNING ("%s\n", msg);
       return false;
     }
   status = hsa_fns.hsa_init_fn ();
@@ -3855,15 +3857,9 @@ GOMP_OFFLOAD_can_run (void *fn_ptr)
 
   init_kernel (kernel);
   if (kernel->initialization_failed)
-    goto failure;
+    GOMP_PLUGIN_fatal ("kernel initialization failed");
 
   return true;
-
-failure:
-  if (suppress_host_fallback)
-    GOMP_PLUGIN_fatal ("GCN host fallback has been suppressed");
-  GCN_WARNING ("GCN target cannot be launched, doing a host fallback\n");
-  return false;
 }
 
 /* Allocate memory on device N.  */

Reply via email to