libgomp: Enforce 1-thread limit in subteams
authorAndrew Stubbs <ams@codesourcery.com>
Tue, 29 Sep 2020 09:15:04 +0000 (10:15 +0100)
committerAndrew Stubbs <ams@codesourcery.com>
Wed, 30 Sep 2020 16:37:31 +0000 (17:37 +0100)
Accelerators with fixed thread-counts will break if nested teams are expected
to have multiple threads each.

libgomp/ChangeLog:

2020-09-29  Andrew Stubbs  <ams@codesourcery.com>

* parallel.c (gomp_resolve_num_threads): Ignore nest_var on nvptx
and amdgcn targets.

libgomp/parallel.c

index 2423f11f44ab2b9f3f8fc58d98a05da3f6754d5a..2fe4f573a32e62be3f04092a3b7e1a7988ca785f 100644 (file)
@@ -48,7 +48,14 @@ gomp_resolve_num_threads (unsigned specified, unsigned count)
 
   if (specified == 1)
     return 1;
-  else if (thr->ts.active_level >= 1 && !icv->nest_var)
+
+  if (thr->ts.active_level >= 1
+  /* Accelerators with fixed thread counts require this to return 1 for
+     nested parallel regions.  */
+#if !defined(__AMDGCN__) && !defined(__nvptx__)
+      && !icv->nest_var
+#endif
+      )
     return 1;
   else if (thr->ts.active_level >= gomp_max_active_levels_var)
     return 1;