Skip to main content

Elements of Design for Containers and Solutions in the LinBox Library

Extended Abstract

  • Conference paper

Part of the book series: Lecture Notes in Computer Science ((LNTCS,volume 8592))

Abstract

We describe in this paper new design techniques used in the C++ 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 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 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 library and supporting regression testing.

This material is based on work supported in part by the National Science Foundation under Grant CCF-1115772 (Kaltofen) and Grant CCF-1018063 (Saunders).

This material is based on work supported in part by the Agence Nationale pour la Recherche under Grant ANR-11-BS02-013 HPAC (Dumas, Giorgi, Pernet).

This is a preview of subscription content, log in via an institution.

Buying options

Chapter
USD   29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD   39.99
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD   54.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Learn about institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. Alexandrescu, A.: Modern C++ design: generic programming and design patterns applied. C++ in-depth series. Addison-Wesley (2001)

    Google Scholar 

  2. Boyer, B.: Multiplication matricielle efficace et conception logicielle pour la bibliothéque de calcul exact LinBox. PhD thesis, Université de Grenoble (June 2012)

    Google Scholar 

  3. Boyer, B., Dumas, J.-G.: Matrix multiplication over word-size prime fields using Bini’s approximate formula (submitted, May 2014), http://hal.archives-ouvertes.fr/hal-00987812

  4. Boyer, B., Dumas, J.-G., Giorgi, P.: Exact sparse matrix-vector multiplication on GPU’s and multicore architectures. In: Proceedings of the 4th International Workshop on Parallel and Symbolic Computation, PASCO 2010, pp. 80–88. ACM, New York (2010)

    Google Scholar 

  5. Boyer, B., Dumas, J.-G., Pernet, C., Zhou, W.: Memory efficient scheduling of Strassen-Winograd’s matrix multiplication algorithm. In: Proceedings of the 2009 International Symposium on Symbolic and Algebraic Computation, ISSAC 2009, pp. 55–62. ACM, New York (2009)

    Chapter  Google Scholar 

  6. Cung, V.-D., Danjean, V., Dumas, J.-G., Gautier, T., Huard, G., Raffin, B., Rapine, C., Roch, J.-L., Trystram, D.: Adaptive and hybrid algorithms: classification and illustration on triangular system solving. In: Dumas, J.-G. (ed.) Proceedings of Transgressive Computing 2006, Granada, España (April 2006)

    Google Scholar 

  7. Dumas, J.-G., Gautier, T., Giesbrecht, M., Giorgi, P., Hovinen, B., Kaltofen, E., Saunders, B.D., Turner, W.J., Villard, G.: LinBox: A generic library for exact linear algebra. In: Proceedings of the 2002 International Congress of Mathematical Software, Beijing China, World Scientific Pub. (August 2002)

    Google Scholar 

  8. Dumas, J.-G., Gautier, T., Pernet, C., Saunders, B.D.: LinBox founding scope allocation, parallel building blocks, and separate compilation. In: Fukuda, K., van der Hoeven, J., Joswig, M., Takayama, N. (eds.) ICMS 2010. LNCS, vol. 6327, pp. 77–83. Springer, Heidelberg (2010)

    Chapter  Google Scholar 

  9. Dumas, J.-G., Gautier, T., Pernet, C., Sultan, Z.: Parallel computation of echelon forms. In: Proceedings of the 20th International Conference on Parallel Processing, Euro-Par 2014, Porto, Portugal. LNCS, vol. 8632 (August 2014) (to appear)

    Google Scholar 

  10. Dumas, J.-G., Giorgi, P., Pernet, C.: Dense linear algebra over word-size prime fields: the Fflas and Ffpack packages. ACM Trans. Math. Softw. 35(3), 1–42 (2008)

    Article  MathSciNet  Google Scholar 

  11. Gamma, E.: Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley Professional Computing Series. Addison-Wesley (1995)

    Google Scholar 

  12. von zur Gathen, J., Gerhard, J.: Modern Computer Algebra. Cambridge University Press, New York (1999)

    MATH  Google Scholar 

  13. Giorgi, P.: Arithmètique et algorithmique en algèbre linéaire exacte pour la bibliothèque LinBox. PhD thesis, École normale supérieure de Lyon (December 2004)

    Google Scholar 

  14. Giorgi, P., Lebreton, R.: Online order basis and its impact on block Wiedemann algorithm. In: Proceedings of the 2014 International Symposium on Symbolic and Algebraic Computation, ISSAC 2014. ACM (to appear, 2014)

    Google Scholar 

  15. Gregor, D., Järvi, J., Kulkarni, M., Lumsdaine, A., Musser, D., Schupp, S.: Generic programming and high-performance libraries. International Journal of Parallel Programming 33, 145–164 (2005), 10.1007/s10766-005-3580-8

    Google Scholar 

  16. Harvey, D.: Faster arithmetic for number-theoretic transforms. Journal of Symbolic Compututations 60, 113–119 (2014)

    Article  MATH  Google Scholar 

  17. Stroustrup, B.: The design and evolution of C++. Programming languages/C++. Addison-Wesley (1994)

    Google Scholar 

  18. Sutter, H., Alexandrescu, A.: C++ Coding Standards: 101 Rules, Guidelines, and Best Practices. The C++ In-Depth Series. Addison-Wesley (2005)

    Google Scholar 

  19. Turner, W.J.: Blackbox linear algebra with the library. PhD thesis, North Carolina State University (May 2002)

    Google Scholar 

  20. Wezowicz, M., Saunders, B.D., Taufer, M.: Dealing with performance/portability and performance/accuracy trade-offs in heterogeneous computing systems: a case study with matrix multiplication modulo primes. In: Proc. SPIE, vol. 8403, pp. 08–08–10 (2012)

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2014 Springer-Verlag Berlin Heidelberg

About this paper

Cite this paper

Boyer, B., Dumas, JG., Giorgi, P., Pernet, C., Saunders, B.D. (2014). Elements of Design for Containers and Solutions in the LinBox Library. In: Hong, H., Yap, C. (eds) Mathematical Software – ICMS 2014. ICMS 2014. Lecture Notes in Computer Science, vol 8592. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-662-44199-2_98

Download citation

  • DOI: https://doi.org/10.1007/978-3-662-44199-2_98

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-662-44198-5

  • Online ISBN: 978-3-662-44199-2

  • eBook Packages: Computer ScienceComputer Science (R0)

Publish with us

Policies and ethics