News for hackers. Stuff that matters.
Re:Outperforming LAPACK with C++ metaprogramming by stephencanon on Monday January 29, 2018 @11:06AM (#16258242)
There's no mystery here, author is only solving a 5x5 system. LAPACK will have barely finished checking function call parameters by the time a fully specialized and inlined solver is finished. Also, from a cursory inspection, author does no pivoting [edit: worse, it just uses Cramer's rule, which is insane], so their solver will be much less numerically robust (but this is admittedly less of a problem for the 5x5 case).

The performance is completely expected--in fact, I would expect an optimized 5x5 solver to be faster than this.

Re:Outperforming LAPACK with C++ metaprogramming by electricslpnsld on Monday January 29, 2018 @01:10PM (#16259347)
A better comparison might be a C++ library like Eigen that is intended for use on these small systems, that should optimize out function calls in a similar way, and that uses intrinsics.
Re:Outperforming LAPACK with C++ metaprogramming by stochastic_monk on Monday January 29, 2018 @02:17PM (#16259910)
If your matrices are of arbitrary size, Blaze [0] would be my pick. It has the best performance on their benchmarks, Baptiste Wicht's benchmarks, and my own.

Though if the matrices are guaranteed to be small (like in this example), libxsmm [1] is specialized and highly optimized for this use case and beats its competitors above.

And yes, it's absolutely essential to make sure you didn't just move computations to compile-time.

[0]: https://bitbucket.org/blaze-lib/blaze

[1]: https://github.com/hfp/libxsmm

Re:Outperforming LAPACK with C++ metaprogramming by stabbles on Monday January 29, 2018 @11:30AM (#16258415)
Cramer's rule is unstable even for 2x2 problems
Re:Outperforming LAPACK with C++ metaprogramming by mattnewton on Monday January 29, 2018 @11:46AM (#16258565)
I think gp is missing a “less” before “numerically robust”
Re:Outperforming LAPACK with C++ metaprogramming by stephencanon on Monday January 29, 2018 @12:07PM (#16258772)
Yeah, thanks. Fixed.