I have been looking into C++ linear algebra libraries for a project I've been working on. Something that I still don't have any grasp on is the connection of BLAS and LAPACK to other linear algebra libraries.
Looking through this article on linear algebra libraries I found it interesting that:
- some libraries are independent from BLAS and LAPACK
- some require BLAS and LAPACK
- some have optional interfaces to BLAS and LAPACK
- and, as I understand it, you can use BLAS and LAPACK to solve linear algebra problems directly
I can imagine that some libraries are simply C++ interfaces to BLAS and LAPACK libraries written in C and Fortran and others have implemented their own substitute routines, but
What are the implications of the optional interfaces to BLAS and LAPACK? What are you loosing by opting out, and what are the libraries doing instead?
Do any of the libraries provide more than just an interface? For example, UMFPACK is written in C and has optional interfaces to BLAS and LAPACK. What can UMFPACK (or other libraries) do that BLAS and LAPACK can't on their own?