Compatibility with (reference) BLAS 3.10.1?
h-vetinari opened this issue · comments
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 +
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.