[nvptx, offloading] Determine default workers at runtime
authorCesar Philippidis <cesar@codesourcery.com>
Mon, 30 Jul 2018 08:16:52 +0000 (01:16 -0700)
committerTom de Vries <vries@gcc.gnu.org>
Mon, 30 Jul 2018 08:16:52 +0000 (08:16 +0000)
Currently, if the user doesn't specify the number of workers for an openacc
region, the compiler hardcodes it to a default value.

This patch removes this functionality, such that the libgomp runtime can decide
on a default value.

2018-07-30  Cesar Philippidis  <cesar@codesourcery.com>
    Tom de Vries  <tdevries@suse.de>

* config/nvptx/nvptx.c (PTX_GANG_DEFAULT): Rename to ...
(PTX_DEFAULT_RUNTIME_DIM): ... this.
(nvptx_goacc_validate_dims): Set default worker and gang dims to
PTX_DEFAULT_RUNTIME_DIM.
(nvptx_dim_limit): Ignore GOMP_DIM_WORKER.

Co-Authored-By: Tom de Vries <tdevries@suse.de>
From-SVN: r263060

gcc/ChangeLog
gcc/config/nvptx/nvptx.c

index 9d70b4678e3b15d86b36085edc9a3427efee591d..5da437875282fe4674ce302187ce89a2e51a7d23 100644 (file)
@@ -1,3 +1,12 @@
+2018-07-30  Cesar Philippidis  <cesar@codesourcery.com>
+           Tom de Vries  <tdevries@suse.de>
+
+       * config/nvptx/nvptx.c (PTX_GANG_DEFAULT): Rename to ...
+       (PTX_DEFAULT_RUNTIME_DIM): ... this.
+       (nvptx_goacc_validate_dims): Set default worker and gang dims to
+       PTX_DEFAULT_RUNTIME_DIM.
+       (nvptx_dim_limit): Ignore GOMP_DIM_WORKER.
+
 2018-07-29  John David Anglin  <danglin@gcc.gnu.org>
 
        * config/pa/pa.c (pa_output_addr_vec): Align address table.
index 5608bee8a8d590f1f79f3043a3ad8da45cdb3c0b..c1946e75f42d2cc7ade5770969d8f5a3fdf84dc6 100644 (file)
@@ -5165,7 +5165,7 @@ nvptx_expand_builtin (tree exp, rtx target, rtx ARG_UNUSED (subtarget),
 /* Define dimension sizes for known hardware.  */
 #define PTX_VECTOR_LENGTH 32
 #define PTX_WORKER_LENGTH 32
-#define PTX_GANG_DEFAULT  0 /* Defer to runtime.  */
+#define PTX_DEFAULT_RUNTIME_DIM 0 /* Defer to runtime.  */
 
 /* Implement TARGET_SIMT_VF target hook: number of threads in a warp.  */
 
@@ -5214,9 +5214,9 @@ nvptx_goacc_validate_dims (tree decl, int dims[], int fn_level)
     {
       dims[GOMP_DIM_VECTOR] = PTX_VECTOR_LENGTH;
       if (dims[GOMP_DIM_WORKER] < 0)
-       dims[GOMP_DIM_WORKER] = PTX_WORKER_LENGTH;
+       dims[GOMP_DIM_WORKER] = PTX_DEFAULT_RUNTIME_DIM;
       if (dims[GOMP_DIM_GANG] < 0)
-       dims[GOMP_DIM_GANG] = PTX_GANG_DEFAULT;
+       dims[GOMP_DIM_GANG] = PTX_DEFAULT_RUNTIME_DIM;
       changed = true;
     }
 
@@ -5230,9 +5230,6 @@ nvptx_dim_limit (int axis)
 {
   switch (axis)
     {
-    case GOMP_DIM_WORKER:
-      return PTX_WORKER_LENGTH;
-
     case GOMP_DIM_VECTOR:
       return PTX_VECTOR_LENGTH;