Elements of Design for Containers and Solutions in the LinBox Library
Brice Boyer, Jean-Guillaume Dumas (LJK), Pascal Giorgi (LIRMM),, Cl\'ement Pernet (INRIA Grenoble Rh\^one-Alpes / LIG Laboratoire, d'Informatique de Grenoble), B. David Saunders (CIS)

TL;DR
This paper introduces new design techniques for the LinBox library, enhancing safety, usability, and efficiency in exact linear algebra computations through container simplification, a strategy pattern variation, and a benchmarking framework.
Contribution
It presents a simplified container structure, a novel controller-plugin strategy pattern, and a benchmarking architecture to improve LinBox's usability and performance.
Findings
Simplified container structure improves code clarity.
Controller-plugin pattern enables flexible algorithm selection.
Benchmark framework facilitates performance tuning and regression testing.
Abstract
We describe in this paper new design techniques used in the \cpp exact linear algebra library \linbox, intended to make the library safer and easier to use, while keeping it generic and efficient. First, we review the new simplified structure for containers, based on our \emph{founding scope allocation} model. We explain design choices and their impact on coding: unification of our matrix classes, clearer model for matrices and submatrices, \etc Then we present a variation of the \emph{strategy} design pattern that is comprised of a controller--plugin system: the controller (solution) chooses among plug-ins (algorithms) that always call back the controllers for subtasks. We give examples using the solution \mul. Finally we present a benchmark architecture that serves two purposes: Providing the user with easier ways to produce graphs; Creating a framework for automatically tuning the…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
Taxonomy
TopicsParallel Computing and Optimization Techniques · Logic, programming, and type systems · Formal Methods in Verification
