Hacker News new | ask | show | jobs
by temp453463343 4716 days ago
Figuring out which libary to use is a huge PITA. I don't really understand when I should use uBLAS, mtl, or eigen or whatever else is out there.

Anyone have some insight?

1 comments

I'm not exactly an expert on this kind of thing, but from what I understand, Eigen and Armadillo [1] are the best performing libraries in this space. I'd probably go with Eigen, since it appears to be used in more high-profile places and thus more likely to keep being maintained.

uBLAS, on the other hand, does not perform that well in comparison, but it is more likely to keep being maintained as part of Boost.

Blaze [2] is supposed to be very high-performance, but it is relatively new, so there's no way to tell where the chips may fall on this one.

[1] http://arma.sourceforge.net/

[2] https://code.google.com/p/blaze-lib/

Armadillo is also used in pretty well known places: NASA, Siemens, Intel, Boeing, Stanford, CMU, MIT, Schlumberger, Deutsche Bank, US Navy, etc. (source: access logs for Armadillo website).

It's also the basis for the MLPACK machine learning library: http://mlpack.org/

Additionally, there are Armadillo bindings to Python and the R language:

http://sourceforge.net/projects/armanpy/

http://cran.r-project.org/web/packages/RcppArmadillo/

how about ATLAS ?
Well, I was comparing apples to apples (i.e., C++ expression template linear algebra libraries). Some (most?) of them [1,2] are linkable against BLAS routines from Intel MKL or ATLAS or whatever.

[1] http://eigen.tuxfamily.org/dox/TopicUsingIntelMKL.html

[2] http://arma.sourceforge.net/faq.html#dependencies

Thanks for that clarification