Skip to content

Commit da5bd8b

Browse files
authored
Merge pull request #3364 from guowangy/bf16-cooperlake
Add SBGEMM kernel for Cooperlake
2 parents 7c72c45 + 045ed5c commit da5bd8b

11 files changed

Lines changed: 1476 additions & 3 deletions

driver/others/parameter.c

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -524,6 +524,9 @@ void blas_set_parameter(void){
524524
xgemm_p = ((xgemm_p + XGEMM_UNROLL_M - 1)/XGEMM_UNROLL_M) * XGEMM_UNROLL_M;
525525
#endif
526526

527+
#ifdef BUILD_BFLOAT16
528+
sbgemm_r = (((BUFFER_SIZE - ((SBGEMM_P * SBGEMM_Q * 4 + GEMM_OFFSET_A + GEMM_ALIGN) & ~GEMM_ALIGN)) / (SBGEMM_Q * 4)) - 15) & ~15;
529+
#endif
527530
sgemm_r = (((BUFFER_SIZE - ((SGEMM_P * SGEMM_Q * 4 + GEMM_OFFSET_A + GEMM_ALIGN) & ~GEMM_ALIGN)) / (SGEMM_Q * 4)) - 15) & ~15;
528531
dgemm_r = (((BUFFER_SIZE - ((DGEMM_P * DGEMM_Q * 8 + GEMM_OFFSET_A + GEMM_ALIGN) & ~GEMM_ALIGN)) / (DGEMM_Q * 8)) - 15) & ~15;
529532
cgemm_r = (((BUFFER_SIZE - ((CGEMM_P * CGEMM_Q * 8 + GEMM_OFFSET_A + GEMM_ALIGN) & ~GEMM_ALIGN)) / (CGEMM_Q * 8)) - 15) & ~15;
@@ -629,7 +632,9 @@ void blas_set_parameter(void){
629632
xgemm_p = 16 * (size + 1);
630633
#endif
631634

635+
#ifdef BUILD_BFLOAT16
632636
sbgemm_r = (((BUFFER_SIZE - ((SBGEMM_P * SBGEMM_Q * 4 + GEMM_OFFSET_A + GEMM_ALIGN) & ~GEMM_ALIGN)) / (SBGEMM_Q * 4)) - 15) & ~15;
637+
#endif
633638
sgemm_r = (((BUFFER_SIZE - ((SGEMM_P * SGEMM_Q * 4 + GEMM_OFFSET_A + GEMM_ALIGN) & ~GEMM_ALIGN)) / (SGEMM_Q * 4)) - 15) & ~15;
634639
dgemm_r = (((BUFFER_SIZE - ((DGEMM_P * DGEMM_Q * 8 + GEMM_OFFSET_A + GEMM_ALIGN) & ~GEMM_ALIGN)) / (DGEMM_Q * 8)) - 15) & ~15;
635640
cgemm_r = (((BUFFER_SIZE - ((CGEMM_P * CGEMM_Q * 8 + GEMM_OFFSET_A + GEMM_ALIGN) & ~GEMM_ALIGN)) / (CGEMM_Q * 8)) - 15) & ~15;

interface/gemm.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -326,7 +326,7 @@ void CNAME(enum CBLAS_ORDER order, enum CBLAS_TRANSPOSE TransA, enum CBLAS_TRANS
326326

327327
PRINT_DEBUG_CNAME;
328328

329-
#if !defined(COMPLEX) && !defined(DOUBLE) && defined(USE_SGEMM_KERNEL_DIRECT)
329+
#if !defined(COMPLEX) && !defined(DOUBLE) && !defined(BFLOAT16) && defined(USE_SGEMM_KERNEL_DIRECT)
330330
#ifdef DYNAMIC_ARCH
331331
if (support_avx512() )
332332
#endif

kernel/x86_64/KERNEL.COOPERLAKE

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,3 +9,14 @@ SBGEMM_SMALL_K_TN = sbgemm_small_kernel_tn_cooperlake.c
99
SBGEMM_SMALL_K_B0_TN = sbgemm_small_kernel_tn_cooperlake.c
1010
SBGEMM_SMALL_K_TT = sbgemm_small_kernel_tt_cooperlake.c
1111
SBGEMM_SMALL_K_B0_TT = sbgemm_small_kernel_tt_cooperlake.c
12+
13+
SBGEMM_BETA = sgemm_beta_skylakex.c
14+
SBGEMMKERNEL = sbgemm_kernel_16x4_cooperlake.c
15+
SBGEMMINCOPY = sbgemm_ncopy_16_cooperlake.c
16+
SBGEMMITCOPY = sbgemm_tcopy_16_cooperlake.c
17+
SBGEMMONCOPY = sbgemm_ncopy_4_cooperlake.c
18+
SBGEMMOTCOPY = sbgemm_tcopy_4_cooperlake.c
19+
SBGEMMINCOPYOBJ = sbgemm_incopy$(TSUFFIX).$(SUFFIX)
20+
SBGEMMITCOPYOBJ = sbgemm_itcopy$(TSUFFIX).$(SUFFIX)
21+
SBGEMMONCOPYOBJ = sbgemm_oncopy$(TSUFFIX).$(SUFFIX)
22+
SBGEMMOTCOPYOBJ = sbgemm_otcopy$(TSUFFIX).$(SUFFIX)

0 commit comments

Comments
 (0)