OpenMathLib / OpenBLAS

OpenBLAS is an optimized BLAS library based on GotoBLAS2 1.13 BSD version.
http://www.openblas.net
BSD 3-Clause "New" or "Revised" License
6.31k stars 1.49k forks source link

drotg implementation is not up to date with the reference BLAS #4130

Open vladimir-ch opened 1 year ago

vladimir-ch commented 1 year ago

The Reference BLAS changed their DROTG implementation in https://github.com/Reference-LAPACK/lapack/pull/527 to use a safe scaling. In Gonum we updated our implementation and tests accordingly in https://github.com/gonum/gonum/issues/1623. Unfortunately, the updated tests with extreme values fail in our CBLAS interface package (https://github.com/gonum/netlib/pull/92) where we use OpenBLAS as a reference. It would be nice if OpenBLAS used the same implementation with safe scaling as the reference BLAS.

angsch commented 1 year ago

The same problem will likely trigger for NRM2. As far as I am aware, the assembly implementations in OpenBLAS have not been updated. I think that changing all assembly implementations is a challenge, so one option may be to add an additional symbol, one for the netlib implementation and one for the old optimized implementation.

martin-frbg commented 1 year ago

Pretty much the only somewhat short-term solution I see is to update the "generic" reimplementations and "temporarily" use them for all architectures/cpus that have hand-crafted assembly now

martin-frbg commented 1 year ago

Small clarification - ?ROTG is easy as it is all done in trivial C code in the interface routine, no cpu-specific kernels involved. NRM2 will require a bit more work as there are around 50 assembly kernels in all (and still about 10 if only looking at the most important ones)