public inbox for gcc@gcc.gnu.org
 help / color / mirror / Atom feed
* Fwd: [Bug tree-optimization/14741] graphite with loop blocking and interchanging doesn't optimize a matrix multiplication loop
       [not found] ` <bug-14741-7780-sdz6yBMbvK@http.gcc.gnu.org/bugzilla/>
@ 2013-07-14  7:25   ` Sebastian Pop
  2013-07-18 16:31     ` Jeff Law
  0 siblings, 1 reply; 4+ messages in thread
From: Sebastian Pop @ 2013-07-14  7:25 UTC (permalink / raw)
  To: Jeff Law, Tobias Grosser, gcc

Hi Jeff,

let's start with getting this bug fixed.

Thanks,
Sebastian

---------- Forwarded message ----------
From: spop at gcc dot gnu.org <gcc-bugzilla@gcc.gnu.org>
Date: Sun, Jul 14, 2013 at 2:09 AM
Subject: [Bug tree-optimization/14741] graphite with loop blocking and
interchanging doesn't optimize a matrix multiplication loop
To: spop@gcc.gnu.org


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

--- Comment #18 from Sebastian Pop <spop at gcc dot gnu.org> ---
On my laptop ARM Exynos5 at 1.6GHz I get this:

gfortran -ffast-math -O3 t.f90
./a.out
   192.75000000000000        10.239999999999826

gfortran -ffast-math -O3 -fgraphite -floop-interchange -floop-block t.f90
./a.out
   193.77500000000001        10.239999999999826

gfortran -ffast-math -O3 -floop-nest-optimize t.f90
t.f90: In function ‘MAIN__’:
t.f90:5:0: warning: iteration 31 invokes undefined behavior
[-Waggressive-loop-optimizations]
 B=0.1D0
 ^
f951: note: containing loop
t.f90:4:0: warning: iteration 31 invokes undefined behavior
[-Waggressive-loop-optimizations]
 A=0.1D0
 ^
f951: note: containing loop
./a.out
./a.out: No such file or directory

I don't know why the compiler does not produce an executable: -S does produce a
.s file.

Adding -fdump-tree-graphite-all produces a file t.f90.106t.graphite containing
the information about what graphite has done: I see that we do loop block the
loop nest like this:

gfortran -ffast-math -O3 -floop-nest-optimize -fdump-tree-graphite-all t.f90

CLAST generated by CLooG:
for (scat_0=0;scat_0<=1023;scat_0+=32) {
  for (scat_1=0;scat_1<=1023;scat_1+=32) {
    for (scat_2=scat_0;scat_2<=scat_0+31;scat_2++) {
      for (scat_3=scat_1;scat_3<=scat_1+31;scat_3++) {
        (scat_2,scat_3);
      }
    }
  }
}

I see that the tile size is hard coded as a constant in graphite-optimize-isl.c

  TileMap = getTileMap(ctx, *Dimensions, 32);

that should be replaced by a param and tuned.

--
You are receiving this mail because:
You are on the CC list for the bug.

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: Fwd: [Bug tree-optimization/14741] graphite with loop blocking and interchanging doesn't optimize a matrix multiplication loop
  2013-07-14  7:25   ` Fwd: [Bug tree-optimization/14741] graphite with loop blocking and interchanging doesn't optimize a matrix multiplication loop Sebastian Pop
@ 2013-07-18 16:31     ` Jeff Law
  2013-07-18 16:45       ` Sebastian Pop
  0 siblings, 1 reply; 4+ messages in thread
From: Jeff Law @ 2013-07-18 16:31 UTC (permalink / raw)
  To: Sebastian Pop; +Cc: Tobias Grosser, gcc

On 07/14/2013 01:24 AM, Sebastian Pop wrote:
> Hi Jeff,
>
> let's start with getting this bug fixed.
So what do you need?  Just making the tiling factor won't solve the 
problem AFAICT.  As I've mentioned, I'm already over-booked on other 
things and don't have the time to do any significant development on the 
graphite bits.

jeff

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: Fwd: [Bug tree-optimization/14741] graphite with loop blocking and interchanging doesn't optimize a matrix multiplication loop
  2013-07-18 16:31     ` Jeff Law
@ 2013-07-18 16:45       ` Sebastian Pop
  2013-07-18 19:52         ` Sebastian Pop
  0 siblings, 1 reply; 4+ messages in thread
From: Sebastian Pop @ 2013-07-18 16:45 UTC (permalink / raw)
  To: Jeff Law; +Cc: Tobias Grosser, gcc

For this testcase, it looks like the scop detection pass should be fixed:
it currently discards the interesting loop nest.  I can help figuring out what
is needed to be fixed, though I cannot send patches to fix the problem.

On Thu, Jul 18, 2013 at 11:31 AM, Jeff Law <law@redhat.com> wrote:
> On 07/14/2013 01:24 AM, Sebastian Pop wrote:
>>
>> Hi Jeff,
>>
>> let's start with getting this bug fixed.
>
> So what do you need?  Just making the tiling factor won't solve the problem
> AFAICT.  As I've mentioned, I'm already over-booked on other things and
> don't have the time to do any significant development on the graphite bits.
>
> jeff
>

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: Fwd: [Bug tree-optimization/14741] graphite with loop blocking and interchanging doesn't optimize a matrix multiplication loop
  2013-07-18 16:45       ` Sebastian Pop
@ 2013-07-18 19:52         ` Sebastian Pop
  0 siblings, 0 replies; 4+ messages in thread
From: Sebastian Pop @ 2013-07-18 19:52 UTC (permalink / raw)
  To: Jeff Law, Albert Cohen; +Cc: Tobias Grosser, gcc

+Albert
Would there be somebody from your group Albert who could help maintaining
and pushing patches to graphite?  The focus is fixing graphite to get
performance
from the isl scheduler on benchmarks that the gcc community will help identify.

Thanks,
Sebastian

On Thu, Jul 18, 2013 at 11:44 AM, Sebastian Pop <sebpop@gmail.com> wrote:
> For this testcase, it looks like the scop detection pass should be fixed:
> it currently discards the interesting loop nest.  I can help figuring out what
> is needed to be fixed, though I cannot send patches to fix the problem.
>
> On Thu, Jul 18, 2013 at 11:31 AM, Jeff Law <law@redhat.com> wrote:
>> On 07/14/2013 01:24 AM, Sebastian Pop wrote:
>>>
>>> Hi Jeff,
>>>
>>> let's start with getting this bug fixed.
>>
>> So what do you need?  Just making the tiling factor won't solve the problem
>> AFAICT.  As I've mentioned, I'm already over-booked on other things and
>> don't have the time to do any significant development on the graphite bits.
>>
>> jeff
>>

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2013-07-18 19:52 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
     [not found] <bug-14741-7780@http.gcc.gnu.org/bugzilla/>
     [not found] ` <bug-14741-7780-sdz6yBMbvK@http.gcc.gnu.org/bugzilla/>
2013-07-14  7:25   ` Fwd: [Bug tree-optimization/14741] graphite with loop blocking and interchanging doesn't optimize a matrix multiplication loop Sebastian Pop
2013-07-18 16:31     ` Jeff Law
2013-07-18 16:45       ` Sebastian Pop
2013-07-18 19:52         ` Sebastian Pop

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).