M4RI-20121224

Release Notes

M4RI-20121224 was released on 21 December 2012. It is available at:

   http://m4ri.sagemath.org/downloads/

About M4RI

M4RI is a library for fast arithmetic with dense matrices over F2. The name M4RI comes from the first implemented algorithm: The "Method of the Four Russians" inversion algorithm published by Gregory Bard. This algorithm in turn is named after the "Method of the Four Russians" multiplication algorithm which is probably better referred to as Kronrod's method. M4RI implements asymptotically fast matrix multiplication, linear system solving, reduced row echelon forms, PLE decomposition and basic arithmetic. M4RI is used by the Sage mathematics software and the PolyBoRi library. M4RI is available under the General Public License Version 2 or later (GPLv2+).

Changes

Performance Improvements

Various (micro) optimisations and parameter tuning produced considerably improved performance over 20120613 and prior releases.

road

road

More performance plots can be found here: http://imgur.com/a/dKZAy. These improvements are also discussed at

https://martinralbrecht.wordpress.com/2012/12/21/m4ri-20121224/

Other Changes

  • more flexible parameters for running bench_multiplication 43e1cae
  • cache tuning is deprecated now, using plain L1, L2 and L3 gives best performance c257816
  • explicitly prefix m4ri to all includes, i.e., #include <m4ri/foo.h> f036aa3
  • fixed make dist
  • clarified documentation of JCF format and bug fixes c6298bb #49
  • faster benchmarking code for bench_elimination a50540a
  • added support for PAPI in bench_elimination and bench_multiplication b748f8a bd4dde5
  • prettier printing for bench_multiplication f6869ed

Supported Platforms

make check passes on the following platforms

  • x86_64 Linux (sage.math.washington, redhawk.math.washington);
  • x86 OSX (bsd.math.washington);
  • ia64 Linux (iras.skynet);
  • x86 Linux (Pentium 4, cicero.skynet);

The code does not currently build under Windows, help in this area is appreciated.

Updated

Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.