Dear all,
(sorry for duplicates, for those subscribed also to linbox-devel or sage-devel)
No question, no bug report, but just a short report
about a SageMath Google Summer of Code project related to LinBox /
FFLAS-FFPACK which was carried out this summer, by student Marie
Bonboire from Sorbonne Université, France.
In short, the goal was
to improve as much as possible the integration of LinBox / FFLAS-FFPACK
inside SageMath, within the given time frame (12 weeks). The idea of
this project was born after some disturbing observations within
SageMath, such as the fact that creating a 2000 x 2000 zero matrix over a
prime field (say 20 bit prime), or taking a submatrix of some 2000 x
2000 matrix, was taking roughly as much time (~0.2-0.5sec) as computing
the reduced row echelon form of a 2000 x 2000 matrix.
In the end,
these particular issues were solved, and many other similar
improvements have been done. For more details, you can read Marie's
internship report at:
https://raw.githubusercontent.com/marizee/GSoC-2023/main/internship_report.pdfThe information is also condensed on her GSoC final submission website:
https://marizee.github.io/GSoC-2023/Since
dealing with the basic issues was more intricate than initially
thought, some goals were left as future work. In particular, it would be
nice to provide some more flexibility on the Gaussian elimination /
echelon forms provided in SageMath. Indeed, currently the only
interfaced method from LinBox / FFLAS-FFPACK does not preserve rank
profiles, which is a limitation in some contexts (e.g. Gröbner basis
computations). It does not seem like a lot of work: switching between
FfpackSlabRecursive / FfpackTileRecursive LuTag at the right place,
perhaps offering better access to the row and column permutations, and
doing all necessary sanity checks. If anyone is interested in having a
look at this, please let me know.
Best regards,
Vincent N.