aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJulian Brown <julian@codesourcery.com>2019-08-05 15:05:58 -0700
committerThomas Schwinge <thomas@codesourcery.com>2020-03-03 12:50:41 +0100
commitbdb426046046cbdb08fef00ae96a801ad94af8b7 (patch)
treeee41f59ccda35d9c44ea7df1f4c813d5472c9971
parent1dcedb6c849d5afa7213c14d021426611faddb05 (diff)
downloadgcc-bdb426046046cbdb08fef00ae96a801ad94af8b7.zip
gcc-bdb426046046cbdb08fef00ae96a801ad94af8b7.tar.gz
gcc-bdb426046046cbdb08fef00ae96a801ad94af8b7.tar.bz2
[og9] Use a single worker for OpenACC on AMD GCN
gcc/ * config/gcn/gcn.c (gcn_goacc_validate_dims): Ensure flag_worker_partitioning is not set. (TARGET_GOACC_WORKER_PARTITIONING): Remove target hook definition. * config/gcn/gcn.opt (macc-experimental-workers): Default to off. libgomp/ * plugin/plugin-gcn.c (gcn_exec): Use 1 for the default number of workers. (cherry picked from openacc-gcc-9-branch commit bae2ce6026b3fe06b86bde41f1f0ee4a642755cc)
-rw-r--r--gcc/ChangeLog.omp7
-rw-r--r--gcc/config/gcn/gcn.c4
-rw-r--r--gcc/config/gcn/gcn.opt2
-rw-r--r--libgomp/ChangeLog.omp5
-rw-r--r--libgomp/plugin/plugin-gcn.c4
5 files changed, 18 insertions, 4 deletions
diff --git a/gcc/ChangeLog.omp b/gcc/ChangeLog.omp
index 0caa1cd..84d8051 100644
--- a/gcc/ChangeLog.omp
+++ b/gcc/ChangeLog.omp
@@ -1,3 +1,10 @@
+2019-08-08 Julian Brown <julian@codesourcery.com>
+
+ * config/gcn/gcn.c (gcn_goacc_validate_dims): Ensure
+ flag_worker_partitioning is not set.
+ (TARGET_GOACC_WORKER_PARTITIONING): Remove target hook definition.
+ * config/gcn/gcn.opt (macc-experimental-workers): Default to off.
+
2019-07-31 Julian Brown <julian@codesourcery.com>
* builtin-types.def (BT_FN_VOID_INT_INT_OMPFN_SIZE_PTR_PTR_PTR_VAR):
diff --git a/gcc/config/gcn/gcn.c b/gcc/config/gcn/gcn.c
index 9f73fc8..f3f112d 100644
--- a/gcc/config/gcn/gcn.c
+++ b/gcc/config/gcn/gcn.c
@@ -4662,6 +4662,8 @@ gcn_goacc_validate_dims (tree decl, int dims[], int fn_level,
/* FIXME: remove -facc-experimental-workers when they're ready. */
int max_workers = flag_worker_partitioning ? 16 : 1;
+ gcc_assert (!flag_worker_partitioning);
+
/* The vector size must appear to be 64, to the user, unless this is a
SEQ routine. The real, internal value is always 1, which means use
autovectorization, but the user should not see that. */
@@ -6038,8 +6040,6 @@ print_operand (FILE *file, rtx x, int code)
#define TARGET_GOACC_REDUCTION gcn_goacc_reduction
#undef TARGET_GOACC_VALIDATE_DIMS
#define TARGET_GOACC_VALIDATE_DIMS gcn_goacc_validate_dims
-#undef TARGET_GOACC_WORKER_PARTITIONING
-#define TARGET_GOACC_WORKER_PARTITIONING true
#undef TARGET_HARD_REGNO_MODE_OK
#define TARGET_HARD_REGNO_MODE_OK gcn_hard_regno_mode_ok
#undef TARGET_HARD_REGNO_NREGS
diff --git a/gcc/config/gcn/gcn.opt b/gcc/config/gcn/gcn.opt
index 2fd3996..90d35f42 100644
--- a/gcc/config/gcn/gcn.opt
+++ b/gcc/config/gcn/gcn.opt
@@ -62,7 +62,7 @@ Target Report RejectNegative Var(flag_bypass_init_error)
bool flag_worker_partitioning = false
macc-experimental-workers
-Target Report Var(flag_worker_partitioning) Init(1)
+Target Report Var(flag_worker_partitioning) Init(0)
int stack_size_opt = -1
diff --git a/libgomp/ChangeLog.omp b/libgomp/ChangeLog.omp
index 62c56e3..2279545 100644
--- a/libgomp/ChangeLog.omp
+++ b/libgomp/ChangeLog.omp
@@ -1,5 +1,10 @@
2019-08-08 Julian Brown <julian@codesourcery.com>
+ * plugin/plugin-gcn.c (gcn_exec): Use 1 for the default number of
+ workers.
+
+2019-08-08 Julian Brown <julian@codesourcery.com>
+
* plugin/configfrag.ac (amdgcn): Set tgt_plugin.
* testsuite/lib/libgomp.exp (offload_target_to_openacc_device_type):
Add AMD GCN support.
diff --git a/libgomp/plugin/plugin-gcn.c b/libgomp/plugin/plugin-gcn.c
index 6eaae66..a41568b 100644
--- a/libgomp/plugin/plugin-gcn.c
+++ b/libgomp/plugin/plugin-gcn.c
@@ -3233,8 +3233,10 @@ 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] = 64; /* Gangs. */
- if (dims[1] == 0) dims[1] = 16; /* Workers. */
+ if (dims[1] == 0) 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",