./math/blas, Basic Linear Algebra System (Netlib reference implementation)

[ CVSweb ] [ Homepage ] [ RSS ] [ Required by ] [ Add to tracker ]


Branch: CURRENT, Version: 3.12.0, Package name: blas-3.12.0, Maintainer: thomas.orgis

The BLAS (Basic Linear Algebra Subprograms) are high quality "building
block" routines for performing basic vector and matrix
operations. Level 1 BLAS do vector-vector operations, Level 2 BLAS do
matrix-vector operations, and Level 3 BLAS do matrix-matrix
operations. Because the BLAS are efficient, portable, and widely
available, they're commonly used in the development of high quality
linear algebra software, LINPACK and LAPACK for example.

This package contains the Fortran 77 reference implementation of BLAS.


Required to run:
[lang/g95]

Required to build:
[pkgtools/cwrappers]

Master sites:

Filesize: 7747.663 KB

Version history: (Expand)


CVS history: (Expand)


   2024-01-08 22:28:57 by Dr. Thomas Orgis | Files touched by this commit (26) | Package updated
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: lapack-3.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 Rayleigh-Ritz 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 Operator-Based
    Forecasting for Nonstationary Processes from Near-Term, Limited
    Observational Data", Contract No: W31P4Q-21-C-0007; (2) DARPA PAI
    project "Physics-Informed Machine Learning Methodologies", Contract
    No: HR0011-18-9-0033; (3) DARPA MoDyL project "A Data-Driven,
    Operator-Theoretic Framework for Space-Time Analysis of Process
    Dynamics", Contract No: HR0011-16-C-0116. 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
    @martin-frbg 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 M-by-N 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 2-norm of the residual
    matrix R22(K); (3) The input parameter RELTOL, the tolerance for the
    maximum column 2-norm matrix of the residual matrix R22(K) divided by
    the maximum column 2-norm 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 n-element 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 64-bit API

    Fix CBLAS tests with 64-bit indexing by @svillemot in PR 767

    Add Index-64 API as extended API with _64 suffix for CBLAS by
    @mkrainiuk in PR 846

    Revert "Add Index-64 API as extended API with _64 suffix for CBLAS"
    by @langou in PR 856

    Add Index-64 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 (c|z)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 @martin-frbg 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 zero-sized 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 @aravindh-krishnamoorthy in
    PR 867

    fix nrhs=0 case in ?gelss by @eaberendeev in PR 876

    Fix computation of uplo in LAPACKE_xlarfb by @vladimir-ch 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 @christoph-conrads 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
   2021-06-15 06:41:53 by Dr. Thomas Orgis | Files touched by this commit (36)
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, f2c-based)
and BLAS/LAPACK with f2c/g77 calling conventions. A default build with
gfortran would not like that

This commit also fixes up math/py-numpy and math/py-numpy16 to follow the
new scheme, as that are the only packages directly affected by the change
in CBLAS providership.
   2021-05-12 16:32:52 by Dr. Thomas Orgis | Files touched by this commit (12) | Package updated
Log message:
math/lapack, blas, cblas, lapacke: update to version 3.9.1

This includes a rework of the build system patches, which I'll try
to push upstream …
   2020-10-12 23:52:05 by Jason Bacon | Files touched by this commit (87)
Log message:
math/blas, math/lapack: Install interchangeable BLAS system

Install the new interchangeable BLAS system created by Thomas Orgis,
currently supporting Netlib BLAS/LAPACK, OpenBLAS, cblas, lapacke, and
Apple's Accelerate.framework.  This system allows the user to select any
BLAS implementation without modifying packages or using package options, by
setting PKGSRC_BLAS_TYPES in mk.conf. See mk/blas.buildlink3.mk for details.

This commit should not alter behavior of existing packages as the system
defaults to Netlib BLAS/LAPACK, which until now has been the only supported
implementation.

Details:

Add new mk/blas.buildlink3.mk for inclusion in dependent packages
Install compatible Netlib math/blas and math/lapack packages
Update math/blas and math/lapack MAINTAINER approved by adam@
OpenBLAS, cblas, and lapacke will follow in separate commits
Update direct dependents to use mk/blas.buildlink3.mk
Perform recursive revbump
   2020-02-28 22:48:54 by Iain Hibbert | Files touched by this commit (14)
Log message:
Update math/lapack and math/blas to v3.9.0

Have switched to the CMAKE build and enabled tests.
make test passes all (with one patch pushed upstream)

Package additions, from the release notes are:

LAPACK 3.9.0
   LAPACK QR
      preconditioned QR SVD method for computing the SVD with high accuracy,
      by Zlatko Drmac

   LAPACK Householder Reconstruction
      by Igor Kozachenko and Jim Demmel

LAPACK 3.8.0
   Symmetric-indefinite Factorization: Aasen’s tridiagonalization 2 stage
      A contribution from Ichitaro Yamazaki (University of Tennessee).

   LAPACKE interfaces
      A contribution from Julie Langou (University of Tennessee).
   2016-12-03 16:37:34 by John Marino | Files touched by this commit (2)
Log message:
math/lapack: Restore build on DragonFly

Linking lapack with the gold linker fails with this error:
fatal error: --sysroot=: must take a non-empty argument

DragonFly has been using the gold linker by default for a while now.
Since I don't have time to track down this linking problem, I'm going
to restore the build on DragonFly by setting an environment variable
that forces DF to use the classic GNU linker instead.

This was already fixed on math/blas which uses the lapack common
makefile, so just relocate the fix to lapack.
   2016-12-03 04:42:45 by John Marino | Files touched by this commit (1)
Log message:
math/blas: Restore build on DragonFly

Linking blas with the gold linker fails with this error:
fatal error: --sysroot=: must take a non-empty argument

DragonFly has been using the gold linker by default for a while now.
Since I don't have time to track down this linking problem, I'm going
to restore the build on DragonFly by setting an environment variable
that forces DF to use the classic GNU linker instead.

At this point in time, I don't know if BLAS is unique or if LAPACK
and others need the same workaround.  If the latter, this variable
may need to be moved to the common LAPACK makefile.
   2016-10-18 16:08:48 by Thomas Klausner | Files touched by this commit (1) | Package updated
Log message:
Update blas to 3.6.1 as well.

Changes: see lapack.

Both updates provided by Kai-Uwe Eckhardt in private email.