Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Compatibility with (reference) BLAS 3.10.1? #699

Open
h-vetinari opened this issue Dec 18, 2022 · 1 comment
Open

Compatibility with (reference) BLAS 3.10.1? #699

h-vetinari opened this issue Dec 18, 2022 · 1 comment

Comments

@h-vetinari
Copy link
Contributor

Hey all

I just wanted to check whether blis considers itself compatible with the BLAS APIs from upstream 3.10.1. We'd like to lift our baseline across blas-flavours in conda-forge, and for that I'd like to make sure that all symbols are supported everywhere. Perhaps this is a wrong question to ask, given blis' architecture, but I cannot really tell the state as an outsider. 😅

For reference, running

git diff tags/v3.9.0..tags/v3.10.1 --stat | grep -i "blas"

on the upstream repo I get the following stats:

 BLAS/CMakeLists.txt                           |     4 +-
 BLAS/SRC/CMakeLists.txt                       |    40 +-
 BLAS/SRC/Makefile                             |     6 +
 BLAS/SRC/caxpy.f                              |     8 +-
 BLAS/SRC/ccopy.f                              |     8 +-
 BLAS/SRC/cdotc.f                              |    12 +-
 BLAS/SRC/cdotu.f                              |    12 +-
 BLAS/SRC/cgbmv.f                              |     7 +-
 BLAS/SRC/cgemm.f                              |    14 +-
 BLAS/SRC/cgemv.f                              |     7 +-
 BLAS/SRC/cgerc.f                              |     7 +-
 BLAS/SRC/cgeru.f                              |     7 +-
 BLAS/SRC/chbmv.f                              |     7 +-
 BLAS/SRC/chemm.f                              |     7 +-
 BLAS/SRC/chemv.f                              |     7 +-
 BLAS/SRC/cher.f                               |     7 +-
 BLAS/SRC/cher2.f                              |     7 +-
 BLAS/SRC/cher2k.f                             |     7 +-
 BLAS/SRC/cherk.f                              |     7 +-
 BLAS/SRC/chpmv.f                              |     7 +-
 BLAS/SRC/chpr.f                               |     7 +-
 BLAS/SRC/chpr2.f                              |     7 +-
 BLAS/SRC/crotg.f                              |    97 -
 BLAS/SRC/crotg.f90                            |   229 +
 BLAS/SRC/cscal.f                              |     8 +-
 BLAS/SRC/csrot.f                              |     8 +-
 BLAS/SRC/csscal.f                             |     8 +-
 BLAS/SRC/cswap.f                              |     8 +-
 BLAS/SRC/csymm.f                              |     7 +-
 BLAS/SRC/csyr2k.f                             |     7 +-
 BLAS/SRC/csyrk.f                              |     7 +-
 BLAS/SRC/ctbmv.f                              |     7 +-
 BLAS/SRC/ctbsv.f                              |     7 +-
 BLAS/SRC/ctpmv.f                              |     7 +-
 BLAS/SRC/ctpsv.f                              |     7 +-
 BLAS/SRC/ctrmm.f                              |     7 +-
 BLAS/SRC/ctrmv.f                              |     7 +-
 BLAS/SRC/ctrsm.f                              |     7 +-
 BLAS/SRC/ctrsv.f                              |     7 +-
 BLAS/SRC/dasum.f                              |     8 +-
 BLAS/SRC/daxpy.f                              |     8 +-
 BLAS/SRC/dcabs1.f                             |     8 +-
 BLAS/SRC/dcopy.f                              |     8 +-
 BLAS/SRC/ddot.f                               |     8 +-
 BLAS/SRC/dgbmv.f                              |     7 +-
 BLAS/SRC/dgemm.f                              |    15 +-
 BLAS/SRC/dgemv.f                              |     7 +-
 BLAS/SRC/dger.f                               |     7 +-
 BLAS/SRC/dnrm2.f                              |   132 -
 BLAS/SRC/dnrm2.f90                            |   199 +
 BLAS/SRC/drot.f                               |     8 +-
 BLAS/SRC/drotg.f                              |   109 -
 BLAS/SRC/drotg.f90                            |   151 +
 BLAS/SRC/drotm.f                              |     8 +-
 BLAS/SRC/drotmg.f                             |    25 +-
 BLAS/SRC/dsbmv.f                              |     7 +-
 BLAS/SRC/dscal.f                              |     8 +-
 BLAS/SRC/dsdot.f                              |     8 +-
 BLAS/SRC/dspmv.f                              |     7 +-
 BLAS/SRC/dspr.f                               |     7 +-
 BLAS/SRC/dspr2.f                              |     7 +-
 BLAS/SRC/dswap.f                              |     8 +-
 BLAS/SRC/dsymm.f                              |     7 +-
 BLAS/SRC/dsymv.f                              |     7 +-
 BLAS/SRC/dsyr.f                               |     7 +-
 BLAS/SRC/dsyr2.f                              |     7 +-
 BLAS/SRC/dsyr2k.f                             |     7 +-
 BLAS/SRC/dsyrk.f                              |     7 +-
 BLAS/SRC/dtbmv.f                              |     7 +-
 BLAS/SRC/dtbsv.f                              |     7 +-
 BLAS/SRC/dtpmv.f                              |     7 +-
 BLAS/SRC/dtpsv.f                              |     7 +-
 BLAS/SRC/dtrmm.f                              |     7 +-
 BLAS/SRC/dtrmv.f                              |     7 +-
 BLAS/SRC/dtrsm.f                              |     7 +-
 BLAS/SRC/dtrsv.f                              |     7 +-
 BLAS/SRC/dzasum.f                             |    10 +-
 BLAS/SRC/dznrm2.f                             |   140 -
 BLAS/SRC/dznrm2.f90                           |   209 +
 BLAS/SRC/icamax.f                             |     8 +-
 BLAS/SRC/idamax.f                             |     8 +-
 BLAS/SRC/isamax.f                             |     8 +-
 BLAS/SRC/izamax.f                             |     8 +-
 BLAS/SRC/lsame.f                              |     5 +-
 BLAS/SRC/meson.build                          |    29 -
 BLAS/SRC/sasum.f                              |     8 +-
 BLAS/SRC/saxpy.f                              |     8 +-
 BLAS/SRC/scabs1.f                             |     8 +-
 BLAS/SRC/scasum.f                             |     8 +-
 BLAS/SRC/scnrm2.f                             |   140 -
 BLAS/SRC/scnrm2.f90                           |   209 +
 BLAS/SRC/scopy.f                              |     8 +-
 BLAS/SRC/sdot.f                               |     8 +-
 BLAS/SRC/sdsdot.f                             |     8 +-
 BLAS/SRC/sgbmv.f                              |     7 +-
 BLAS/SRC/sgemm.f                              |    15 +-
 BLAS/SRC/sgemv.f                              |     7 +-
 BLAS/SRC/sger.f                               |     7 +-
 BLAS/SRC/snrm2.f                              |   132 -
 BLAS/SRC/snrm2.f90                            |   199 +
 BLAS/SRC/srot.f                               |     8 +-
 BLAS/SRC/srotg.f                              |   109 -
 BLAS/SRC/srotg.f90                            |   151 +
 BLAS/SRC/srotm.f                              |     8 +-
 BLAS/SRC/srotmg.f                             |    27 +-
 BLAS/SRC/ssbmv.f                              |     7 +-
 BLAS/SRC/sscal.f                              |     8 +-
 BLAS/SRC/sspmv.f                              |     7 +-
 BLAS/SRC/sspr.f                               |     7 +-
 BLAS/SRC/sspr2.f                              |     7 +-
 BLAS/SRC/sswap.f                              |     8 +-
 BLAS/SRC/ssymm.f                              |     7 +-
 BLAS/SRC/ssymv.f                              |     7 +-
 BLAS/SRC/ssyr.f                               |     7 +-
 BLAS/SRC/ssyr2.f                              |     7 +-
 BLAS/SRC/ssyr2k.f                             |     7 +-
 BLAS/SRC/ssyrk.f                              |     7 +-
 BLAS/SRC/stbmv.f                              |     7 +-
 BLAS/SRC/stbsv.f                              |     7 +-
 BLAS/SRC/stpmv.f                              |     7 +-
 BLAS/SRC/stpsv.f                              |     7 +-
 BLAS/SRC/strmm.f                              |     7 +-
 BLAS/SRC/strmv.f                              |     7 +-
 BLAS/SRC/strsm.f                              |     7 +-
 BLAS/SRC/strsv.f                              |     7 +-
 BLAS/SRC/xerbla.f                             |     5 +-
 BLAS/SRC/xerbla_array.f                       |     8 +-
 BLAS/SRC/zaxpy.f                              |     8 +-
 BLAS/SRC/zcopy.f                              |     8 +-
 BLAS/SRC/zdotc.f                              |    12 +-
 BLAS/SRC/zdotu.f                              |    12 +-
 BLAS/SRC/zdrot.f                              |    48 +-
 BLAS/SRC/zdscal.f                             |     8 +-
 BLAS/SRC/zgbmv.f                              |     7 +-
 BLAS/SRC/zgemm.f                              |    14 +-
 BLAS/SRC/zgemv.f                              |     7 +-
 BLAS/SRC/zgerc.f                              |     7 +-
 BLAS/SRC/zgeru.f                              |     7 +-
 BLAS/SRC/zhbmv.f                              |     7 +-
 BLAS/SRC/zhemm.f                              |     7 +-
 BLAS/SRC/zhemv.f                              |     7 +-
 BLAS/SRC/zher.f                               |     7 +-
 BLAS/SRC/zher2.f                              |     7 +-
 BLAS/SRC/zher2k.f                             |     7 +-
 BLAS/SRC/zherk.f                              |     7 +-
 BLAS/SRC/zhpmv.f                              |     7 +-
 BLAS/SRC/zhpr.f                               |     7 +-
 BLAS/SRC/zhpr2.f                              |     7 +-
 BLAS/SRC/zrotg.f                              |    98 -
 BLAS/SRC/zrotg.f90                            |   229 +
 BLAS/SRC/zscal.f                              |     8 +-
 BLAS/SRC/zswap.f                              |     8 +-
 BLAS/SRC/zsymm.f                              |     7 +-
 BLAS/SRC/zsyr2k.f                             |     7 +-
 BLAS/SRC/zsyrk.f                              |     7 +-
 BLAS/SRC/ztbmv.f                              |     7 +-
 BLAS/SRC/ztbsv.f                              |     7 +-
 BLAS/SRC/ztpmv.f                              |     7 +-
 BLAS/SRC/ztpsv.f                              |     7 +-
 BLAS/SRC/ztrmm.f                              |     7 +-
 BLAS/SRC/ztrmv.f                              |     7 +-
 BLAS/SRC/ztrsm.f                              |     7 +-
 BLAS/SRC/ztrsv.f                              |     7 +-
 BLAS/TESTING/CMakeLists.txt                   |     2 +-
 BLAS/TESTING/cblat1.f                         |    80 +-
 BLAS/TESTING/cblat2.f                         |    36 +-
 BLAS/TESTING/cblat3.f                         |    34 +-
 BLAS/TESTING/dblat1.f                         |    83 +-
 BLAS/TESTING/dblat2.f                         |    36 +-
 BLAS/TESTING/dblat3.f                         |    34 +-
 BLAS/TESTING/sblat1.f                         |    79 +-
 BLAS/TESTING/sblat2.f                         |    36 +-
 BLAS/TESTING/sblat3.f                         |    34 +-
 BLAS/TESTING/zblat1.f                         |    80 +-
 BLAS/TESTING/zblat2.f                         |    36 +-
 BLAS/TESTING/zblat3.f                         |    34 +-
 BLAS/blas.pc.in                               |     2 +-
 CBLAS/CMakeLists.txt                          |    72 +-
 CBLAS/cblas.pc.in                             |     4 +-
 CBLAS/cmake/cblas-config-build.cmake.in       |     4 +-
 CBLAS/cmake/cblas-config-install.cmake.in     |     8 +-
 CBLAS/examples/CMakeLists.txt                 |     4 +-
 CBLAS/examples/cblas_example1.c               |     2 +-
 CBLAS/examples/cblas_example2.c               |     2 +-
 CBLAS/include/CMakeLists.txt                  |     4 +-
 CBLAS/include/cblas.h                         |   704 +-
 CBLAS/include/cblas_f77.h                     |  1300 +-
 CBLAS/src/CMakeLists.txt                      |    15 +-
 CBLAS/src/cblas_caxpy.c                       |     4 +-
 CBLAS/src/cblas_ccopy.c                       |     4 +-
 CBLAS/src/cblas_cdotc_sub.c                   |     4 +-
 CBLAS/src/cblas_cdotu_sub.c                   |     4 +-
 CBLAS/src/cblas_cgbmv.c                       |    14 +-
 CBLAS/src/cblas_cgemm.c                       |     8 +-
 CBLAS/src/cblas_cgemv.c                       |    12 +-
 CBLAS/src/cblas_cgerc.c                       |     8 +-
 CBLAS/src/cblas_cgeru.c                       |     6 +-
 CBLAS/src/cblas_chbmv.c                       |    12 +-
 CBLAS/src/cblas_chemm.c                       |     8 +-
 CBLAS/src/cblas_chemv.c                       |    12 +-
 CBLAS/src/cblas_cher.c                        |     6 +-
 CBLAS/src/cblas_cher2.c                       |     6 +-
 CBLAS/src/cblas_cher2k.c                      |     8 +-
 CBLAS/src/cblas_cherk.c                       |     6 +-
 CBLAS/src/cblas_chpmv.c                       |    10 +-
 CBLAS/src/cblas_chpr.c                        |     6 +-
 CBLAS/src/cblas_chpr2.c                       |     6 +-
 CBLAS/src/cblas_cscal.c                       |     4 +-
 CBLAS/src/cblas_csscal.c                      |     4 +-
 CBLAS/src/cblas_cswap.c                       |     4 +-
 CBLAS/src/cblas_csymm.c                       |     8 +-
 CBLAS/src/cblas_csyr2k.c                      |     8 +-
 CBLAS/src/cblas_csyrk.c                       |     6 +-
 CBLAS/src/cblas_ctbmv.c                       |     6 +-
 CBLAS/src/cblas_ctbsv.c                       |     6 +-
 CBLAS/src/cblas_ctpmv.c                       |     4 +-
 CBLAS/src/cblas_ctpsv.c                       |     4 +-
 CBLAS/src/cblas_ctrmm.c                       |     6 +-
 CBLAS/src/cblas_ctrmv.c                       |     6 +-
 CBLAS/src/cblas_ctrsm.c                       |     6 +-
 CBLAS/src/cblas_ctrsv.c                       |     6 +-
 CBLAS/src/cblas_dasum.c                       |     2 +-
 CBLAS/src/cblas_daxpy.c                       |     4 +-
 CBLAS/src/cblas_dcopy.c                       |     4 +-
 CBLAS/src/cblas_ddot.c                        |     4 +-
 CBLAS/src/cblas_dgbmv.c                       |    10 +-
 CBLAS/src/cblas_dgemm.c                       |     8 +-
 CBLAS/src/cblas_dgemv.c                       |     8 +-
 CBLAS/src/cblas_dger.c                        |     6 +-
 CBLAS/src/cblas_dnrm2.c                       |     2 +-
 CBLAS/src/cblas_drot.c                        |     4 +-
 CBLAS/src/cblas_drotm.c                       |     4 +-
 CBLAS/src/cblas_dsbmv.c                       |     8 +-
 CBLAS/src/cblas_dscal.c                       |     4 +-
 CBLAS/src/cblas_dsdot.c                       |     4 +-
 CBLAS/src/cblas_dspmv.c                       |     6 +-
 CBLAS/src/cblas_dspr.c                        |     4 +-
 CBLAS/src/cblas_dspr2.c                       |     4 +-
 CBLAS/src/cblas_dswap.c                       |     4 +-
 CBLAS/src/cblas_dsymm.c                       |     8 +-
 CBLAS/src/cblas_dsymv.c                       |     8 +-
 CBLAS/src/cblas_dsyr.c                        |     4 +-
 CBLAS/src/cblas_dsyr2.c                       |     6 +-
 CBLAS/src/cblas_dsyr2k.c                      |     8 +-
 CBLAS/src/cblas_dsyrk.c                       |     6 +-
 CBLAS/src/cblas_dtbmv.c                       |     4 +-
 CBLAS/src/cblas_dtbsv.c                       |     4 +-
 CBLAS/src/cblas_dtpmv.c                       |     2 +-
 CBLAS/src/cblas_dtpsv.c                       |     2 +-
 CBLAS/src/cblas_dtrmm.c                       |     6 +-
 CBLAS/src/cblas_dtrmv.c                       |     4 +-
 CBLAS/src/cblas_dtrsm.c                       |     6 +-
 CBLAS/src/cblas_dtrsv.c                       |     4 +-
 CBLAS/src/cblas_dzasum.c                      |     2 +-
 CBLAS/src/cblas_dznrm2.c                      |     2 +-
 CBLAS/src/cblas_globals.c                     |     4 +-
 CBLAS/src/cblas_icamax.c                      |    12 +-
 CBLAS/src/cblas_idamax.c                      |    12 +-
 CBLAS/src/cblas_isamax.c                      |    12 +-
 CBLAS/src/cblas_izamax.c                      |    12 +-
 CBLAS/src/cblas_sasum.c                       |     2 +-
 CBLAS/src/cblas_saxpy.c                       |     4 +-
 CBLAS/src/cblas_scasum.c                      |     2 +-
 CBLAS/src/cblas_scnrm2.c                      |     2 +-
 CBLAS/src/cblas_scopy.c                       |     4 +-
 CBLAS/src/cblas_sdot.c                        |     4 +-
 CBLAS/src/cblas_sdsdot.c                      |     4 +-
 CBLAS/src/cblas_sgbmv.c                       |    10 +-
 CBLAS/src/cblas_sgemm.c                       |    10 +-
 CBLAS/src/cblas_sgemv.c                       |     8 +-
 CBLAS/src/cblas_sger.c                        |     6 +-
 CBLAS/src/cblas_snrm2.c                       |     2 +-
 CBLAS/src/cblas_srot.c                        |     4 +-
 CBLAS/src/cblas_srotm.c                       |     4 +-
 CBLAS/src/cblas_ssbmv.c                       |     6 +-
 CBLAS/src/cblas_sscal.c                       |     4 +-
 CBLAS/src/cblas_sspmv.c                       |     6 +-
 CBLAS/src/cblas_sspr.c                        |     4 +-
 CBLAS/src/cblas_sspr2.c                       |     4 +-
 CBLAS/src/cblas_sswap.c                       |     4 +-
 CBLAS/src/cblas_ssymm.c                       |     8 +-
 CBLAS/src/cblas_ssymv.c                       |     8 +-
 CBLAS/src/cblas_ssyr.c                        |     4 +-
 CBLAS/src/cblas_ssyr2.c                       |     6 +-
 CBLAS/src/cblas_ssyr2k.c                      |     8 +-
 CBLAS/src/cblas_ssyrk.c                       |     6 +-
 CBLAS/src/cblas_stbmv.c                       |     4 +-
 CBLAS/src/cblas_stbsv.c                       |     4 +-
 CBLAS/src/cblas_stpmv.c                       |     2 +-
 CBLAS/src/cblas_stpsv.c                       |     2 +-
 CBLAS/src/cblas_strmm.c                       |     6 +-
 CBLAS/src/cblas_strmv.c                       |     4 +-
 CBLAS/src/cblas_strsm.c                       |     6 +-
 CBLAS/src/cblas_strsv.c                       |     4 +-
 CBLAS/src/cblas_xerbla.c                      |     6 +-
 CBLAS/src/cblas_zaxpy.c                       |     4 +-
 CBLAS/src/cblas_zcopy.c                       |     4 +-
 CBLAS/src/cblas_zdotc_sub.c                   |     4 +-
 CBLAS/src/cblas_zdotu_sub.c                   |     4 +-
 CBLAS/src/cblas_zdscal.c                      |     4 +-
 CBLAS/src/cblas_zgbmv.c                       |    14 +-
 CBLAS/src/cblas_zgemm.c                       |     8 +-
 CBLAS/src/cblas_zgemv.c                       |    12 +-
 CBLAS/src/cblas_zgerc.c                       |     8 +-
 CBLAS/src/cblas_zgeru.c                       |     6 +-
 CBLAS/src/cblas_zhbmv.c                       |    12 +-
 CBLAS/src/cblas_zhemm.c                       |     8 +-
 CBLAS/src/cblas_zhemv.c                       |    12 +-
 CBLAS/src/cblas_zher.c                        |     6 +-
 CBLAS/src/cblas_zher2.c                       |     6 +-
 CBLAS/src/cblas_zher2k.c                      |     8 +-
 CBLAS/src/cblas_zherk.c                       |     6 +-
 CBLAS/src/cblas_zhpmv.c                       |    10 +-
 CBLAS/src/cblas_zhpr.c                        |     6 +-
 CBLAS/src/cblas_zhpr2.c                       |     6 +-
 CBLAS/src/cblas_zscal.c                       |     4 +-
 CBLAS/src/cblas_zswap.c                       |     4 +-
 CBLAS/src/cblas_zsymm.c                       |     8 +-
 CBLAS/src/cblas_zsyr2k.c                      |     8 +-
 CBLAS/src/cblas_zsyrk.c                       |     6 +-
 CBLAS/src/cblas_ztbmv.c                       |     6 +-
 CBLAS/src/cblas_ztbsv.c                       |     6 +-
 CBLAS/src/cblas_ztpmv.c                       |     4 +-
 CBLAS/src/cblas_ztpsv.c                       |     4 +-
 CBLAS/src/cblas_ztrmm.c                       |     6 +-
 CBLAS/src/cblas_ztrmv.c                       |     6 +-
 CBLAS/src/cblas_ztrsm.c                       |     6 +-
 CBLAS/src/cblas_ztrsv.c                       |     6 +-
 CBLAS/src/xerbla.c                            |    14 +-
 CBLAS/testing/CMakeLists.txt                  |    48 +-
 CBLAS/testing/c_c2chke.c                      |     2 +
 CBLAS/testing/c_c3chke.c                      |     2 +
 CBLAS/testing/c_d2chke.c                      |     2 +
 CBLAS/testing/c_d3chke.c                      |     2 +
 CBLAS/testing/c_s2chke.c                      |     2 +
 CBLAS/testing/c_s3chke.c                      |     2 +
 CBLAS/testing/c_xerbla.c                      |     4 +-
 CBLAS/testing/c_z2chke.c                      |     2 +
 CBLAS/testing/c_z3chke.c                      |     2 +
@devinamatthews
Copy link
Member

I would say the we general do not claim to have full compatibility with the reference BLAS APIs, but that we strive to correct any inconsistencies when they are brought to our attention. For example we recently fixed some errors related to NaN/Inf handling in the level 1 routines. If you notice anything else please bring it to our attention.

We also run the BLAS testsuite as part of our CI process. We could update the version of the testsuite included if there are important changes.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants