From c52167f47ca46265fb3b208dea78c53dd84d9dad Mon Sep 17 00:00:00 2001 From: Martin Kroeker Date: Fri, 9 Oct 2026 16:15:04 +0200 Subject: [PATCH 1/7] Add missing symbols bscal, gemmtr, gemm_batch, gemm_batch strided --- exports/gensymbol | 24 ++++++++++++++---------- exports/gensymbol.pl | 23 +++++++++++++---------- 2 files changed, 27 insertions(+), 20 deletions(-) diff --git a/exports/gensymbol b/exports/gensymbol index 8bbeb6ca37..4f4b90a82a 100755 --- a/exports/gensymbol +++ b/exports/gensymbol @@ -49,7 +49,8 @@ blasobjsc=" chbmv chemm chemv cher2 cher2k cher cherk scabs1 scamax chpmv chpr2 chpr crotg cscal csrot csscal cswap scamin scasum scnrm2 csymm csyr2k csyrk ctbmv ctbsv ctpmv ctpsv ctrmm ctrmv ctrsm - ctrsv icamax icamin cimatcopy comatcopy cgeadd scsum cgemmt cgemmtr" + ctrsv icamax icamin cimatcopy comatcopy cgeadd scsum cgemmt cgemmtr + cgemm_batch cgemm_batch_strided" blasobjsd=" damax damin dasum daxpy daxpby dcabs1 dcopy ddot dgbmv dgemm @@ -57,7 +58,8 @@ blasobjsd=" dscal dsdot dspmv dspr2 dimatcopy domatcopy dspr dswap dsymm dsymv dsyr2 dsyr2k dsyr dsyrk dtbmv dtbsv dtpmv dtpsv dtrmm dtrmv dtrsm dtrsv - idamax idamin idmax idmin dgeadd dsum dgemmt dgemmtr" + idamax idamin idmax idmin dgeadd dsum dgemmt dgemmtr + dgemm_batch dgemm_batch_strided" blasobjss=" isamax isamin ismax ismin @@ -66,7 +68,8 @@ blasobjss=" smax smin snrm2 simatcopy somatcopy srot srotg srotm srotmg ssbmv sscal sspmv sspr2 sspr sswap ssymm ssymv ssyr2 ssyr2k ssyr ssyrk stbmv stbsv stpmv stpsv - strmm strmv strsm strsv sgeadd ssum sgemmt sgemmtr" + strmm strmv strsm strsv sgeadd ssum sgemmt sgemmtr + sgemm_batch sgemm_batch_strided" blasobjsz=" izamax izamin @@ -76,10 +79,11 @@ blasobjsz=" zhpr zrotg zscal zswap zsymm zsyr2k zsyrk ztbmv ztbsv ztpmv ztpsv ztrmm ztrmv ztrsm ztrsv zomatcopy zimatcopy dzamax dzamin dzasum dznrm2 - zgeadd dzsum zgemmt zgemmtr" + zgeadd dzsum zgemmt zgemmtr zgemm_batch zgemm_batch_strided" blasobjs="lsame xerbla" -bfblasobjs="bgemm bgemv sbgemm sbgemmt sbgemmtr sbgemv sbdot sbstobf16 sbdtobf16 sbf16tos dbf16tod" +bfblasobjs="bgemm bgemv bscal sbgemm sbgemm_batch sbgemm_batch_strided sbgemmt sbgemmtr + sbgemv sbdot sbstobf16 sbdtobf16 sbf16tos dbf16tod" hfblasobjs="shgemm shgemv" cblasobjsc=" cblas_caxpy cblas_ccopy cblas_cdotc cblas_cdotu cblas_cgbmv cblas_cgemm cblas_cgemv @@ -89,7 +93,7 @@ cblasobjsc=" cblas_ctbsv cblas_ctpmv cblas_ctpsv cblas_ctrmm cblas_ctrmv cblas_ctrsm cblas_ctrsv cblas_scnrm2 cblas_scasum cblas_cgemmt cblas_cgemmtr cblas_icamax cblas_icamin cblas_icmin cblas_icmax cblas_scsum cblas_cimatcopy cblas_comatcopy - cblas_caxpyc cblas_crotg cblas_csrot cblas_scamax cblas_scamin cblas_cgemm_batch + cblas_caxpyc cblas_crotg cblas_csrot cblas_scamax cblas_scamin cblas_cgemm_batch cblas_cgemm_batch_strided " cblasobjsd=" cblas_dasum cblas_daxpy cblas_dcopy cblas_ddot @@ -99,7 +103,7 @@ cblasobjsd=" cblas_dsyr2k cblas_dsyr cblas_dsyrk cblas_dtbmv cblas_dtbsv cblas_dtpmv cblas_dtpsv cblas_dtrmm cblas_dtrmv cblas_dtrsm cblas_dtrsv cblas_daxpby cblas_dgeadd cblas_dgemmt cblas_dgemmtr cblas_idamax cblas_idamin cblas_idmin cblas_idmax cblas_dsum cblas_dimatcopy cblas_domatcopy - cblas_damax cblas_damin cblas_dgemm_batch + cblas_damax cblas_damin cblas_dgemm_batch cblas_dgemm_batch_strided " cblasobjss=" @@ -111,7 +115,7 @@ cblasobjss=" cblas_stbmv cblas_stbsv cblas_stpmv cblas_stpsv cblas_strmm cblas_strmv cblas_strsm cblas_strsv cblas_sgeadd cblas_sgemmt cblas_sgemmtr cblas_isamax cblas_isamin cblas_ismin cblas_ismax cblas_ssum cblas_simatcopy cblas_somatcopy - cblas_samax cblas_samin cblas_sgemm_batch + cblas_samax cblas_samin cblas_sgemm_batch cblas_sgemm_batch_strided " cblasobjsz=" @@ -123,12 +127,12 @@ cblasobjsz=" cblas_ztrsv cblas_cdotc_sub cblas_cdotu_sub cblas_zdotc_sub cblas_zdotu_sub cblas_zaxpby cblas_zgeadd cblas_zgemmt cblas_zgemmtr cblas_izamax cblas_izamin cblas_izmin cblas_izmax cblas_dzsum cblas_zimatcopy cblas_zomatcopy - cblas_zaxpyc cblas_zdrot cblas_zrotg cblas_dzamax cblas_dzamin cblas_zgemm_batch + cblas_zaxpyc cblas_zdrot cblas_zrotg cblas_dzamax cblas_dzamin cblas_zgemm_batch cblas_zgemm_batch_strided " cblasobjs="cblas_xerbla" -bfcblasobjs="cblas_sbgemm cblas_sbgemv cblas_sbdot cblas_sbstobf16 cblas_sbdtobf16 cblas_sbf16tos cblas_dbf16tod cblas_sbgemm_batch" +bfcblasobjs="cblas_bgemm cblas_bgemv cblas_bscal cblas_sbgemm cblas_sbgemv cblas_sbdot cblas_sbstobf16 cblas_sbdtobf16 cblas_sbf16tos cblas_dbf16tod cblas_sbgemm_batch cblas_sbgemm_batch_strided" hfcblasobjs="cblas_shgemm" exblasobjs=" diff --git a/exports/gensymbol.pl b/exports/gensymbol.pl index e7a3e74e89..cf7b2bbc2a 100644 --- a/exports/gensymbol.pl +++ b/exports/gensymbol.pl @@ -49,7 +49,8 @@ chbmv,chemm,chemv,cher2,cher2k,cher,cherk,scabs1,scamax, chpmv,chpr2,chpr,crotg,cscal,csrot,csscal,cswap,scamin,scasum,scnrm2, csymm,csyr2k,csyrk,ctbmv,ctbsv,ctpmv,ctpsv,ctrmm,ctrmv,ctrsm, - ctrsv,icamax,icamin,cimatcopy,comatcopy,cgeadd,scsum,cgemmt,cgemmtr); + ctrsv,icamax,icamin,cimatcopy,comatcopy,cgeadd,scsum,cgemmt,cgemmtr, + cgemm_batch,cgemm_batch_strided); @blasobjsd = ( damax,damin,dasum,daxpy,daxpby,dcabs1,dcopy,ddot,dgbmv,dgemm, @@ -57,7 +58,8 @@ dscal,dsdot,dspmv,dspr2,dimatcopy,domatcopy, dspr,dswap,dsymm,dsymv,dsyr2,dsyr2k,dsyr,dsyrk,dtbmv,dtbsv, dtpmv,dtpsv,dtrmm,dtrmv,dtrsm,dtrsv, - idamax,idamin,idmax,idmin,dgeadd,dsum,dgemmt,dgemmtr); + idamax,idamin,idmax,idmin,dgeadd,dsum,dgemmt,dgemmtr, + dgemm_batch,dgemm_batch_strided); @blasobjss = ( isamax,isamin,ismax,ismin, @@ -66,7 +68,8 @@ smax,smin,snrm2,simatcopy,somatcopy, srot,srotg,srotm,srotmg,ssbmv,sscal,sspmv,sspr2,sspr,sswap, ssymm,ssymv,ssyr2,ssyr2k,ssyr,ssyrk,stbmv,stbsv,stpmv,stpsv, - strmm,strmv,strsm,strsv, sgeadd,ssum,sgemmt,sgemmtr); + strmm,strmv,strsm,strsv,sgeadd,ssum,sgemmt,sgemmtr, + sgemm_batch,sgemm_batch_strided); @blasobjsz = ( izamax,izamin,, @@ -76,10 +79,10 @@ zhpr,zrotg,zscal,zswap,zsymm,zsyr2k,zsyrk,ztbmv, ztbsv,ztpmv,ztpsv,ztrmm,ztrmv,ztrsm,ztrsv, zomatcopy, zimatcopy,dzamax,dzamin,dzasum,dznrm2, - zgeadd, dzsum, zgemmt,zgemmtr); + zgeadd, dzsum, zgemmt,zgemmtr,zgemm_batch,zgemm_batch_strided); @blasobjs = (lsame, xerbla); -@bfblasobjs = (bgemm, bgemv, sbgemm, sbgemmt, sbgemmtr, sbgemv, sbdot, sbstobf16, sbdtobf16, sbf16tos, dbf16tod); +@bfblasobjs = (bgemm, bgemv, bscal, sbgemm, sbgemm_batch, sbgemm_batch_strided, sbgemmt, sbgemmtr, sbgemv, sbdot, sbstobf16, sbdtobf16, sbf16tos, dbf16tod); @hfblasobjs = (shgemm, shgemv); @cblasobjsc = ( cblas_caxpy, cblas_ccopy, cblas_cdotc, cblas_cdotu, cblas_cgbmv, cblas_cgemm, cblas_cgemv, @@ -89,7 +92,7 @@ cblas_ctbsv, cblas_ctpmv, cblas_ctpsv, cblas_ctrmm, cblas_ctrmv, cblas_ctrsm, cblas_ctrsv, cblas_scnrm2, cblas_scasum, cblas_cgemmt, cblas_cgemmtr, cblas_icamax, cblas_icamin, cblas_icmin, cblas_icmax, cblas_scsum,cblas_cimatcopy,cblas_comatcopy, - cblas_caxpyc, cblas_crotg, cblas_csrot, cblas_scamax, cblas_scamin, cblas_cgemm_batch); + cblas_caxpyc, cblas_crotg, cblas_csrot, cblas_scamax, cblas_scamin, cblas_cgemm_batch, cblas_cgemm_batch_strided); @cblasobjsd = ( cblas_dasum, cblas_daxpy, cblas_dcopy, cblas_ddot, @@ -99,7 +102,7 @@ cblas_dsyr2k, cblas_dsyr, cblas_dsyrk, cblas_dtbmv, cblas_dtbsv, cblas_dtpmv, cblas_dtpsv, cblas_dtrmm, cblas_dtrmv, cblas_dtrsm, cblas_dtrsv, cblas_daxpby, cblas_dgeadd, cblas_dgemmt, cblas_dgemmtr, cblas_idamax, cblas_idamin, cblas_idmin, cblas_idmax, cblas_dsum,cblas_dimatcopy,cblas_domatcopy, - cblas_damax, cblas_damin, cblas_dgemm_batch); + cblas_damax, cblas_damin, cblas_dgemm_batch, cblas_dgemm_batch_strided); @cblasobjss = ( cblas_sasum, cblas_saxpy, cblas_saxpby, @@ -110,7 +113,7 @@ cblas_stbmv, cblas_stbsv, cblas_stpmv, cblas_stpsv, cblas_strmm, cblas_strmv, cblas_strsm, cblas_strsv, cblas_sgeadd, cblas_sgemmt, cblas_sgemmtr, cblas_isamax, cblas_isamin, cblas_ismin, cblas_ismax, cblas_ssum,cblas_simatcopy,cblas_somatcopy, - cblas_samax, cblas_samin, cblas_sgemm_batch); + cblas_samax, cblas_samin, cblas_sgemm_batchm cblas_sgemm_batch_strided); @cblasobjsz = ( cblas_dzasum, cblas_dznrm2, cblas_zaxpy, cblas_zcopy, cblas_zdotc, cblas_zdotu, cblas_zdscal, @@ -121,11 +124,11 @@ cblas_ztrsv, cblas_cdotc_sub, cblas_cdotu_sub, cblas_zdotc_sub, cblas_zdotu_sub, cblas_zaxpby, cblas_zgeadd, cblas_zgemmt, cblas_zgemmtr, cblas_izamax, cblas_izamin, cblas_izmin, cblas_izmax, cblas_dzsum,cblas_zimatcopy,cblas_zomatcopy, - cblas_zaxpyc, cblas_zdrot, cblas_zrotg, cblas_dzamax, cblas_dzamin, cblas_zgemm_batch); + cblas_zaxpyc, cblas_zdrot, cblas_zrotg, cblas_dzamax, cblas_dzamin, cblas_zgemm_batch, cblas_zgemm_batch_strided); @cblasobjs = ( cblas_xerbla ); -@bfcblasobjs = (cblas_sbgemm, cblas_sbgemmt, cblas_sbgemmtr, cblas_sbgemv, cblas_sbdot, cblas_sbstobf16, cblas_sbdtobf16, cblas_sbf16tos, cblas_dbf16tod, cblas_sbgemm_batch); +@bfcblasobjs = (cblas_bgemm, cblas_bgemv, cblas_bscal, cblas_sbgemm, cblas_sbgemmt, cblas_sbgemmtr, cblas_sbgemv, cblas_sbdot, cblas_sbstobf16, cblas_sbdtobf16, cblas_sbf16tos, cblas_dbf16tod, cblas_sbgemm_batch, cblas_sbgemm_batch_strided); @hfcblasobjs = (cblas_shgemm); @exblasobjs = ( qamax,qamin,qasum,qaxpy,qcabs1,qcopy,qdot,qgbmv,qgemm, From a07de4f2b7d14e1b39bf07a08935cdcfdc71b101 Mon Sep 17 00:00:00 2001 From: Martin Kroeker Date: Fri, 9 Oct 2026 16:17:26 +0200 Subject: [PATCH 2/7] Add missing declarations (mostly gemmtr and gemm_batch/gemm_batch_strided) --- cblas.h | 20 ++++++++++++-------- common_interface.h | 46 +++++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 57 insertions(+), 9 deletions(-) diff --git a/cblas.h b/cblas.h index 13c8c61471..5cebc47d47 100644 --- a/cblas.h +++ b/cblas.h @@ -230,6 +230,7 @@ OPENBLAS_EXPORT void cblas_cscal(OPENBLAS_CONST blasint N, OPENBLAS_CONST void * OPENBLAS_EXPORT void cblas_zscal(OPENBLAS_CONST blasint N, OPENBLAS_CONST void *alpha, void *X, OPENBLAS_CONST blasint incX); OPENBLAS_EXPORT void cblas_csscal(OPENBLAS_CONST blasint N, OPENBLAS_CONST float alpha, void *X, OPENBLAS_CONST blasint incX); OPENBLAS_EXPORT void cblas_zdscal(OPENBLAS_CONST blasint N, OPENBLAS_CONST double alpha, void *X, OPENBLAS_CONST blasint incX); +OPENBLAS_EXPORT void cblas_bscal(OPENBLAS_CONST blasint N, OPENBLAS_CONST bfloat16 alpha, bfloat16 *X, OPENBLAS_CONST blasint incX); OPENBLAS_EXPORT void cblas_sgemv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_TRANSPOSE trans, OPENBLAS_CONST blasint m, OPENBLAS_CONST blasint n, OPENBLAS_CONST float alpha, OPENBLAS_CONST float *a, OPENBLAS_CONST blasint lda, OPENBLAS_CONST float *x, OPENBLAS_CONST blasint incx, OPENBLAS_CONST float beta, float *y, OPENBLAS_CONST blasint incy); @@ -371,14 +372,17 @@ OPENBLAS_EXPORT void cblas_zgemm(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS OPENBLAS_EXPORT void cblas_zgemm3m(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransB, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N, OPENBLAS_CONST blasint K, OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST void *B, OPENBLAS_CONST blasint ldb, OPENBLAS_CONST void *beta, void *C, OPENBLAS_CONST blasint ldc); -OPENBLAS_EXPORT void cblas_sgemmt(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransB, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint K, - OPENBLAS_CONST float alpha, OPENBLAS_CONST float *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST float *B, OPENBLAS_CONST blasint ldb, OPENBLAS_CONST float beta, float *C, OPENBLAS_CONST blasint ldc); -OPENBLAS_EXPORT void cblas_dgemmt(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransB, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint K, - OPENBLAS_CONST double alpha, OPENBLAS_CONST double *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST double *B, OPENBLAS_CONST blasint ldb, OPENBLAS_CONST double beta, double *C, OPENBLAS_CONST blasint ldc); -OPENBLAS_EXPORT void cblas_cgemmt(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransB, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint K, - OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST void *B, OPENBLAS_CONST blasint ldb, OPENBLAS_CONST void *beta, void *C, OPENBLAS_CONST blasint ldc); -OPENBLAS_EXPORT void cblas_zgemmt(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransB, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint K, - OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST void *B, OPENBLAS_CONST blasint ldb, OPENBLAS_CONST void *beta, void *C, OPENBLAS_CONST blasint ldc); +OPENBLAS_EXPORT void cblas_sbgemmt(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransB, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint K, OPENBLAS_CONST float alpha, OPENBLAS_CONST bfloat16 *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST bfloat16 *B, OPENBLAS_CONST blasint ldb, OPENBLAS_CONST float beta, float *C, OPENBLAS_CONST blasint ldc); +OPENBLAS_EXPORT void cblas_sgemmt(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransB, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint K, OPENBLAS_CONST float alpha, OPENBLAS_CONST float *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST float *B, OPENBLAS_CONST blasint ldb, OPENBLAS_CONST float beta, float *C, OPENBLAS_CONST blasint ldc); +OPENBLAS_EXPORT void cblas_dgemmt(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransB, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint K, OPENBLAS_CONST double alpha, OPENBLAS_CONST double *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST double *B, OPENBLAS_CONST blasint ldb, OPENBLAS_CONST double beta, double *C, OPENBLAS_CONST blasint ldc); +OPENBLAS_EXPORT void cblas_cgemmt(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransB, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint K, OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST void *B, OPENBLAS_CONST blasint ldb, OPENBLAS_CONST void *beta, void *C, OPENBLAS_CONST blasint ldc); +OPENBLAS_EXPORT void cblas_zgemmt(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransB, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint K, OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST void *B, OPENBLAS_CONST blasint ldb, OPENBLAS_CONST void *beta, void *C, OPENBLAS_CONST blasint ldc); + +OPENBLAS_EXPORT void cblas_sbgemmtr(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransB, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint K, OPENBLAS_CONST float alpha, OPENBLAS_CONST bfloat16 *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST bfloat16 *B, OPENBLAS_CONST blasint ldb, OPENBLAS_CONST float beta, float *C, OPENBLAS_CONST blasint ldc); +OPENBLAS_EXPORT void cblas_sgemmtr(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransB, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint K, OPENBLAS_CONST float alpha, OPENBLAS_CONST float *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST float *B, OPENBLAS_CONST blasint ldb, OPENBLAS_CONST float beta, float *C, OPENBLAS_CONST blasint ldc); +OPENBLAS_EXPORT void cblas_dgemmtr(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransB, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint K, OPENBLAS_CONST double alpha, OPENBLAS_CONST double *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST double *B, OPENBLAS_CONST blasint ldb, OPENBLAS_CONST double beta, double *C, OPENBLAS_CONST blasint ldc); +OPENBLAS_EXPORT void cblas_cgemmtr(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransB, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint K, OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST void *B, OPENBLAS_CONST blasint ldb, OPENBLAS_CONST void *beta, void *C, OPENBLAS_CONST blasint ldc); +OPENBLAS_EXPORT void cblas_zgemmtr(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransB, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint K, OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST void *B, OPENBLAS_CONST blasint ldb, OPENBLAS_CONST void *beta, void *C, OPENBLAS_CONST blasint ldc); OPENBLAS_EXPORT void cblas_ssymm(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_SIDE Side, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N, OPENBLAS_CONST float alpha, OPENBLAS_CONST float *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST float *B, OPENBLAS_CONST blasint ldb, OPENBLAS_CONST float beta, float *C, OPENBLAS_CONST blasint ldc); diff --git a/common_interface.h b/common_interface.h index cf9c3ce962..4202f5021f 100644 --- a/common_interface.h +++ b/common_interface.h @@ -44,7 +44,7 @@ extern "C" { /* Assume C declarations for C++ */ #endif /* __cplusplus */ -void BLASFUNC(xerbla)(char *, blasint *info, blasint); +int BLASFUNC(xerbla)(char *, blasint *info, blasint); OPENBLAS_EXPORT void extern openblas_set_num_threads_(int *); @@ -506,6 +506,38 @@ void OPENBLAS_API(zgemm)(char *, char *, blasint *, blasint *, blasint *, double void OPENBLAS_API(xgemm)(char *, char *, blasint *, blasint *, blasint *, xdouble *, xdouble *, blasint *, xdouble *, blasint *, xdouble *, xdouble *, blasint *); +void OPENBLAS_API(sbgemm_batch)(char *, char *, blasint *, blasint *, blasint *, float *, + float *, bfloat16 **, blasint *, bfloat16 **, blasint *, float *, float **, + blasint *, blasint *, blasint *); +void OPENBLAS_API(sgemm_batch)(char *, char *, blasint *, blasint *, blasint *, float *, + float *, float **, blasint *, float **, blasint *, float *, float **, + blasint *, blasint *, blasint *); +void OPENBLAS_API(dgemm_batch)(char *, char *, blasint *, blasint *, blasint *, double *, + double *, double **, blasint *, double **, blasint *, double *, double **, + blasint *, blasint *, blasint *); +void OPENBLAS_API(cgemm_batch)(char *, char *, blasint *, blasint *, blasint *, float *, + float *, float **, blasint *, float **, blasint *, float *, float **, + blasint *, blasint *, blasint *); +void OPENBLAS_API(zgemm_batch)(char *, char *, blasint *, blasint *, blasint *, double *, + double *, double **, blasint *, double **, blasint *, double *, double **, + blasint *, blasint *, blasint *); + +void OPENBLAS_API(sbgemm_batch_strided)(char *, char *, blasint *, blasint *, blasint *, float *, + bfloat16 *, blasint *, blasint *, bfloat16 *, blasint *, blasint *, float *, float *, + blasint *, blasint *, blasint *); +void OPENBLAS_API(sgemm_batch_strided)(char *, char *, blasint *, blasint *, blasint *, float *, + float *, blasint *, blasint *, float *, blasint *, blasint *, float *, float *, + blasint *, blasint *, blasint *); +void OPENBLAS_API(dgemm_batch_strided)(char *, char *, blasint *, blasint *, blasint *, double *, + double *, blasint *, blasint *, double *, blasint *, blasint *, double *, double *, + blasint *, blasint *, blasint *); +void OPENBLAS_API(cgemm_batch_strided)(char *, char *, blasint *, blasint *, blasint *, float *, + float *, blasint *, blasint *, float *, blasint *, blasint *, float *, float *, + blasint *, blasint *, blasint *); +void OPENBLAS_API(zgemm_batch_strided)(char *, char *, blasint *, blasint *, blasint *, double *, + double *, blasint *, blasint *, double *, blasint *, blasint *, double *, double *, + blasint *, blasint *, blasint *); + void OPENBLAS_API(cgemm3m)(char *, char *, blasint *, blasint *, blasint *, float *, float *, blasint *, float *, blasint *, float *, float *, blasint *); void OPENBLAS_API(zgemm3m)(char *, char *, blasint *, blasint *, blasint *, double *, @@ -513,6 +545,8 @@ void OPENBLAS_API(zgemm3m)(char *, char *, blasint *, blasint *, blasint *, doub void OPENBLAS_API(xgemm3m)(char *, char *, blasint *, blasint *, blasint *, xdouble *, xdouble *, blasint *, xdouble *, blasint *, xdouble *, xdouble *, blasint *); +void OPENBLAS_API(sbgemmt)(char*, char *, char *, blasint *, blasint *, float *, + bfloat16 *, blasint *, bfloat16 *, blasint *, float *, float *, blasint *); void OPENBLAS_API(sgemmt)(char*, char *, char *, blasint *, blasint *, float *, float *, blasint *, float *, blasint *, float *, float *, blasint *); void OPENBLAS_API(dgemmt)(char*, char *, char *, blasint *, blasint *, double *, @@ -521,6 +555,16 @@ void OPENBLAS_API(cgemmt)(char*, char *, char *, blasint *, blasint *, float *, float *, blasint *, float *, blasint *, float *, float *, blasint *); void OPENBLAS_API(zgemmt)(char*, char *, char *, blasint *, blasint *, double *, double *, blasint *, double *, blasint *, double *, double *, blasint *); +void OPENBLAS_API(sbgemmtr)(char*, char *, char *, blasint *, blasint *, float *, + bfloat16 *, blasint *, bfloat16 *, blasint *, float *, float *, blasint *); +void OPENBLAS_API(sgemmtr)(char*, char *, char *, blasint *, blasint *, float *, + float *, blasint *, float *, blasint *, float *, float *, blasint *); +void OPENBLAS_API(dgemmtr)(char*, char *, char *, blasint *, blasint *, double *, + double *, blasint *, double *, blasint *, double *, double *, blasint *); +void OPENBLAS_API(cgemmtr)(char*, char *, char *, blasint *, blasint *, float *, + float *, blasint *, float *, blasint *, float *, float *, blasint *); +void OPENBLAS_API(zgemmtr)(char*, char *, char *, blasint *, blasint *, double *, + double *, blasint *, double *, blasint *, double *, double *, blasint *); int OPENBLAS_API(sge2mm)(char *, char *, char *, blasint *, blasint *, float *, float *, blasint *, float *, blasint *, From 86de5bdbbf0d7a4ce589bcb7511e3343c695e007 Mon Sep 17 00:00:00 2001 From: Martin Kroeker Date: Fri, 9 Oct 2026 23:04:28 +0200 Subject: [PATCH 3/7] fix xerbla prototype (accidental reversion) --- common_interface.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/common_interface.h b/common_interface.h index 4202f5021f..35574f8ab8 100644 --- a/common_interface.h +++ b/common_interface.h @@ -44,7 +44,7 @@ extern "C" { /* Assume C declarations for C++ */ #endif /* __cplusplus */ -int BLASFUNC(xerbla)(char *, blasint *info, blasint); +void BLASFUNC(xerbla)(char *, blasint *info, blasint); OPENBLAS_EXPORT void extern openblas_set_num_threads_(int *); From de5d4914c558cf36cf67ee25ba78870e0e239265 Mon Sep 17 00:00:00 2001 From: Martin Kroeker Date: Fri, 9 Oct 2026 23:24:41 +0200 Subject: [PATCH 4/7] remove spurious parameter from the gemm_batch prototypes --- common_interface.h | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/common_interface.h b/common_interface.h index 35574f8ab8..f201b20b31 100644 --- a/common_interface.h +++ b/common_interface.h @@ -506,19 +506,19 @@ void OPENBLAS_API(zgemm)(char *, char *, blasint *, blasint *, blasint *, double void OPENBLAS_API(xgemm)(char *, char *, blasint *, blasint *, blasint *, xdouble *, xdouble *, blasint *, xdouble *, blasint *, xdouble *, xdouble *, blasint *); -void OPENBLAS_API(sbgemm_batch)(char *, char *, blasint *, blasint *, blasint *, float *, +void OPENBLAS_API(sbgemm_batch)(char *, char *, blasint *, blasint *, blasint *, float *, bfloat16 **, blasint *, bfloat16 **, blasint *, float *, float **, blasint *, blasint *, blasint *); -void OPENBLAS_API(sgemm_batch)(char *, char *, blasint *, blasint *, blasint *, float *, +void OPENBLAS_API(sgemm_batch)(char *, char *, blasint *, blasint *, blasint *, float *, float **, blasint *, float **, blasint *, float *, float **, blasint *, blasint *, blasint *); -void OPENBLAS_API(dgemm_batch)(char *, char *, blasint *, blasint *, blasint *, double *, +void OPENBLAS_API(dgemm_batch)(char *, char *, blasint *, blasint *, blasint *, double *, double **, blasint *, double **, blasint *, double *, double **, blasint *, blasint *, blasint *); -void OPENBLAS_API(cgemm_batch)(char *, char *, blasint *, blasint *, blasint *, float *, +void OPENBLAS_API(cgemm_batch)(char *, char *, blasint *, blasint *, blasint *, float *, float **, blasint *, float **, blasint *, float *, float **, blasint *, blasint *, blasint *); -void OPENBLAS_API(zgemm_batch)(char *, char *, blasint *, blasint *, blasint *, double *, +void OPENBLAS_API(zgemm_batch)(char *, char *, blasint *, blasint *, blasint *, double *, double **, blasint *, double **, blasint *, double *, double **, blasint *, blasint *, blasint *); From 7ba71004a3a4ada860e23911927822285be77c1c Mon Sep 17 00:00:00 2001 From: Martin Kroeker Date: Sat, 10 Oct 2026 16:06:28 +0200 Subject: [PATCH 5/7] Typo fix --- exports/gensymbol.pl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/exports/gensymbol.pl b/exports/gensymbol.pl index cf7b2bbc2a..b03206e7a0 100644 --- a/exports/gensymbol.pl +++ b/exports/gensymbol.pl @@ -113,7 +113,7 @@ cblas_stbmv, cblas_stbsv, cblas_stpmv, cblas_stpsv, cblas_strmm, cblas_strmv, cblas_strsm, cblas_strsv, cblas_sgeadd, cblas_sgemmt, cblas_sgemmtr, cblas_isamax, cblas_isamin, cblas_ismin, cblas_ismax, cblas_ssum,cblas_simatcopy,cblas_somatcopy, - cblas_samax, cblas_samin, cblas_sgemm_batchm cblas_sgemm_batch_strided); + cblas_samax, cblas_samin, cblas_sgemm_batch, cblas_sgemm_batch_strided); @cblasobjsz = ( cblas_dzasum, cblas_dznrm2, cblas_zaxpy, cblas_zcopy, cblas_zdotc, cblas_zdotu, cblas_zdscal, From d7ba80334b1583fb7ec6c43296dad257ca29665e Mon Sep 17 00:00:00 2001 From: Martin Kroeker Date: Sat, 10 Oct 2026 16:10:37 +0200 Subject: [PATCH 6/7] Add cblas_sbgemmt/sbgemmtr --- exports/gensymbol | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/exports/gensymbol b/exports/gensymbol index 4f4b90a82a..d94ca4b447 100755 --- a/exports/gensymbol +++ b/exports/gensymbol @@ -132,7 +132,9 @@ cblasobjsz=" cblasobjs="cblas_xerbla" -bfcblasobjs="cblas_bgemm cblas_bgemv cblas_bscal cblas_sbgemm cblas_sbgemv cblas_sbdot cblas_sbstobf16 cblas_sbdtobf16 cblas_sbf16tos cblas_dbf16tod cblas_sbgemm_batch cblas_sbgemm_batch_strided" +bfcblasobjs="cblas_bgemm cblas_bgemv cblas_bscal cblas_sbgemm cblas_sbgemv cblas_sbdot + cblas_sbstobf16 cblas_sbdtobf16 cblas_sbf16tos cblas_dbf16tod cblas_sbgemm_batch cblas_sbgemm_batch_strided + cblas_sbgemmt cblas_sbgemmtr" hfcblasobjs="cblas_shgemm" exblasobjs=" From e1e6cae789c354c081741dc9588d910b0976ca89 Mon Sep 17 00:00:00 2001 From: Martin Kroeker Date: Sat, 10 Oct 2026 20:33:16 +0200 Subject: [PATCH 7/7] Correct source for gemmtr --- interface/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interface/CMakeLists.txt b/interface/CMakeLists.txt index ee7d40d382..ab78c1f07e 100644 --- a/interface/CMakeLists.txt +++ b/interface/CMakeLists.txt @@ -135,7 +135,7 @@ endif () GenerateNamedObjects("trsm.c" "TRMM" "trmm" ${CBLAS_FLAG}) # gemmtr is gemmt under the name adopted by the Reference BLAS - GenerateNamedObjects("gemm.c" "RNAME" "gemmtr" ${CBLAS_FLAG}) + GenerateNamedObjects("gemmt.c" "RNAME" "gemmtr" ${CBLAS_FLAG}) # max and imax are compiled 4 times GenerateNamedObjects("max.c" "" "" ${CBLAS_FLAG})