Standardizing a linear algebra library
summary
Proposes a C++ standard linear algebra API that separates storage vs operations, supplies fixed‑size, dynamic and MDSpan matrix view storages, plus row/column/vector types and a default operations policy that targets the 90% while allowing customization. Introduces an element_promotion_t trait for mixed precision and handles expression templates as an optional implementation strategy. Shows compatibility with BLAS/Eigen, discusses algorithm choices (Strassen vs O(n^3)) and tradeoffs for performance and cache friendliness.
AI-written summary · about
chapters (18)
- 0:00Introduction and goals
- 1:37Linear algebra fundamentals
- 3:59Applications of linear algebra
- 6:46Solving linear equations
- 11:06Linear regression models
- 14:33Existing matrix libraries
- 17:01Analyzing Blas and Eigen
- 20:45Expression templates
- 26:13Designing the standardization
- 28:50Matrix storage options
- 31:26Arithmetic and promotion
- 36:53Element promotion traits
- 41:41Storage type conversions
- 43:54Matrix operations API
- 47:23Algorithms and complexity
- 51:01Unified matrix classes
- 53:53Teaching and using the API
- 56:53Conclusion and Q&A
related talks
53mProduct Types for C++2x
54mC++26: an overview
01h 10mThe Three Little Dots and the Big Bad Lambdas
01h 06mPhysical Units for Matrices. How Hard Can It Be?
01h 05mThe Most Important Optimizations to Apply in Your C++ Programs
50mDesigning and Implementing a new Allocator model
56mA Smooth Introduction to SYCL for C++20 afficionados
01h 02mBack to Basics: Almost Always Vector
