Meataxe64 – further progress.

I think it fair to say that meataxe64 is now in a state where it can be used.  I am continuing to work on it (part time) to improve its usability, to test it to look for bugs and to produce some documentation, but I will produce a tarball (version 1 alpha) later this week, and if anyone wishes to try it or use it, I will email it to them.  Just message me here if you can’t find my email address.

Currently at “Ninja” scale (i.e. work at dimensions over a million) are Multiply and Echelon Form in fields of order 2 and 3, enabling nullspace and split to be done.  I propose to test it with a direct attack on Conway 3 mod 2.  There is, however, no way at present to do inversion or Standard Base at this scale.  It works on any 64-bit x86 (except some very early versions) under linux and uses all the tricks I can think of such as vector instructions, cache and superscalar friendly algorithms, reliable branch prediction and the use of multiple-cores.

Many other programs – basically those that are not of cubic complexity – are also available in “stone-age” form (i.e. work with rows without grease, single-core and using table-lookup) which are also applicable at huge dimensions and over any field of order less than 2^64.  Such programs are add, tensor, skew-square and cube.

There are also the other “stone-age” programs that do not work at Ninja scale – including Standard Base and Invert – so that the system can be used to chop up huge representations, and then work on them more conveniently once the components are small enough.

There is an I/O routine that can be included in a user-written program to read and write meataxe64 matrices should it be necessary to import or export huge matrices.  Otherwise the standard “meataxe” ASCII format can be used.

Planned Release of meataxe64 version 1.

I am currently working fairly hard to get a first viable version of meataxe64 available, so that it can actually be used for its original purpose – modular representations.

I am promising nothing, but my expectations are that a “beta” version 1 will be available early June, which I (and anyone else who wants to) can test.  I have no doubt that several shortcomings will become apparent, to be fixed late June-early July so that a release candidate of version 1 exists by about mid July.  After that, changes will only be done in response to major problems, and the source code branched to start on version 2.

Overall the aim is that version 1 should enable multiply, nullspace and split at full “Ninja” speed in the fields of order 2 and 3 (and more slowly for all other fields up to 2^64), so that it can be used for basic meataxe purposes.  There are quite a few other programs that are not at Ninja speed, either because it is not needed (e.g. Add) or where the Ninja version has considerable complexity (e.g. invert, standard base) so the work is postponed to a later version.  These are, however, included as “stone-age” versions that work in meataxe64 format but do so in the simple-minded way of working in Dfmt with single rows.

If anyone is planning to use version 1 for production work, I recommend that they get in touch with me so that I am aware of their expectations.  Also it would make a lot of sense for them to try the “beta” version so that any howlers (from their point of view) can be considered for fixing before the release candidate.