On 26/01/2024 12:06, Jakub Jelinek wrote:
On Fri, Jan 26, 2024 at 01:00:28PM +0100, Richard Biener wrote:
The following avoids registering unsupported GCN offload devices
when iterating over available ones.  With a Zen4 desktop CPU
you will have an IGPU (unspported) which will otherwise be made
available.  This causes testcases like
libgomp.c-c++-common/non-rect-loop-1.c which iterate over all
decives to FAIL.

I'll run a bootstrap with both pending changes and will do
another round of full libgomp testing with this.

OK if that succeeds?

Thanks,
Richard.

libgomp/
        * plugin/plugin-gcn.c (suitable_hsa_agent_p): Filter out
        agents with unsupported ISA.
---
  libgomp/plugin/plugin-gcn.c | 9 +++++++++
  1 file changed, 9 insertions(+)

diff --git a/libgomp/plugin/plugin-gcn.c b/libgomp/plugin/plugin-gcn.c
index 588358bbbf9..88ed77ff049 100644
--- a/libgomp/plugin/plugin-gcn.c
+++ b/libgomp/plugin/plugin-gcn.c
@@ -1427,6 +1427,8 @@ init_hsa_runtime_functions (void)
  #undef DLSYM_FN
  }
+static gcn_isa isa_code(const char *isa);

Space before ( please.

+
  /* Return true if the agent is a GPU and can accept of concurrent submissions
     from different threads.  */
@@ -1443,6 +1445,13 @@ suitable_hsa_agent_p (hsa_agent_t agent)
    switch (device_type)
      {
      case HSA_DEVICE_TYPE_GPU:
+      {
+       char name[64];
+       if ((hsa_fns.hsa_agent_get_info_fn (agent, HSA_AGENT_INFO_NAME, name)
+            != HSA_STATUS_SUCCESS)
+           || isa_code (name) == EF_AMDGPU_MACH_UNSUPPORTED)
+         return false;
+      }
        break;
      case HSA_DEVICE_TYPE_CPU:
        if (!support_cpu_devices)

Otherwise it looks reasoanble to me, but let's see what Andrew thinks.

'n' before 'a', please. ;-)

I think we need at least a GCN_DEBUG message when we ignore a GPU device. Possibly gomp_debug also.

Andrew

Reply via email to