public inbox for gcc-cvs@sourceware.org
help / color / mirror / Atom feed
* [gcc r12-1292] [GCN] Fix run-time variable 'num_workers'
@ 2021-06-08 10:04 Thomas Schwinge
  0 siblings, 0 replies; only message in thread
From: Thomas Schwinge @ 2021-06-08 10:04 UTC (permalink / raw)
  To: gcc-cvs

https://gcc.gnu.org/g:30656822b3792712c7a69fe1a0a79739f8f29abc

commit r12-1292-g30656822b3792712c7a69fe1a0a79739f8f29abc
Author: Thomas Schwinge <thomas@codesourcery.com>
Date:   Sat Jun 5 22:39:21 2021 +0200

    [GCN] Fix run-time variable 'num_workers'
    
    ... which currently has *not* been forced to 'num_workers (1)'.
    
    In addition to the testcases modified here, this also fixes:
    
        FAIL: libgomp.oacc-c/../libgomp.oacc-c-c++-common/mode-transitions.c -DACC_DEVICE_TYPE_radeon=1 -DACC_MEM_SHARED=0 -foffload=amdgcn-amdhsa  -O0  execution test
        [Etc.]
    
        mode-transitions.exe: [...]/libgomp.oacc-c-c++-common/mode-transitions.c:702: t17: Assertion `arr_b[i] == (i ^ 31) * 8' failed.
    
            libgomp/
            * plugin/plugin-gcn.c (gcn_exec): Force 'num_workers (1)'
            unconditionally.
            * testsuite/libgomp.oacc-c-c++-common/acc_prof-kernels-1.c:
            Update.
            * testsuite/libgomp.oacc-c-c++-common/parallel-dims.c: Likewise.
            * testsuite/libgomp.oacc-c-c++-common/routine-wv-2.c: Likewise.

Diff:
---
 libgomp/plugin/plugin-gcn.c                                      | 5 ++---
 libgomp/testsuite/libgomp.oacc-c-c++-common/acc_prof-kernels-1.c | 4 +---
 libgomp/testsuite/libgomp.oacc-c-c++-common/parallel-dims.c      | 5 +++--
 libgomp/testsuite/libgomp.oacc-c-c++-common/routine-wv-2.c       | 3 ++-
 4 files changed, 8 insertions(+), 9 deletions(-)

diff --git a/libgomp/plugin/plugin-gcn.c b/libgomp/plugin/plugin-gcn.c
index 8aab708b0ef..cfed42a2d4d 100644
--- a/libgomp/plugin/plugin-gcn.c
+++ b/libgomp/plugin/plugin-gcn.c
@@ -3041,10 +3041,9 @@ gcn_exec (struct kernel_info *kernel, size_t mapnum, void **hostaddrs,
      problem size, so let's do a reasonable number of single-worker gangs.
      64 gangs matches a typical Fiji device.  */
 
-  /* NOTE: Until support for middle-end worker partitioning is merged, use 1
-     for the default number of workers.  */
   if (dims[0] == 0) dims[0] = get_cu_count (kernel->agent); /* Gangs.  */
-  if (dims[1] == 0) dims[1] = 1;  /* Workers.  */
+  /* NOTE: Until support for middle-end worker partitioning is merged, force 'num_workers (1)'.  */
+  if (/*TODO dims[1] == 0*/ true) dims[1] = 1;  /* Workers.  */
 
   /* The incoming dimensions are expressed in terms of gangs, workers, and
      vectors.  The HSA dimensions are expressed in terms of "work-items",
diff --git a/libgomp/testsuite/libgomp.oacc-c-c++-common/acc_prof-kernels-1.c b/libgomp/testsuite/libgomp.oacc-c-c++-common/acc_prof-kernels-1.c
index 7f74ee922b7..6c136c26c93 100644
--- a/libgomp/testsuite/libgomp.oacc-c-c++-common/acc_prof-kernels-1.c
+++ b/libgomp/testsuite/libgomp.oacc-c-c++-common/acc_prof-kernels-1.c
@@ -94,9 +94,7 @@ static void cb_enqueue_launch_start (acc_prof_info *prof_info, acc_event_info *e
   if (num_workers < 1)
     assert (event_info->launch_event.num_workers >= 1);
   /* GCN currently enforces 'num_workers (1)'.  */
-  else if (acc_device_type == acc_device_radeon
-	   /*TODO ... just not in the "Parallelism dimensions: variable" case.  */
-	   && /*TODO*/ num_gangs != 22)
+  else if (acc_device_type == acc_device_radeon)
     assert (event_info->launch_event.num_workers == 1);
   else
     {
diff --git a/libgomp/testsuite/libgomp.oacc-c-c++-common/parallel-dims.c b/libgomp/testsuite/libgomp.oacc-c-c++-common/parallel-dims.c
index 974e1504534..fe0dacd5aac 100644
--- a/libgomp/testsuite/libgomp.oacc-c-c++-common/parallel-dims.c
+++ b/libgomp/testsuite/libgomp.oacc-c-c++-common/parallel-dims.c
@@ -313,8 +313,9 @@ int main ()
 	}
       else if (acc_on_device (acc_device_radeon))
 	{
-	  /* The GCC GCN back end is limited to num_workers (16).  */
-	  workers_actual = 16;
+	  /* The GCC GCN back end is limited to num_workers (16).
+	     Temporarily set this to 1 until multiple workers are permitted. */
+	  workers_actual = 1; // 16;
 	}
       else
 	__builtin_abort ();
diff --git a/libgomp/testsuite/libgomp.oacc-c-c++-common/routine-wv-2.c b/libgomp/testsuite/libgomp.oacc-c-c++-common/routine-wv-2.c
index a03a2c2b163..624ec24e437 100644
--- a/libgomp/testsuite/libgomp.oacc-c-c++-common/routine-wv-2.c
+++ b/libgomp/testsuite/libgomp.oacc-c-c++-common/routine-wv-2.c
@@ -6,7 +6,8 @@
 #include <gomp-constants.h>
 
 #ifdef ACC_DEVICE_TYPE_radeon
-#define NUM_WORKERS 16
+/* Temporarily set this to 1 until multiple workers are permitted.  */
+#define NUM_WORKERS 1
 #define NUM_VECTORS 1
 #else
 #define NUM_WORKERS 16


^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2021-06-08 10:04 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-06-08 10:04 [gcc r12-1292] [GCN] Fix run-time variable 'num_workers' Thomas Schwinge

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).