Menu

#4 Switch from our own math class templates to Eigen 3

0.7
closed
None
2014-01-01
2013-12-31
No

Eigen is an MPLv2-licensed expression template library for both sparse and dense linear algebra. It's significantly more efficient than our own math:: class templates, due both to it being based on expression templates (so they can do great optimizations above what the compiler does) and to it having a better-vectorized implementation. It runs 6-8x faster than us, according to my benchmarks.

MPLv2 is GPLv3+ compatible, so we can use it in hummstrumm.

There are some caveats for alignment that we'll have to worry about, but these appear anywhere we have an over-aligned type. Here's what the Eigen documentation has to say about that. Hopefully some of this won't be relevant if something like N3396 gets added to the standard.

For previous discussion on this, including benchmarks and code, see Issue 97 on our old Google Code Issue Tracker.

Discussion

  • Patrick M. Niedzielski

    • status: open --> accepted
     
  • Patrick M. Niedzielski

    Fixed in commit ae3ed4620a7d22e04d4fe13ec792270f2b90654a.

     
  • Patrick M. Niedzielski

    • status: accepted --> closed
     

Anonymous
Anonymous

Add attachments
Cancel





MongoDB Logo MongoDB