4 ms·
Probably anybody who actually implements matrix multiplication knows about ATLAS already, but this software does what the article advocates, and then some, tuni
by dmlorenzetti 13y ago
Probably anybody who actually implements matrix multiplication knows about ATLAS already, but this software does what the article advocates, and then some, tuning to your specific machine cache:
http://en.wikipedia.org/wiki/Automatically_Tuned_Linear_Algebra_Software http://en.wikipedia.org/wiki/Automatically_Tuned_Linear_Alge...
- khawkins 13y agoI was actually unfamiliar with ATLAS, but I am familiar with Eigen, which I use whenever implementing matrix operations in C++: http://eigen.tuxfamily.org http://eigen.tuxfamily.org With so many available options, you should never really be implementing your own matrix multiplication.
- temp453463343 13y agoFiguring 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?
- pbsd 13y agoI'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/ http://arma.sourceforge.net/ [2] https://code.google.com/p/blaze-lib/ https://code.google.com/p/blaze-lib/
- temp453463343 13y agohow about ATLAS ?
- pbsd 13y agoWell, 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 http://eigen.tuxfamily.org/dox/TopicUsingIntelMKL.html [2] http://arma.sourceforge.net/faq.html#dependencies http://arma.sourceforge.net/faq.html#dependencies
- temp453463343 13y agoThanks for that clarification
- wallbear 13y agoArmadillo 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/ http://mlpack.org/ Additionally, there are Armadillo bindings to Python and the R language: http://sourceforge.net/projects/armanpy/ http://sourceforge.net/projects/armanpy/ http://cran.r-project.org/web/packages/RcppArmadillo/ http://cran.r-project.org/web/packages/RcppArmadillo/
- malingo 13y agoThere's a handful of BLAS implementations: http://en.wikipedia.org/wiki/Basic_Linear_Algebra_Subprograms#Implementations http://en.wikipedia.org/wiki/Basic_Linear_Algebra_Subprogram...