Flu
- almost defeated mine
M4RI
Pronounciation
- It is pronounced "MARI" now.
PLUQ Factorisation of Dense GF(2) Matrices
learned a lot from Clement
- still work in progress, some initial code is written
- nothing to be shown yet, but will keep working
- work-in-progress, alpha, not working code will be released in a few days with the standard M4RI library
M4RI Improvements
- autodetection of L1 and L2 cache
- switch over to Strassen-Winograd Multiplication by default in Sage
- learned a potential further improvement to multiplication from Bill Hart (needs to be implemented)
Performance on Core2Duo improved:
1 sage: A = random_matrix(GF(2),3.2*10^4,3.2*10^4)
2 sage: B = random_matrix(GF(2),3.2*10^4,3.2*10^4)
3 sage: time C = A._multiply_strassen(B,cutoff=4092) #Old
4 CPU times: user 51.32 s, sys: 0.14 s, total: 51.46 s
5 Wall time: 51.86
6
7 sage: time C = A._multiply_strassen(B,cutoff=8192) #New
8 CPU times: user 44.93 s, sys: 0.15 s, total: 45.08 s
9 Wall time: 45.32
1 sage: A = random_matrix(GF(2),3.2*10^4,3.2*10^4)
2 sage: time A.echelonize() #Old
3 CPU times: user 53.67 s, sys: 0.05 s, total: 53.71 s
4 Wall time: 53.99
5
6 sage: A = random_matrix(GF(2),3.2*10^4,3.2*10^4)
7 sage: time A.echelonize() #New
8 CPU times: user 44.25 s, sys: 0.03 s, total: 44.29 s
9 Wall time: 44.50
- RAM consumption for elimination seems lower than Magma, since we don't use any temporaries due to the lack of asymptotically fast elimination. (after you substract the static Sage RAM).
Magma: Total time: 340.579 seconds, Total memory usage: 1934.02MB (for 640002 / 8 / 1024.02 = 488.281MB)
- newest benchmarks:
> A:=RandomMatrix(GF(2),64*10^3, 64*10^3); > time E:=EchelonForm(A); Time: 336.350
Parallel M4RI
- Tried to implement parallel elimination and failed
If it worked however it would enable in the only parallel Gröbner basis engine (PolyBoRi) in commutative polynomial rings I'm aware of.
Review Process
- Editor Meetings
- Reviews
Benchmark**ing
- found out that the mention of "mark**ing" is not allowed on this wiki