mirror of git://gcc.gnu.org/git/gcc.git
Add param parloops-schedule
2015-10-13 Tom de Vries <tom@codesourcery.com> PR tree-optimization/67476 * doc/invoke.texi (@item parloops-schedule): New item. * params.def (PARAM_PARLOOPS_SCHEDULE): New DEFPARAMENUM5. * tree-parloops.c: Include params-enum.h. (create_parallel_loop): Handle PARAM_PARLOOPS_SCHEDULE. * testsuite/libgomp.c/autopar-3.c: New test. * testsuite/libgomp.c/autopar-4.c: New test. * testsuite/libgomp.c/autopar-5.c: New test. * testsuite/libgomp.c/autopar-6.c: New test. * testsuite/libgomp.c/autopar-7.c: New test. * testsuite/libgomp.c/autopar-8.c: New test. From-SVN: r228756
This commit is contained in:
parent
d78182cc0c
commit
1f600feab0
|
|
@ -1,3 +1,11 @@
|
||||||
|
2015-10-13 Tom de Vries <tom@codesourcery.com>
|
||||||
|
|
||||||
|
PR tree-optimization/67476
|
||||||
|
* doc/invoke.texi (@item parloops-schedule): New item.
|
||||||
|
* params.def (PARAM_PARLOOPS_SCHEDULE): New DEFPARAMENUM5.
|
||||||
|
* tree-parloops.c: Include params-enum.h.
|
||||||
|
(create_parallel_loop): Handle PARAM_PARLOOPS_SCHEDULE.
|
||||||
|
|
||||||
2015-10-13 Tom de Vries <tom@codesourcery.com>
|
2015-10-13 Tom de Vries <tom@codesourcery.com>
|
||||||
|
|
||||||
* Makefile.in (PARAMS_H, PLUGIN_HEADERS): Add params-enum.h.
|
* Makefile.in (PARAMS_H, PLUGIN_HEADERS): Add params-enum.h.
|
||||||
|
|
|
||||||
|
|
@ -11133,6 +11133,10 @@ automaton. The default is 50.
|
||||||
Chunk size of omp schedule for loops parallelized by parloops. The default
|
Chunk size of omp schedule for loops parallelized by parloops. The default
|
||||||
is 0.
|
is 0.
|
||||||
|
|
||||||
|
@item parloops-schedule
|
||||||
|
Schedule type of omp schedule for loops parallelized by parloops (static,
|
||||||
|
dynamic, guided, auto, runtime). The default is static.
|
||||||
|
|
||||||
@item max-ssa-name-query-depth
|
@item max-ssa-name-query-depth
|
||||||
Maximum depth of recursion when querying properties of SSA names in things
|
Maximum depth of recursion when querying properties of SSA names in things
|
||||||
like fold routines. One level of recursion corresponds to following a
|
like fold routines. One level of recursion corresponds to following a
|
||||||
|
|
|
||||||
|
|
@ -35,6 +35,11 @@ along with GCC; see the file COPYING3. If not see
|
||||||
- The maximum acceptable value for the parameter (if greater than
|
- The maximum acceptable value for the parameter (if greater than
|
||||||
the minimum).
|
the minimum).
|
||||||
|
|
||||||
|
The DEFPARAMENUM<N> macro is similar, but instead of the minumum and maximum
|
||||||
|
arguments, it contains a list of <N> allowed strings, corresponding to
|
||||||
|
integer values 0..<N>-1. Note that the default argument needs to be
|
||||||
|
specified as one of the allowed strings, rather than an integer value.
|
||||||
|
|
||||||
Be sure to add an entry to invoke.texi summarizing the parameter. */
|
Be sure to add an entry to invoke.texi summarizing the parameter. */
|
||||||
|
|
||||||
/* When branch is predicted to be taken with probability lower than this
|
/* When branch is predicted to be taken with probability lower than this
|
||||||
|
|
@ -1153,6 +1158,13 @@ DEFPARAM (PARAM_PARLOOPS_CHUNK_SIZE,
|
||||||
"Chunk size of omp schedule for loops parallelized by parloops",
|
"Chunk size of omp schedule for loops parallelized by parloops",
|
||||||
0, 0, 0)
|
0, 0, 0)
|
||||||
|
|
||||||
|
DEFPARAMENUM5 (PARAM_PARLOOPS_SCHEDULE,
|
||||||
|
"parloops-schedule",
|
||||||
|
"Schedule type of omp schedule for loops parallelized by "
|
||||||
|
"parloops (static, dynamic, guided, auto, runtime)",
|
||||||
|
static,
|
||||||
|
static, dynamic, guided, auto, runtime)
|
||||||
|
|
||||||
DEFPARAM (PARAM_MAX_SSA_NAME_QUERY_DEPTH,
|
DEFPARAM (PARAM_MAX_SSA_NAME_QUERY_DEPTH,
|
||||||
"max-ssa-name-query-depth",
|
"max-ssa-name-query-depth",
|
||||||
"Maximum recursion depth allowed when querying a property of an"
|
"Maximum recursion depth allowed when querying a property of an"
|
||||||
|
|
|
||||||
|
|
@ -58,6 +58,7 @@ along with GCC; see the file COPYING3. If not see
|
||||||
#include "cgraph.h"
|
#include "cgraph.h"
|
||||||
#include "tree-ssa.h"
|
#include "tree-ssa.h"
|
||||||
#include "params.h"
|
#include "params.h"
|
||||||
|
#include "params-enum.h"
|
||||||
|
|
||||||
/* This pass tries to distribute iterations of loops into several threads.
|
/* This pass tries to distribute iterations of loops into several threads.
|
||||||
The implementation is straightforward -- for each loop we test whether its
|
The implementation is straightforward -- for each loop we test whether its
|
||||||
|
|
@ -2086,8 +2087,31 @@ create_parallel_loop (struct loop *loop, tree loop_fn, tree data,
|
||||||
gimple_cond_set_lhs (cond_stmt, cvar_base);
|
gimple_cond_set_lhs (cond_stmt, cvar_base);
|
||||||
type = TREE_TYPE (cvar);
|
type = TREE_TYPE (cvar);
|
||||||
t = build_omp_clause (loc, OMP_CLAUSE_SCHEDULE);
|
t = build_omp_clause (loc, OMP_CLAUSE_SCHEDULE);
|
||||||
OMP_CLAUSE_SCHEDULE_KIND (t) = OMP_CLAUSE_SCHEDULE_STATIC;
|
|
||||||
int chunk_size = PARAM_VALUE (PARAM_PARLOOPS_CHUNK_SIZE);
|
int chunk_size = PARAM_VALUE (PARAM_PARLOOPS_CHUNK_SIZE);
|
||||||
|
enum PARAM_PARLOOPS_SCHEDULE_KIND schedule_type \
|
||||||
|
= (enum PARAM_PARLOOPS_SCHEDULE_KIND) PARAM_VALUE (PARAM_PARLOOPS_SCHEDULE);
|
||||||
|
switch (schedule_type)
|
||||||
|
{
|
||||||
|
case PARAM_PARLOOPS_SCHEDULE_KIND_static:
|
||||||
|
OMP_CLAUSE_SCHEDULE_KIND (t) = OMP_CLAUSE_SCHEDULE_STATIC;
|
||||||
|
break;
|
||||||
|
case PARAM_PARLOOPS_SCHEDULE_KIND_dynamic:
|
||||||
|
OMP_CLAUSE_SCHEDULE_KIND (t) = OMP_CLAUSE_SCHEDULE_DYNAMIC;
|
||||||
|
break;
|
||||||
|
case PARAM_PARLOOPS_SCHEDULE_KIND_guided:
|
||||||
|
OMP_CLAUSE_SCHEDULE_KIND (t) = OMP_CLAUSE_SCHEDULE_GUIDED;
|
||||||
|
break;
|
||||||
|
case PARAM_PARLOOPS_SCHEDULE_KIND_auto:
|
||||||
|
OMP_CLAUSE_SCHEDULE_KIND (t) = OMP_CLAUSE_SCHEDULE_AUTO;
|
||||||
|
chunk_size = 0;
|
||||||
|
break;
|
||||||
|
case PARAM_PARLOOPS_SCHEDULE_KIND_runtime:
|
||||||
|
OMP_CLAUSE_SCHEDULE_KIND (t) = OMP_CLAUSE_SCHEDULE_RUNTIME;
|
||||||
|
chunk_size = 0;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
gcc_unreachable ();
|
||||||
|
}
|
||||||
if (chunk_size != 0)
|
if (chunk_size != 0)
|
||||||
OMP_CLAUSE_SCHEDULE_CHUNK_EXPR (t)
|
OMP_CLAUSE_SCHEDULE_CHUNK_EXPR (t)
|
||||||
= build_int_cst (integer_type_node, chunk_size);
|
= build_int_cst (integer_type_node, chunk_size);
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,13 @@
|
||||||
|
2015-10-13 Tom de Vries <tom@codesourcery.com>
|
||||||
|
|
||||||
|
PR tree-optimization/67476
|
||||||
|
* testsuite/libgomp.c/autopar-3.c: New test.
|
||||||
|
* testsuite/libgomp.c/autopar-4.c: New test.
|
||||||
|
* testsuite/libgomp.c/autopar-5.c: New test.
|
||||||
|
* testsuite/libgomp.c/autopar-6.c: New test.
|
||||||
|
* testsuite/libgomp.c/autopar-7.c: New test.
|
||||||
|
* testsuite/libgomp.c/autopar-8.c: New test.
|
||||||
|
|
||||||
2015-10-12 James Norris <jnorris@codesourcery.com>
|
2015-10-12 James Norris <jnorris@codesourcery.com>
|
||||||
|
|
||||||
* testsuite/libgomp.oacc-c-c++-common/vector-loop.c: Fix loop
|
* testsuite/libgomp.oacc-c-c++-common/vector-loop.c: Fix loop
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,4 @@
|
||||||
|
/* { dg-do run } */
|
||||||
|
/* { dg-additional-options "-ftree-parallelize-loops=4 -ffast-math --param parloops-schedule=dynamic" } */
|
||||||
|
|
||||||
|
#include "autopar-1.c"
|
||||||
|
|
@ -0,0 +1,4 @@
|
||||||
|
/* { dg-do run } */
|
||||||
|
/* { dg-additional-options "-ftree-parallelize-loops=4 -ffast-math --param parloops-schedule=dynamic --param parloops-chunk-size=100" } */
|
||||||
|
|
||||||
|
#include "autopar-1.c"
|
||||||
|
|
@ -0,0 +1,4 @@
|
||||||
|
/* { dg-do run } */
|
||||||
|
/* { dg-additional-options "-ftree-parallelize-loops=4 -ffast-math --param parloops-schedule=guided" } */
|
||||||
|
|
||||||
|
#include "autopar-1.c"
|
||||||
|
|
@ -0,0 +1,4 @@
|
||||||
|
/* { dg-do run } */
|
||||||
|
/* { dg-additional-options "-ftree-parallelize-loops=4 -ffast-math --param parloops-schedule=guided --param parloops-chunk-size=100" } */
|
||||||
|
|
||||||
|
#include "autopar-1.c"
|
||||||
|
|
@ -0,0 +1,4 @@
|
||||||
|
/* { dg-do run } */
|
||||||
|
/* { dg-additional-options "-ftree-parallelize-loops=4 -ffast-math --param parloops-schedule=auto" } */
|
||||||
|
|
||||||
|
#include "autopar-1.c"
|
||||||
|
|
@ -0,0 +1,4 @@
|
||||||
|
/* { dg-do run } */
|
||||||
|
/* { dg-additional-options "-ftree-parallelize-loops=4 -ffast-math --param parloops-schedule=runtime" } */
|
||||||
|
|
||||||
|
#include "autopar-1.c"
|
||||||
Loading…
Reference in New Issue