Skip to content

Commit fe5402d

Browse files
authored
Merge pull request #5454 from ChipKerchner/addRISCV64_BFLOAT16
Add support for BF16 sbgemm on RISCV.
2 parents e5c8361 + 92f09a6 commit fe5402d

File tree

6 files changed

+1592
-15
lines changed

6 files changed

+1592
-15
lines changed

Makefile.riscv64

Lines changed: 10 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -6,23 +6,20 @@ ifeq ($(CORE), x280)
66
CCOMMON_OPT += -march=rv64imafdcv_zba_zbb_zfh_zvl512b -mabi=lp64d
77
FCOMMON_OPT += -march=rv64imafdcv_zba_zbb_zfh -mabi=lp64d -static
88
endif
9-
ifeq ($(CORE), RISCV64_ZVL256B)
9+
RISCV64_OPT = rv64imafdcv
1010
ifeq ($(BUILD_HFLOAT16), 1)
11-
CCOMMON_OPT += -march=rv64imafdcv_zvl256b_zvfh_zfh -mabi=lp64d
12-
FCOMMON_OPT += -march=rv64imafdcv_zvfh_zfh -mabi=lp64d
13-
else
14-
CCOMMON_OPT += -march=rv64imafdcv_zvl256b -mabi=lp64d
15-
FCOMMON_OPT += -march=rv64imafdcv -mabi=lp64d
11+
RISCV64_OPT := $(RISCV64_OPT)_zvfh_zfh
1612
endif
13+
ifeq ($(BUILD_BFLOAT16), 1)
14+
RISCV64_OPT := $(RISCV64_OPT)_zfbfmin_zvfbfmin_zvfbfwma
1715
endif
18-
ifeq ($(CORE), RISCV64_ZVL128B)
19-
ifeq ($(BUILD_HFLOAT16), 1)
20-
CCOMMON_OPT += -march=rv64imafdcv_zvfh_zfh -mabi=lp64d
21-
FCOMMON_OPT += -march=rv64imafdcv_zvfh_zfh -mabi=lp64d
22-
else
23-
CCOMMON_OPT += -march=rv64imafdcv -mabi=lp64d
24-
FCOMMON_OPT += -march=rv64imafdcv -mabi=lp64d
16+
ifeq ($(CORE), RISCV64_ZVL256B)
17+
CCOMMON_OPT += -march=$(RISCV64_OPT)_zvl256b -mabi=lp64d
18+
FCOMMON_OPT += -march=$(RISCV64_OPT) -mabi=lp64d
2519
endif
20+
ifeq ($(CORE), RISCV64_ZVL128B)
21+
CCOMMON_OPT += -march=$(RISCV64_OPT) -mabi=lp64d
22+
FCOMMON_OPT += -march=$(RISCV64_OPT) -mabi=lp64d
2623
endif
2724
ifeq ($(CORE), RISCV64_GENERIC)
2825
CCOMMON_OPT += -march=rv64imafdc -mabi=lp64d

kernel/riscv64/KERNEL.RISCV64_ZVL128B

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -256,7 +256,7 @@ ifndef ZGEMM_BETA
256256
ZGEMM_BETA = zgemm_beta_rvv.c
257257
endif
258258

259-
ifeq ($(BUILD_BFLOAT16), 1)
259+
ifeq ($(BUILD_HFLOAT16), 1)
260260
SHGEMMKERNEL = shgemm_kernel_$(SHGEMM_UNROLL_M)x$(SHGEMM_UNROLL_N)_zvl128b.c
261261
SHGEMMONCOPY = ../generic/gemm_ncopy_$(SHGEMM_UNROLL_N).c
262262
SHGEMMOTCOPY = ../generic/gemm_tcopy_$(SHGEMM_UNROLL_N).c
@@ -267,5 +267,16 @@ SHGEMM_BETA = gemm_beta_rvv.c
267267
endif
268268
endif
269269

270+
ifeq ($(BUILD_BFLOAT16), 1)
271+
SBGEMMKERNEL = sbgemm_kernel_$(SBGEMM_UNROLL_M)x$(SBGEMM_UNROLL_N)_zvl128b.c
272+
SBGEMMONCOPY = ../generic/gemm_ncopy_$(SBGEMM_UNROLL_N).c
273+
SBGEMMOTCOPY = ../generic/gemm_tcopy_$(SBGEMM_UNROLL_N).c
274+
SBGEMMONCOPYOBJ = sbgemm_oncopy$(TSUFFIX).$(SUFFIX)
275+
SBGEMMOTCOPYOBJ = sbgemm_otcopy$(TSUFFIX).$(SUFFIX)
276+
ifndef SBGEMM_BETA
277+
SBGEMM_BETA = gemm_beta_rvv.c
278+
endif
279+
endif
280+
270281
DOMATCOPY_CT = omatcopy_ct_rvv.c
271282
SOMATCOPY_CT = omatcopy_ct_rvv.c

kernel/riscv64/KERNEL.RISCV64_ZVL256B

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -223,7 +223,7 @@ DOMATCOPY_CT = omatcopy_ct_rvv.c
223223
SOMATCOPY_CT = omatcopy_ct_rvv.c
224224

225225

226-
ifeq ($(BUILD_BFLOAT16), 1)
226+
ifeq ($(BUILD_HFLOAT16), 1)
227227
SHGEMMKERNEL = shgemm_kernel_$(SHGEMM_UNROLL_M)x$(SHGEMM_UNROLL_N)_zvl256b.c
228228
ifneq ($(SHGEMM_UNROLL_M), $(SHGEMM_UNROLL_N))
229229
SHGEMMINCOPY = ../generic/gemm_ncopy_$(SHGEMM_UNROLL_M).c
@@ -240,5 +240,22 @@ SHGEMM_BETA = gemm_beta_rvv.c
240240
endif
241241
endif
242242

243+
ifeq ($(BUILD_BFLOAT16), 1)
244+
SBGEMMKERNEL = sbgemm_kernel_$(SBGEMM_UNROLL_M)x$(SBGEMM_UNROLL_N)_zvl256b.c
245+
ifneq ($(SBGEMM_UNROLL_M), $(SBGEMM_UNROLL_N))
246+
SBGEMMINCOPY = ../generic/gemm_ncopy_$(SBGEMM_UNROLL_M).c
247+
SBGEMMITCOPY = ../generic/gemm_tcopy_$(SBGEMM_UNROLL_M).c
248+
SBGEMMINCOPYOBJ = sbgemm_incopy$(TSUFFIX).$(SUFFIX)
249+
SBGEMMITCOPYOBJ = sbgemm_itcopy$(TSUFFIX).$(SUFFIX)
250+
endif
251+
SBGEMMONCOPY = ../generic/gemm_ncopy_$(SBGEMM_UNROLL_N).c
252+
SBGEMMOTCOPY = ../generic/gemm_tcopy_$(SBGEMM_UNROLL_N).c
253+
SBGEMMONCOPYOBJ = sbgemm_oncopy$(TSUFFIX).$(SUFFIX)
254+
SBGEMMOTCOPYOBJ = sbgemm_otcopy$(TSUFFIX).$(SUFFIX)
255+
ifndef SBGEMM_BETA
256+
SBGEMM_BETA = gemm_beta_rvv.c
257+
endif
258+
endif
259+
243260
SAXPBYKERNEL = axpby_vector_v2.c
244261
DAXPBYKERNEL = axpby_vector_v2.c

0 commit comments

Comments
 (0)