Skip to content

Commit 8c99d5d

Browse files
authored
Merge pull request #3796 from martin-frbg/gemmt
Add a trivial GEMMT implementation based on a looped GEMV
2 parents b53b0f6 + c970717 commit 8c99d5d

3 files changed

Lines changed: 637 additions & 11 deletions

File tree

interface/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ set(BLAS2_COMPLEX_ONLY_MANGLED_SOURCES
5353
# these do not have separate 'z' sources
5454
set(BLAS3_SOURCES
5555
gemm.c symm.c
56-
trsm.c syrk.c syr2k.c
56+
trsm.c syrk.c syr2k.c gemmt.c
5757
)
5858

5959
set(BLAS3_MANGLED_SOURCES

interface/Makefile

Lines changed: 47 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -44,12 +44,12 @@ SBLAS3OBJS = \
4444
sgemm.$(SUFFIX) ssymm.$(SUFFIX) strmm.$(SUFFIX) \
4545
strsm.$(SUFFIX) ssyrk.$(SUFFIX) ssyr2k.$(SUFFIX) \
4646
somatcopy.$(SUFFIX) simatcopy.$(SUFFIX)\
47-
sgeadd.$(SUFFIX)
47+
sgeadd.$(SUFFIX) sgemmt.$(SUFFIX)
4848

4949
ifeq ($(BUILD_BFLOAT16),1)
5050
SBBLAS1OBJS = sbdot.$(SUFFIX)
5151
SBBLAS2OBJS = sbgemv.$(SUFFIX)
52-
SBBLAS3OBJS = sbgemm.$(SUFFIX)
52+
SBBLAS3OBJS = sbgemm.$(SUFFIX) sbgemmt.$(SUFFIX)
5353
SBEXTOBJS = sbstobf16.$(SUFFIX) sbdtobf16.$(SUFFIX) sbf16tos.$(SUFFIX) dbf16tod.$(SUFFIX)
5454
endif
5555

@@ -76,7 +76,7 @@ DBLAS3OBJS = \
7676
dgemm.$(SUFFIX) dsymm.$(SUFFIX) dtrmm.$(SUFFIX) \
7777
dtrsm.$(SUFFIX) dsyrk.$(SUFFIX) dsyr2k.$(SUFFIX) \
7878
domatcopy.$(SUFFIX) dimatcopy.$(SUFFIX)\
79-
dgeadd.$(SUFFIX)
79+
dgeadd.$(SUFFIX) dgemmt.$(SUFFIX)
8080

8181
CBLAS1OBJS = \
8282
caxpy.$(SUFFIX) caxpyc.$(SUFFIX) cswap.$(SUFFIX) \
@@ -105,7 +105,7 @@ CBLAS3OBJS = \
105105
ctrsm.$(SUFFIX) csyrk.$(SUFFIX) csyr2k.$(SUFFIX) \
106106
chemm.$(SUFFIX) cherk.$(SUFFIX) cher2k.$(SUFFIX) \
107107
comatcopy.$(SUFFIX) cimatcopy.$(SUFFIX)\
108-
cgeadd.$(SUFFIX)
108+
cgeadd.$(SUFFIX) cgemmt.$(SUFFIX)
109109

110110
ZBLAS1OBJS = \
111111
zaxpy.$(SUFFIX) zaxpyc.$(SUFFIX) zswap.$(SUFFIX) \
@@ -134,7 +134,7 @@ ZBLAS3OBJS = \
134134
ztrsm.$(SUFFIX) zsyrk.$(SUFFIX) zsyr2k.$(SUFFIX) \
135135
zhemm.$(SUFFIX) zherk.$(SUFFIX) zher2k.$(SUFFIX) \
136136
zomatcopy.$(SUFFIX) zimatcopy.$(SUFFIX)\
137-
zgeadd.$(SUFFIX)
137+
zgeadd.$(SUFFIX) zgemmt.$(SUFFIX)
138138

139139
ifeq ($(SUPPORT_GEMM3M), 1)
140140

@@ -281,12 +281,12 @@ CSBLAS2OBJS = \
281281
CSBLAS3OBJS = \
282282
cblas_sgemm.$(SUFFIX) cblas_ssymm.$(SUFFIX) cblas_strmm.$(SUFFIX) cblas_strsm.$(SUFFIX) \
283283
cblas_ssyrk.$(SUFFIX) cblas_ssyr2k.$(SUFFIX) cblas_somatcopy.$(SUFFIX) cblas_simatcopy.$(SUFFIX)\
284-
cblas_sgeadd.$(SUFFIX)
284+
cblas_sgeadd.$(SUFFIX) cblas_sgemmt.$(SUFFIX)
285285

286286
ifeq ($(BUILD_BFLOAT16),1)
287287
CSBBLAS1OBJS = cblas_sbdot.$(SUFFIX)
288288
CSBBLAS2OBJS = cblas_sbgemv.$(SUFFIX)
289-
CSBBLAS3OBJS = cblas_sbgemm.$(SUFFIX)
289+
CSBBLAS3OBJS = cblas_sbgemm.$(SUFFIX) cblas_sbgemmt.$(SUFFIX)
290290
CSBEXTOBJS = cblas_sbstobf16.$(SUFFIX) cblas_sbdtobf16.$(SUFFIX) cblas_sbf16tos.$(SUFFIX) cblas_dbf16tod.$(SUFFIX)
291291
endif
292292

@@ -306,7 +306,7 @@ CDBLAS2OBJS = \
306306
CDBLAS3OBJS += \
307307
cblas_dgemm.$(SUFFIX) cblas_dsymm.$(SUFFIX) cblas_dtrmm.$(SUFFIX) cblas_dtrsm.$(SUFFIX) \
308308
cblas_dsyrk.$(SUFFIX) cblas_dsyr2k.$(SUFFIX) cblas_domatcopy.$(SUFFIX) cblas_dimatcopy.$(SUFFIX) \
309-
cblas_dgeadd.$(SUFFIX)
309+
cblas_dgeadd.$(SUFFIX) cblas_dgemmt.$(SUFFIX)
310310

311311
CCBLAS1OBJS = \
312312
cblas_icamax.$(SUFFIX) cblas_icamin.$(SUFFIX) cblas_scasum.$(SUFFIX) cblas_caxpy.$(SUFFIX) \
@@ -331,7 +331,7 @@ CCBLAS3OBJS = \
331331
cblas_csyrk.$(SUFFIX) cblas_csyr2k.$(SUFFIX) \
332332
cblas_chemm.$(SUFFIX) cblas_cherk.$(SUFFIX) cblas_cher2k.$(SUFFIX) \
333333
cblas_comatcopy.$(SUFFIX) cblas_cimatcopy.$(SUFFIX)\
334-
cblas_cgeadd.$(SUFFIX)
334+
cblas_cgeadd.$(SUFFIX) cblas_cgemmt.$(SUFFIX)
335335

336336
CXERBLAOBJ = \
337337
cblas_xerbla.$(SUFFIX)
@@ -362,7 +362,7 @@ CZBLAS3OBJS = \
362362
cblas_zsyrk.$(SUFFIX) cblas_zsyr2k.$(SUFFIX) \
363363
cblas_zhemm.$(SUFFIX) cblas_zherk.$(SUFFIX) cblas_zher2k.$(SUFFIX)\
364364
cblas_zomatcopy.$(SUFFIX) cblas_zimatcopy.$(SUFFIX) \
365-
cblas_zgeadd.$(SUFFIX)
365+
cblas_zgeadd.$(SUFFIX) cblas_zgemmt.$(SUFFIX)
366366

367367

368368
ifeq ($(SUPPORT_GEMM3M), 1)
@@ -1300,6 +1300,8 @@ xhpr2.$(SUFFIX) xhpr2.$(PSUFFIX) : zhpr2.c
13001300
ifeq ($(BUILD_BFLOAT16),1)
13011301
sbgemm.$(SUFFIX) sbgemm.$(PSUFFIX) : gemm.c ../param.h
13021302
$(CC) -c $(CFLAGS) $< -o $(@F)
1303+
sbgemmt.$(SUFFIX) sbgemm.$(PSUFFIX) : gemmt.c ../param.h
1304+
$(CC) -c $(CFLAGS) $< -o $(@F)
13031305
endif
13041306

13051307
sgemm.$(SUFFIX) sgemm.$(PSUFFIX) : gemm.c ../param.h
@@ -1320,6 +1322,24 @@ zgemm.$(SUFFIX) zgemm.$(PSUFFIX) : gemm.c ../param.h
13201322
xgemm.$(SUFFIX) xgemm.$(PSUFFIX) : gemm.c ../param.h
13211323
$(CC) -c $(CFLAGS) $< -o $(@F)
13221324

1325+
sgemmt.$(SUFFIX) sgemmt.$(PSUFFIX) : gemmt.c ../param.h
1326+
$(CC) -c $(CFLAGS) $< -o $(@F)
1327+
1328+
dgemmt.$(SUFFIX) dgemmt.$(PSUFFIX) : gemmt.c ../param.h
1329+
$(CC) -c $(CFLAGS) $< -o $(@F)
1330+
1331+
qgemmt.$(SUFFIX) qgemmt.$(PSUFFIX) : gemmt.c ../param.h
1332+
$(CC) -c $(CFLAGS) $< -o $(@F)
1333+
1334+
cgemmt.$(SUFFIX) cgemmt.$(PSUFFIX) : gemmt.c ../param.h
1335+
$(CC) -c $(CFLAGS) $< -o $(@F)
1336+
1337+
zgemmt.$(SUFFIX) zgemmt.$(PSUFFIX) : gemmt.c ../param.h
1338+
$(CC) -c $(CFLAGS) $< -o $(@F)
1339+
1340+
xgemmt.$(SUFFIX) xgemmt.$(PSUFFIX) : gemmt.c ../param.h
1341+
$(CC) -c $(CFLAGS) $< -o $(@F)
1342+
13231343
ssymm.$(SUFFIX) ssymm.$(PSUFFIX) : symm.c
13241344
$(CC) -c $(CFLAGS) $< -o $(@F)
13251345

@@ -1907,6 +1927,23 @@ cblas_cgemm.$(SUFFIX) cblas_cgemm.$(PSUFFIX) : gemm.c ../param.h
19071927
cblas_zgemm.$(SUFFIX) cblas_zgemm.$(PSUFFIX) : gemm.c ../param.h
19081928
$(CC) -DCBLAS -c $(CFLAGS) $< -o $(@F)
19091929

1930+
cblas_sgemmt.$(SUFFIX) cblas_sgemmt.$(PSUFFIX) : gemmt.c ../param.h
1931+
$(CC) -DCBLAS -c $(CFLAGS) $< -o $(@F)
1932+
1933+
ifeq ($(BUILD_BFLOAT16),1)
1934+
cblas_sbgemmt.$(SUFFIX) cblas_sbgemmt.$(PSUFFIX) : gemmt.c ../param.h
1935+
$(CC) -DCBLAS -c $(CFLAGS) $< -o $(@F)
1936+
endif
1937+
1938+
cblas_dgemmt.$(SUFFIX) cblas_dgemmt.$(PSUFFIX) : gemmt.c ../param.h
1939+
$(CC) -DCBLAS -c $(CFLAGS) $< -o $(@F)
1940+
1941+
cblas_cgemmt.$(SUFFIX) cblas_cgemmt.$(PSUFFIX) : gemmt.c ../param.h
1942+
$(CC) -DCBLAS -c $(CFLAGS) $< -o $(@F)
1943+
1944+
cblas_zgemmt.$(SUFFIX) cblas_zgemmt.$(PSUFFIX) : gemmt.c ../param.h
1945+
$(CC) -DCBLAS -c $(CFLAGS) $< -o $(@F)
1946+
19101947
cblas_ssymm.$(SUFFIX) cblas_ssymm.$(PSUFFIX) : symm.c
19111948
$(CC) -DCBLAS -c $(CFLAGS) $< -o $(@F)
19121949

0 commit comments

Comments
 (0)