Ticket #655 (closed enhancement: fixed)

Opened 2 years ago

Last modified 2 years ago

[with patch] Wrap LinBox's Sparse Matrix Echelonizer over Finite Fields

Reported by: malb Owned by: was
Priority: major Milestone: sage-2.8.5
Component: linear algebra Keywords:
Cc: Author(s):
Report Upstream: Reviewer(s):
Merged in: Work issues:

Description

Apparently, LinBox? can compute echelon forms for sparse matrices over finite fields. And it seems to be faster than what we have now:

SAGE:

sage: A = random_matrix(GF(127),10000,10000,density=0.0002,sparse=True)
sage: time A.echelonize()
CPU times: user 99.64 s, sys: 0.22 s, total: 99.85 s

LinBox?:

matrix size :10000x10000
density = 0.0002
size before = 19981
Gaussian elimination (no reordering)...done (9.08057 s)
DONE
size after = 0 # Bug

I was told that SparseMatrixBase::NoReordering works but InPlaceLinearPivoting crashes.

Also, it claims to support GF(q) which is very very slow in SAGE right now.

Attachments

sparsegfp.patch Download (12.8 KB) - added by malb 2 years ago.
sparsegfq-solve.patch Download (12.7 KB) - added by malb 2 years ago.

Change History

Changed 2 years ago by malb

Actually, the above is not a bug but the size actually is zero after application of the Gaussian elimination. LinBox? clears rows it doesn't need anymore to save memory.

Also, InPlaceLinearPivoting does not crash if called correctly and is often faster than NoReordering.

Changed 2 years ago by malb

Changed 2 years ago by malb

sparsegfp.patch requires  http://sage.math.washington.edu/home/malb/pkgs/linbox-20070915.spkg and exposes some of LinBox?'s functionality for sparse matrices over GF(p) to SAGE. More to come.

Changed 2 years ago by malb

Changed 2 years ago by malb

  • milestone changed from sage-2.9 to sage-2.8.4.3

Changed 2 years ago by mabshoff

  • summary changed from Wrap LinBox's Sparse Matrix Echelonizer over Finite Fields to [with patch] Wrap LinBox's Sparse Matrix Echelonizer over Finite Fields

Changed 2 years ago by was

  • status changed from new to closed
  • resolution set to fixed
Note: See TracTickets for help on using tickets.