[Bug tree-optimization/55022] [4.8 Regression] air.f90 is miscompliled with -m64 -O2 -fgraphite-identity after revision 190619

2013-02-05 Thread grosser at gcc dot gnu.org


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55022



--- Comment #7 from Tobias Grosser  2013-02-05 
16:10:21 UTC ---

(In reply to comment #5)

> I'll take a peek.



Wonderful, feel free to CC me if you have any questions!


[Bug tree-optimization/54094] ICE in graphite-dependences.c:320 : isl_constraint.c:497: position out of bounds

2013-07-13 Thread grosser at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54094

Tobias Grosser  changed:

   What|Removed |Added

 Status|NEW |RESOLVED
 CC||grosser at gcc dot gnu.org
 Resolution|--- |FIXED

--- Comment #4 from Tobias Grosser  ---
Fixed with:

Author: grosser 
Date:   Sun Jul 14 06:45:08 2013 +

graphite: Do not depend on 2D + 1 form in parallelism check

PR tree-optimization/54094
* graphite-clast-to-gimple.c (translate_clast_for_loop): Derive the
  scheduling dimension for the parallelism check from the polyhedral
  information in the AST.
* graphite-dependences.c (carries_deps): Do not assume the schedule is
  in 2D + 1 form.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@200946


[Bug tree-optimization/50561] [4.7 regression] ICE when compiling zlib with -O2 -floop-flatten -floop-strip-mine

2012-02-08 Thread grosser at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50561

--- Comment #7 from Tobias Grosser  2012-02-08 
15:38:19 UTC ---
Created attachment 26614
  --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=26614
A possible fix

Here a possible fix. The commit message is:

Removing old scattering dimensions after loop flattening is incorrect.

As long as we use PPL we are not able to remove the old scattering
dimensions.
The reason is that these dimensions are not entirely unused.  They are not
necessary as part of the scheduling vector, as the earlier dimensions
already
unambiguously define the execution time, however they may still be needed
to
carry modulo constraints as introduced e.g. by strip mining.  The correct
solution would be to project these dimensions out of the scattering
polyhedra.
In case they are still required to carry modulo constraints they should be
kept
internally as existentially quantified dimensions.  PPL does only support
projection of rational polyhedra, however in this case we need an integer
projection. With isl this will be trivial to implement.  For now we just
leave
the dimensions. This is a little ugly, but should be correct.

Could you verify it it works for you?


[Bug tree-optimization/52275] The polyhedron test air.f90 is miscompiled with '-O2 -floop-flatten' after revision 184265

2012-02-16 Thread grosser at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52275

--- Comment #3 from Tobias Grosser  2012-02-16 
14:00:29 UTC ---
It seems there Sebastian himself sees the loop flatteing pass as currently
unstable: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50335#c8

I would propose to follow his suggestion, disable it for now and readd it as
soon as graphite is moved to isl. If anybody else can contribute a patch that
fixes the remaining loop flattening problems, I am obviously glad to have a
look,


[Bug testsuite/50023] FAIL: gcc.dg/graphite/id-pr46845.c (test for excess errors)

2012-01-09 Thread grosser at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50023

Tobias Grosser  changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 Resolution||FIXED

--- Comment #3 from Tobias Grosser  2012-01-09 
19:20:13 UTC ---
(In reply to comment #2)
> A patch has been submitted at
> http://gcc.gnu.org/ml/gcc-patches/2011-10/msg00611.html and approved at
> http://gcc.gnu.org/ml/gcc-patches/2011-10/msg00612.html . Any reason why it 
> has
> not been committed?

To me it seems it was committed 10.10.2011. Here the relevant commit:
http://gcc.gnu.org/viewcvs?view=revision&revision=179762

Does this commit not show up for you?

I marked this as resolved. If you cannot find the commit, please reopen the
bug.

All the best from ENS Paris
Tobi


[Bug tree-optimization/59121] [4.8/4.9 Regression] endless loop with -O2 -floop-parallelize-all

2014-03-25 Thread grosser at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59121

--- Comment #18 from Tobias Grosser  ---
(In reply to Mircea Namolaru from comment #17)
> Yes, data dependencies computation is expensive in the polyehdral model
> and it could take considerable time - but it is worrying that in too many
> cases fails to provide (after a few hours left running, when I stop it) an
> answer for very simple programs. I will ckeck with the isl people if this is
> the expected behaviour of the isl_union_map_compute_flow (this is the
> function where the data dependency computation is stuck) and how (and if)
> they could help us.

I would like to state that data-dependence calculation is not inherently more
complex in the polyhedral mode. In fact, any simple data-dependence test that
exists could be implemented in our polyhedral checker to speed up the common
case if really necessary. We did not do this, as for such simple cases the
dependence analysis is normally very fast. In the general case, dependence
solving is inherently complex (equivalent to ILP programming -> NP-complete),
and we can
not do better anyway.

Though for the most cases of slowdown, we could probably do better. For this it
is
necessary to understand why a certain case is slow. Hence, it is important to
look into the dependence problem we are trying to solve and see why we can not
solve it quickly. The problem may be inherently complex, but there may also be
a simple fix.

> Many Fortran programs with loops having no-constants bounds and
> n-dimensional arrays (n>=3) may be affected by this problem and may work
> only for small
> dimensions of the arrays. 
> The problem touches especially Fortran, that uses
> linearized accesses to multi-dimensional arrays - this creates patterns 
> leading to this problem (in this example we have an array acc of dimension
> 55,48,49 and the array access acc(j,k,l) is transformed to acc(j + 55*k +
> 2640*l).

So what exactly makes the problem difficult? Without understanding this, it is
very difficult to predict in which situations the dependence analysis will be
slow.

> I've checked the constraints passed to isl_union_map_compute

You mean isl_union_map_compute_flow()

> - see that
> wrapping is perfromed. But wrapping requires modulo operation, expressed by
> constraints with existential quantifier that may be harder to solve.

This is an interesting observation. Instead of modeling the modulo wrapping,
we could assume it does not exist and just add a run-time check around
the kernel that ensures that we only execute kernels where we know this is the
case.

> By
> disabling the wrapping, some simple examples that before were stuck in data
> dependency computation finish immediately.

Nice.

> In what measure is wrapping
> necessary ? - as a side-effect it may increase compilation time (that may be
> already considerable).

In some cases additions/multiplications have defined the semantics in case of
overflow as the computation being performed modulo the size of the type. This
case rarely happens, but in case we want to be correct, we can not just ignore
it.

Cheers,
Tobias


[Bug tree-optimization/58028] [4.9 Regression] Several failures in libgomp.graphite after revision 200946

2014-01-29 Thread grosser at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58028

--- Comment #9 from Tobias Grosser  ---
(In reply to rguent...@suse.de from comment #8)
> On Wed, 29 Jan 2014, dominiq at lps dot ens.fr wrote:
> 
> > http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58028
> > 
> > --- Comment #7 from Dominique d'Humieres  ---
> > > The testsuite failures are.  We have to do sth about them.
> > 
> > Revert r200946?
> 
> Probably - the
> 
> +   * graphite-dependences.c (carries_deps): Do not assume the 
> schedule is
> + in 2D + 1 form.
> 
> part looks wrong.
> 
> -  idx = 2 * depth + 1;
> -  for (i = 0; i < idx; i++)
> +  for (i = 0; i < depth - 1; i++)
> 
> we now iterate over less dimensions than before.

Only in cases where the schedule is not in 2D + 1 form. In case the schedule
is in 2D + 1 form 

int scheduling_dim = isl_set_n_dim (domain);

will be equal to 2 * depth + 1.

> I'd say we should simply check whether the loop _is_ in 2D + 1 form
> at
> 
> +  isl_set *domain = isl_set_from_cloog_domain (stmt->domain);
> +  int scheduling_dim = isl_set_n_dim (domain);
> +
>if (flag_loop_parallelize_all
> -  && loop_is_parallel_p (loop, bb_pbb_mapping, level))
> +  && loop_is_parallel_p (loop, bb_pbb_mapping, scheduling_dim))
>  loop->can_be_parallel = true;
>  
> thus
> 
>if (flag_loop_parallelize_all
>&& scheduling_dim == 2 * level + 1
>&& loop_is_parallel_p (loop, bb_pbb_mapping, level)
>  loop->can_be_parallel = true;

The change you propose seems conservatively correct, as in that loops that
are not in 2D + 1 form are not detected to be parallel. This change may hide
the bug, but I don't see any bug it solves.

> no time to check whether reverting the other hunk plus this will
> resolve the bug the revision fixed and restores the testcases.

I assume it will fix the crash, but it will not detect parallellism in none
2D+1 loops, something the isl scheduler happily creates.


[Bug tree-optimization/58028] [4.9 Regression] Several failures in libgomp.graphite after revision 200946

2014-02-03 Thread grosser at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58028

Tobias Grosser  changed:

   What|Removed |Added

 Status|NEW |ASSIGNED

--- Comment #11 from Tobias Grosser  ---
Thanks Richi for starting to look into this. As posted in the other bug report
Mircea, will be taking over the maintenance work with graphite, looking into
this bug report with priority. I will be helping him to come to speed with
graphite.


[Bug tree-optimization/59121] [4.8/4.9 Regression] endless loop with -O2 -floop-parallelize-all

2014-03-10 Thread grosser at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59121

Tobias Grosser  changed:

   What|Removed |Added

 CC||grosser at gcc dot gnu.org

--- Comment #16 from Tobias Grosser  ---
(In reply to Jeffrey A. Law from comment #15)
> Mircea, thanks.  I'm definitely looking forward to seeing Graphite in a
> better state!  With you on board at INRIA and working on Graphite, I will
> not be calling for Graphite's removal after the 4.9 release.
> 
> Thanks again,
> jeff

This bug is probably the perfect case to use isl's new compute out facility,
which allows us to give up after a certain number of compute iterations.
This will give us the assurance that we do not hang any more in the graphite
dependence analysis, but that we instead bail out smoothly.

We should probably also work on the efficiency of the analysis (and there is a
lot that could be done), but in my opinion the number one priority is that we
avoid unpredictable compile time. After this issue is fixed, we can address
cases where we bail out as missed optimizations. Something, that is a lot less
intrusive.


[Bug bootstrap/61792] [4.10 Regression] Bootstrap error with undeclared function isl_ast_expr_get_val

2014-07-16 Thread grosser at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61792

--- Comment #11 from Tobias Grosser  ---
(In reply to Manfred Schwarb from comment #10)
> Dominique, you are right.
> The issue is not with isl-0.12 and isl-0.13.
> 
> It is isl-0.11 that is missing these include files. So with the
> above mentioned check-in, building GCC using isl-0.11 does no longer work.
> 
> I just could build trunk successfully now, using isl-0.12.2.
> 
> One should rip isl-0.11 support out of configure etc. therefore.
> 
> 
> OK, I see what could have happened to Thomas: GMP support in isl
> is optional. If you build isl without gmp headers being present,
> then probably you wont get the needed headers to compile GCC.
> So it seems isl-0.12.2 with GMP support is needed to build graphite.

GMP support only became optional with the unreleased isl-0.14. graphite should
build correctly with isl-0.12.2 and cloog-0.18.2. We should remove remove other
versions from the configure check.

Roman, is currently working on adapting configure.