Log message:
math/{lapack*,cblas*}: update netlib BLAS to 3.12.0
This drops the static libraries along with the custom patches for those. Also,
the hack of linking CBLAS as Fortran library as opposed to C is gone. If this
breaks some NetBSD install, it should be investigated and fixed properly.
The only patch now is one unified one I already submitted for inclusion
upstream. Maybe soon we can drop any patches. Yay!
Here is a list of upstream changes:
LAPACK 3.12.0: What’s new
Download: lapack3.12.0.tar.gz
This is a major release and also addressing multiple bug fixes.
Dynamic Mode Decomposition (DMD)
xGEDMD computes the Dynamic Mode Decomposition (DMD) for a pair of
data snapshot matrices. For the input matrices X and Y such that Y =
A*X with an inaccessible matrix A, xGEDMD computes a certain number
of Ritz pairs of A using the standard RayleighRitz extraction from
a subspace of range(X) that is determined using the leading left
singular vectors of X. Optionally, xGEDMD returns the residuals of
the computed Ritz pairs, the information needed for a refinement of
the Ritz vectors, or the eigenvectors of the Exact DMD.
xGEDMDQ does the same as xGEDMD but uses a QR factorization based
compression of the data.
See: Z. Drmac: A LAPACK implementation of the Dynamic Mode
Decomposition I. Technical report. AIMDyn Inc. and LAPACK Working
Note 298.
Developed and coded by Zlatko Drmac, Faculty of Science, University
of Zagreb. In cooperation with AIMdyn Inc., Santa Barbara, CA. And
supported by (1) DARPA SBIR project "Koopman OperatorBased
Forecasting for Nonstationary Processes from NearTerm, Limited
Observational Data", Contract No: W31P4Q21C0007; (2) DARPA PAI
project "PhysicsInformed Machine Learning Methodologies", Contract
No: HR00111890033; (3) DARPA MoDyL project "A DataDriven,
OperatorTheoretic Framework for SpaceTime Analysis of Process
Dynamics", Contract No: HR001116C0116. Any opinions, findings and
conclusions or recommendations expressed in this material are those of
the author and do not necessarily reflect the views of the DARPA SBIR
Program Office. Distribution Statement A: Approved for Public Release,
Distribution Unlimited. Cleared by DARPA on September 29, 2022
Adding Dynamic Mode Decomposition (DMD) into LAPACK by @dbielich in
PR 736
Update C prototypes and LAPACKE interfaces for ?GEDMD/?GEDMDQ by
@martinfrbg in PR 880
Truncated QR with Column Pivoting
The routine computes a truncated (rank K) or full rank Householder
QR factorization with column pivoting of a real MbyN matrix A
using Level 3 BLAS.
The truncation criteria (i.e. when to stop the factorization) can
be any of the following: (1) The input parameter KMAX, the maximum
number of columns KMAX to factorize; (2) The input parameter ABSTOL,
the absolute tolerance for the maximum column 2norm of the residual
matrix R22(K); (3) The input parameter RELTOL, the tolerance for the
maximum column 2norm matrix of the residual matrix R22(K) divided by
the maximum column 2norm of the original matrix A, which is equal
to abs(R(1,1)). The algorithm stops when any of these conditions is
first satisfied, otherwise the whole matrix A is factorized.
Truncated QR with Column Pivoting by @scr2016 in PR 891
Reciprocal Scaling of complex vectors
[C/Z]RSCL multiplies an nelement complex vector x by the complex
scalar 1/a. This is done without overflow or underflow as long as
the final result x/a does not overflow or underflow.
See: "An algorithm for scaling vectors by the reciprocal
of a complex number", Weslley da Silva Pereira,
[arXiv:2311.05736](https://arxiv.org/abs/2311.05736)
Adds CRSCL by @weslleyspereira in PR 839
Improvements in the 64bit API
Fix CBLAS tests with 64bit indexing by @svillemot in PR 767
Add Index64 API as extended API with _64 suffix for CBLAS by
@mkrainiuk in PR 846
Revert "Add Index64 API as extended API with _64 suffix for CBLAS"
by @langou in PR 856
Add Index64 API as extended API with _64 suffix for CBLAS by
@mkrainiuk in PR 867
Create DOCS/CBLAS.md by @mkrainiuk in PR 863
Reduce number of macros in fortran compilation line for BLAS _64
API by @mkrainiuk in PR 861
Bug fixes and other changes
Windows build fix by @ACSimon33 in PR 760
Added option to enable flat namespace on macOS by @ACSimon33 in PR 762
Fix bug in new test case for LAPACK 3.11 SLATRS3 by @dklyuchinskiy
in PR 755
Check for NaNs in *GECON by @weslleyspereira in PR 765
Fixed bug in array bounds in complex syl01 test by @dklyuchinskiyin
PR 758
Fix uninitialized M when quick return in DLARRD and SLARRD by
@akobotov in PR 769
In LAPACKE tgsen, allocate iwork when ijob = 0. Fixes #772. by
@mgates3 in PR 773
Fix SLATRS3 and CLATRS3 tests by @bartoldeman in PR 764
Fix uninitialized out variables in LARR functions by @echeresh in
PR 775
Warnings supression in some LAPACKE functions by @jgpallero in PR 780
Revert "Warnings supression in some LAPACKE functions" by @langou
in PR 781
Warnings supression and deletion of unnecessary check in some LAPACKE
xLARFB functions by @jgpallero in PR 782
remove redundant space from xerbla call sbgv/hbgv by @dklyuchinskiy
in PR 792
don’t subtract N_DEFLATED from istop twice by @thijssteel in PR 794
fix rfp test for DIAG = U by @dklyuchinskiy in PR 796
fix bug in complex precision tests (cz)het21 by @EduardFedorenkov
in PR 798
CMake: Disable TEST_FORTRAN_COMPILER by @jschueller in PR 761
Fix typos in documentation by @angsch in PR 750
Add minimum permissions to workflows by @gabibguti in PR 804
Add numerical tests for trevc3 by @angsch in PR 682
Remove legacy function LABAD by @angsch in PR 805
Refactor xGEBAL by @eprovst in PR 808
Fix typos and errors in comments by @jip in PR 809
cmake: allow setting a prefix for the library names by @joseeroman
in PR 810
Fix typos in comments by @jip in PR 811
fix #813 by @langou in PR 814
Replace the (partially defined) constant index variable INDIBL in
?SBGVX and related by @martinfrbg in PR 807
CTGEVC, ZTGEVC: fix typo in description of VR argument by @svillemot
in PR 812
Add Security Policy by @gabibguti in PR 819
typos by @musvaage in PR 820
extend tests for error exit sysv sytd2 gehd2 by @dklyuchinskiy in
PR 795
CMake: avoid "make" in blas++ and lapack++ by @nim65s in PR 821
appveyor: output test failures by @nim65s in PR 822
Reference actions by commit SHA by @gabibguti in PR 829
LAPACKE interfaces for [cz]unhr_col and [sd]orhr_col by @sknepper
in PR 827
fix segfault problem when executing LAPACKE_*geqrt on row major #766
by @sbite0138 in PR 768
Adds comment related to zerosized matrix B in GELSY by
@weslleyspereira in PR 833
update brief descriptions of function purpose, Closes #230 by
@weslleyspereira in PR 831
Fix scaling in (S/D)TGSNA, fix #103, thanks to @elivanova by
@weslleyspereira in PR 830
Exits xLARUV when N < 1 by @weslleyspereira in PR 837
Create GitHub action to test CMake build system on Windows by
@weslleyspereira in PR 524
Fix bug in lapacke_[s,d]geesx by @weslleyspereira in PR 836
Removes unused SMIN from bdsqr by @weslleyspereira in PR 832
Use a better (more informative) message when we say the compiler
intr… by @weslleyspereira in PR 845
Improve variants of Cholesky and QR by @angsch in PR 847
fixes #848 by @jaganmn in PR 849
Attempt to fix Appveyor on Windows by @angsch in PR 854
fix dlasd0 / slasd0 documentation issue by @mtowara in PR 855
Remove legacy warning for non IEEE 754 compliant machines by @angsch
in PR 852
Add verbose build to CI by @mkrainiuk in PR 858
[cz]hetrd_hb2st.F, [sd]sytrd_sb2st.F OpenMP fixes by @chrwarm in
PR 860
new doxygen group structure by @mgates3 in PR 802
Correct the order of returned eigenvalue and eigenvectors for 2x2
matrices with IL=IU in C/D/S/Z/STEMR by @aravindhkrishnamoorthy in
PR 867
fix nrhs=0 case in ?gelss by @eaberendeev in PR 876
Fix computation of uplo in LAPACKE_xlarfb by @vladimirch in PR 878
Fix workspace query corner cases by @angsch in PR 883
Fix actual arguments in some procedure calls by @mjacobse in PR 885
Improve Cholesky variants by @angsch in PR 889
Removes usage of Experimental (interactive) mode in ctest by
@weslleyspereira in PR 892
Updates the documentation of xGEMV and xGBMV related to when M=0
and N=0 by @weslleyspereira in PR 843
Add Scorecard by @gabibguti in PR 895
Remove auxiliary GEQRS, GELQS by @angsch in PR 900
CMake config for IntelLLVM (ifx) and NVIDIA HPC SDK (nvfortran)
by @ACSimon33 in PR 898
Fix build for CMake >= 3.27 by @scivision in PR 910
allow absolute GNU install dirs by @chayleaf in PR 893
dtgex2: add 2 to iwork length to prevent OOB interaction in Dtgsy2
by @soypat in PR 907
Adds OpenSSF Scorecard badge by @weslleyspereira in PR 896
Fix issue #908 related to accumulation in xLASSQ by @weslleyspereira
in PR 909
Apply ROUNDUP_LWORK function in lapack by @kleineLi in PR 904
Compilation of LAPACKE possibly independent from Fortran by
@weslleyspereira in PR 834
Always use C as linker language for CBLAS by @weslleyspereira in
PR 920
Uses Valgrind for ExperimentalMemCheck in ctest by @weslleyspereira
in PR 844
Adding in quotes in cmake for Intel ifx and linux build by @colleeneb
in PR 922
Fix complex BDSQR maxit by @pleshkovvli in PR 927
xORBDB6/xUNBDB6: fix a constant by @christophconrads in PR 928
Fixed Fortran preprocessor flag for NAG Fortran compiler by @ACSimon33
in PR 939
Fixed void main() for AppleClang by @ACSimon33 in PR 940

Log message:
mk/blas.bl3, Netlib and OpenBLAS packages, NumPy: C fixup and 64 bits
This delivers 64 bit index BLAS libraries alongside 32 bit ones. This is often
called ILP64 in the BLAS world, as opposed to LP64 where integers are 32 bit
due to the Fortran default integer type, not to be confused with the basic
system ABI used by C. For really large vectors on modern machines, you want
an 'ILP64' BLAS and layers on top of it.
In preparation of better support for vendor BLAS libraries, I had to realize
that you better use the C interfaces supplied by them, not the netlib one
strapped on. A simple reason of practicability: The vendor blas libraries,
just like openblas, like to ship all symbols in one library, so you get them
whether you want it or not. Also implementations may skip Fortran and implement
the underlying functionality directly in C anyway, so one might skip a
layer of indirection. Future will tell if other layers will follow. We still
have the framework of individual layers from Netlib to combine with certain
implementations that miss them (Accelerate framework comes to mind, which
needs further work).
The framework of netlib reference packages for the separate libraries
is instructive and helps keeping things small when you not need all of them.
The installation location of the headers is now in a subdirectory to be able
to have 32 and 64 bit variants independently. The 32 bit ones are linked to
${PREFIX}/include to keep the old picture. We could be brave and remove
those, but there is some value in a build just trying lcblas and
inclusion of <cblas.h> to be happy.
There is one blas.buildlink3.mk that is supposed to be used only once and
so avoids a combination of conflicting libraries (as the 64 bit index symbols
have the same names as the 32 bit ones).
Basic usage for getting LAPACK+BLAS is still the same as before. You get
CBLAS and LAPACKE by setting BLAS_C_INTERFACE=yes in the package. The 64 bit
indices are selected via BLAS_INDEX64=yes.
Due to the special nature of the Accelerate framework, a package has to
explicitly indicate support for it and it will also not appear on the
list of implementations by default. The reason is that it does provide
mainly CBLAS and CLAPACK (another version of C interface to LAPACK, f2cbased)
and BLAS/LAPACK with f2c/g77 calling conventions. A default build with
gfortran would not like that
This commit also fixes up math/pynumpy and math/pynumpy16 to follow the
new scheme, as that are the only packages directly affected by the change
in CBLAS providership.
