Armadillo: doing linear maths faster

Armadillo Logo

Armadillo, the open source linear maths library developed at NICTA in Brisbane, has been downloaded more than 16,000 times this year. Who’s downloading it? The National Aeronautics and Space Administration, otherwise known as NASA, for one. Boeing and Siemens are two industrial giants also using the software, and it has been downloaded by research groups at Stanford, Oxford, MIT and CMU. So what is a linear maths library, and why has Armadillo become one of the more popular ones? To answer these questions, we spoke to Armadillo lead developer, Conrad Sanderson.

Armadillo, Sanderson explains, is a “library of functions that greatly facilitates the processing of matrices and vectors: for example, decomposition or factorisation of a matrix into several matrices.”

Where might this be useful? Lots of places, it turns out.

According to Sanderson, matrix maths can be found in “algorithms that do analysis of stock market portfolios, data mining, face recognition, video surveillance, design of rocket propulsion, analysis of plant growth patterns, and so on.”

This explains the need for good linear maths libraries in general, but why are so many developers now turning to Armadillo in particular? In a nutshell, claims Sanderson, it’s because of Armadillo’s speed and ease of use.

“I believe this is due to its flexibility, similarity to Matlab, and ease of use, all while achieving high-speed operations. The complexity and verbosity of the underlying high-speed code is hidden away from the user, allowing the user to focus on the design of his/her algorithms instead of worrying about low-level implementation details,” said Sanderson.

In fact, Armadillo is pushing so hard on performance boundaries that it has uncovered several bugs in mainstream compilers and other tools. Most recently, a performance issue was identified in the LLVM/Clang optimiser and code generator that’s integral to Mac OS X and iOS development. Prior to this, Armadillo exposed bugs in Intel’s Math Kernel Library (MKL) and the widely used GNU C++ compiler.

Because algorithms are often developed in Matlab prior to being translated into production code, it helps that Armadillo provides a similar programming interface to Matlab. Sanderson says: “the user is also not locked into using Matlab, allowing the resulting programs to be easily distributed or put into embedded devices.”

Sanderson is a Senior Researcher with NICTA based at QUT, where he works in the area of computer vision. Armadillo, which Sanderson describes as a side project, can be downloaded from http://arma.sourceforge.net/.