At first, I thought that OpenBLAS only provided BLAS functionality, but to my surprise the libopenblas.a library also provide LAPACK functionality.
Can you shed some light on what exactly OpenBLAS provides? Does it contain fully-featured LAPACK functionality, or only bits and pieces that were optimized?
Do you still need to build LAPACK and link with it if you require full LAPACK? And if you still need -llapack, in what order should they be linked? lopenblas -llapack, to ensure that the optimized LAPACK functions in OpenBLAS are found first by the linker?
Is this documented somewhere? I only could find a small hint on the wiki w.r.t. OpenBLAS providing some (?) LAPACK functionality.
I've also noticed that the OpenBLAS Makefile automatically download LAPACK. Is there any option to provide it the desired LAPACK tarball somehow, e.g. because the system you're building on can't go online?
If not, I'd be interested in adding that feature in the Makefile, since I require it. ;)
I think it downloads the latest lapack reference implementation during build. There it's complete, I assume. But my last update was that lapack functions are not optimized, aren't they?
It download LAPACK yes, but does it include all of it in libopenblas.a? That's really not clear to me right now...
libopenblas.a only offers some parts of LAPACK (see https://github.com/xianyi/OpenBLAS/issues/182#issuecomment-12461750). It's not fully clear though, at least to me.OK, I think I figured it out...
You can make OpenBLAS build without including LAPACK in it, by specifying NO_LAPACK=1 on the make command line. By default, it includes a full LAPACK lib (with some parts optimized).
I think I can close it.
Most helpful comment
OK, I think I figured it out...
You can make OpenBLAS build without including LAPACK in it, by specifying
NO_LAPACK=1on themakecommand line. By default, it includes a full LAPACK lib (with some parts optimized).