|Re: [eigen] removing^W keeping meta-unrollers|
[ Thread Index |
| More lists.tuxfamily.org/eigen Archives
- To: eigen@xxxxxxxxxxxxxxxxxxx
- Subject: Re: [eigen] removing^W keeping meta-unrollers
- From: "Schleimer, Ben" <bensch128@xxxxxxxxx>
- Date: Mon, 10 Dec 2007 14:59:53 -0800 (PST)
- Domainkey-signature: a=rsa-sha1; q=dns; c=nofws; s=s1024; d=yahoo.com; h=X-YMail-OSG:Received:Date:From:Reply-To:Subject:To:In-Reply-To:MIME-Version:Content-Type:Content-Transfer-Encoding:Message-ID; b=OLldUomtAzEGYJUt2m0P9w+r0aCnyMsuuDm+R0IehWxP4MVj4Wvn4kQGZS0EeRDhQW5Kv5VQuvQNDAt/ZywrIfqNvBcqeHWCizzrgu6khXWviHi1hOBDxwDajwWpb5HdjnQNo+rSXtK2GJSGphpN/2K7+9TXfbyeZ0iBOqYIYTA=;
Nice working checking that case Benoit.
I'm glad you found the best solution :)
--- 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
> -- 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.
> 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