- You are offering to upgrade a lot of the LINPACK, etc. stuff in v3p_netlib to the modern LAPACK.
Yes. This work has already been done for ITK's copy of VNL (not pushed upstream in ITK yet though). We were able to remove EISPACK and LINPACK entirely.
- In the new version, users will be encouraged to use a platform-provided or other external BLAS/LAPACK library.
Correct. The reference BLAS library is intended to be used as a reference and for debugging but even the README inside the netlib BLAS library discourages it's use.
- If they decline and they have a Fortran compiler, CMake will build a VXL-specific BLAS/LAPACK implementation.
I believe we are on the same page but just to clarify: the Fortran libraries that get built by VXL would be the vanilla Fortran code, unmodified, but the library names would be something like libv3p_blas.a and libv3p_lapack.a
- If they decline and have Windows, VXL will have a ready built library binary in the repository.
Pretty much. Really it's if they decline and don't have a Fortran compiler available (which is likely the case on Windows but not necessarily). I was also planing on the binaries not being checked in to the repository. Either the user could download them manually or we could have the build automatically download the binaries.
There is no need to create vnl2, vnl doesn't use BLAS or other bits of netlib. It is vnl_algo2 and v3p_netlib2 that you will need to create.
Agreed. As vnl is designed / implemented it has no external dependencies and we would only need to do this in vnl_algo.
However, I would also like to propose implementing the matrix and vector operators with BLAS routines. It would only be for vnl_matrix and vnl_vector and not for the fixed versions as those tend to be much smaller and likely to benefit more for compile time optimizations than an external optimized library. This has the obvious benefit of accelerating most expressions already implemented with these classes but it also would require that vnl carry an external dependency. I realize though that this is a very different design change that needs to be discussed a bit first
Windows 64bit and 32bit versions of the pre-built new v3p_netlib would be useful.
Thanks for doing this work. I'm sure it will be very much appreciated.
I've wanted a chance to work on this for quite some time and we just happen to finally find a way to fund it. It's definitely not just me though. Julie Langou from the LAPACK team has been invaluable in migrating the codes using EISPACK and LINPACK over to LAPACK while Brad King and Bill Hoffman have been working on the CMake / Fortran / Windows integration.