Re: [eigen] removing^W keeping meta-unrollers

[ Thread Index | Date Index | More lists.tuxfamily.org/eigen Archives ]


Nice working checking that case Benoit.
I'm glad you found the best solution :)

Cheers
Ben

--- Benoît Jacob <jacob@xxxxxxxxxxxxxxx> wrote:

> Hi List,
> 
> after a lot of manual unrolling I benchmarked the result and got poor 
> performance because gcc refused to inline the functions with the unrolled 
> loops, even with the always_inline attribute.
> 
> So finally I think we should keep the meta-unrollers. To address the issues 
> that I reported:
>  -- specializing the template metaprogram the bogus case Size==0 is effective 
> at preventing infinite recursions, so that problem is solved.
>  -- it turns out that compilation was not measurably faster with hand-unrolled 
> loops
>  -- I'll adapt the CopyHelper metaprogram to handle the case where one only 
> unrolls across one direction.
> 
> That's all for now, I have a ton of local changes, the Core should be ready 
> within 1 week now.
> 
> Cheers,
> Benoit
> 
> 
> On Sunday 09 December 2007 11:19:58 Benoît Jacob wrote:
> > Hi List,
> >
> > I'm about to remove the meta-unrollers and replace them by manual
> > unrolling.
> >
> > Rationale:
> > - meta-unrollers give very very long and useless compiler output when there
> > is an error in the calling program, e.g. a matrix with 0 rows.
> > - in most cases (that is, everywhere except in CopyHelper) manually
> > unrolling takes LESS lines of code (and is much more explicit) than
> > meta-unrolling. - in CopyHelper, we weren't handling all cases anyway. If
> > e.g. the number of rows is known at compile-time but not the number of
> > columns, our
> > meta-unroller did not partially unroll (and I know Cyrille has a use case
> > for that). Modifying it to handle that case would probably again make it
> > longer than manual-unrolling.
> > - manual unrolling is easier on the compiler, and the code is far easier to
> > read and maintain.
> >
> > Cheers,
> >
> > Benoit
> 
> 
> 






Mail converted by MHonArc 2.6.19+ http://listengine.tuxfamily.org/