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.
Jakub