Avoid registering unsupported OMP offload devices

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.

libgomp/
	* plugin/plugin-gcn.c (suitable_hsa_agent_p): Filter out
	agents with unsupported ISA.
This commit is contained in:
Richard Biener
2024-01-26 12:57:10 +01:00
parent 209ed06c3a
commit c34ab549d8

View File

@@ -1427,6 +1427,8 @@ init_hsa_runtime_functions (void)
#undef DLSYM_FN
}
static gcn_isa isa_code (const char *isa);
/* Return true if the agent is a GPU and can accept of concurrent submissions
from different threads. */
@@ -1443,6 +1445,18 @@ suitable_hsa_agent_p (hsa_agent_t agent)
switch (device_type)
{
case HSA_DEVICE_TYPE_GPU:
{
char name[64];
hsa_status_t status
= hsa_fns.hsa_agent_get_info_fn (agent, HSA_AGENT_INFO_NAME, name);
if (status != HSA_STATUS_SUCCESS
|| isa_code (name) == EF_AMDGPU_MACH_UNSUPPORTED)
{
GCN_DEBUG ("Ignoring unsupported agent '%s'\n",
status == HSA_STATUS_SUCCESS ? name : "invalid");
return false;
}
}
break;
case HSA_DEVICE_TYPE_CPU:
if (!support_cpu_devices)