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

Reply via email to