From: Julian Brown Date: Mon, 5 Aug 2019 22:05:58 +0000 (-0700) Subject: [og9] Use a single worker for OpenACC on AMD GCN X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=bdb426046046cbdb08fef00ae96a801ad94af8b7;p=thirdparty%2Fgcc.git [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) --- diff --git a/gcc/ChangeLog.omp b/gcc/ChangeLog.omp index 0caa1cd14013..84d805116030 100644 --- a/gcc/ChangeLog.omp +++ b/gcc/ChangeLog.omp @@ -1,3 +1,10 @@ +2019-08-08 Julian Brown + + * 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 * 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 9f73fc8161ad..f3f112d95a9d 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 2fd3996edbad..90d35f42e570 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 62c56e3bf92d..2279545f3618 100644 --- a/libgomp/ChangeLog.omp +++ b/libgomp/ChangeLog.omp @@ -1,3 +1,8 @@ +2019-08-08 Julian Brown + + * plugin/plugin-gcn.c (gcn_exec): Use 1 for the default number of + workers. + 2019-08-08 Julian Brown * plugin/configfrag.ac (amdgcn): Set tgt_plugin. diff --git a/libgomp/plugin/plugin-gcn.c b/libgomp/plugin/plugin-gcn.c index 6eaae66c1a91..a41568b33067 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",