On 2017.09.14 at 14:48 +0200, Richard Biener wrote:
> On Thu, Sep 14, 2017 at 12:42 PM, Martin Liška <mli...@suse.cz> wrote:
> > On 09/14/2017 12:37 PM, Bin.Cheng wrote:
> >> On Thu, Sep 14, 2017 at 11:24 AM, Richard Biener
> >> <richard.guent...@gmail.com> wrote:
> >>> On Thu, Sep 14, 2017 at 12:18 PM, Martin Liška <mli...@suse.cz> wrote:
> >>>> On 09/14/2017 12:07 PM, Markus Trippelsdorf wrote:
> >>>>> On 2017.09.14 at 11:57 +0200, Richard Biener wrote:
> >>>>>> On Wed, Sep 13, 2017 at 6:11 PM, Nikos Chantziaras <rea...@gmail.com> 
> >>>>>> wrote:
> >>>>>>> On 12/09/17 16:57, Wilco Dijkstra wrote:
> >>>>>>>>
> >>>>>>>> [...] As a result users are
> >>>>>>>> required to enable several additional optimizations by hand to get 
> >>>>>>>> good
> >>>>>>>> code.
> >>>>>>>> Other compilers enable more optimizations at -O2 (loop unrolling in 
> >>>>>>>> LLVM
> >>>>>>>> was
> >>>>>>>> mentioned repeatedly) which GCC could/should do as well.
> >>>>>>>> [...]
> >>>>>>>>
> >>>>>>>> I'd welcome discussion and other proposals for similar improvements.
> >>>>>>>
> >>>>>>>
> >>>>>>> What's the status of graphite? It's been around for years. Isn't it 
> >>>>>>> mature
> >>>>>>> enough to enable these:
> >>>>>>>
> >>>>>>> -floop-interchange -ftree-loop-distribution -floop-strip-mine 
> >>>>>>> -floop-block
> >>>>>>>
> >>>>>>> by default for -O2? (And I'm not even sure those are the complete set 
> >>>>>>> of
> >>>>>>> graphite optimization flags, or just the "useful" ones.)
> >>>>>>
> >>>>>> It's not on by default at any optimization level.  The main issue is 
> >>>>>> the
> >>>>>> lack of maintainance and a set of known common internal compiler errors
> >>>>>> we hit.  The other issue is that there's no benefit of turning those 
> >>>>>> on for
> >>>>>> SPEC CPU benchmarking as far as I remember but quite a bit of extra
> >>>>>> compile-time cost.
> >>>>>
> >>>>> Not to mention the numerous wrong-code bugs. IMHO graphite should
> >>>>> deprecated as soon as possible.
> >>>>>
> >>>>
> >>>> For wrong-code bugs we've got and I recently went through, I fully agree 
> >>>> with this
> >>>> approach and I would do it for GCC 8. There are PRs where order of 
> >>>> simple 2 loops
> >>>> is changed, causing wrong-code as there's a data dependence.
> >>>>
> >>>> Moreover, I know that Bin was thinking about selection whether to use 
> >>>> classical loop
> >>>> optimizations or Graphite (depending on options provided). This would 
> >>>> simplify it ;)
> >>>
> >>> I don't think removing graphite is warranted, I still think it is the
> >>> approach to use when
> >>> handling non-perfect nests.
> >> Hi,
> >> IMHO, we should not be in a hurry to remove graphite, though we are
> >> introducing some traditional transformations.  It's a quite standalone
> >> part in GCC and supports more transformations.  Also as it gets more
> >> attention, never know if somebody will find time to work on it.
> >
> > Ok. I just wanted to express that from user's perspective I would not 
> > recommend it to use.
> > Even if it improves some interesting (and for classical loop optimization 
> > hard) loop nests,
> > it can still blow up on a quite simple data dependence in between loops. 
> > That said, it's quite
> > risky to use it.
> 
> We only have a single wrong-code bug in bugzilla with a testcase and I
> just fixed it (well,
> patch in testing).  We do have plenty of ICEs, yes.

Even tramp3d-v4, which is cited in several graphite papers, gets
miscompiled: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68823.

-- 
Markus

Reply via email to