From d9894f45d30e82fd1491ae38477a1fcd79faeed1 Mon Sep 17 00:00:00 2001 From: Martin Kroeker Date: Fri, 25 Feb 2022 10:04:00 +0100 Subject: [PATCH 1/4] Define sbgemm_r to fix DYNAMIC_ARCH builds --- kernel/setparam-ref.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/kernel/setparam-ref.c b/kernel/setparam-ref.c index fe796be64..a81b32ddc 100644 --- a/kernel/setparam-ref.c +++ b/kernel/setparam-ref.c @@ -1824,6 +1824,13 @@ static void init_parameter(void) { fprintf(stderr, "L2 = %8d DGEMM_P .. %d\n", l2, TABLE_NAME.dgemm_p); #endif +#if BUILD_BFLOAT16==1 + TABLE_NAME.sbgemm_r = (((BUFFER_SIZE - + ((TABLE_NAME.sbgemm_p * TABLE_NAME.sbgemm_q * 4 + TABLE_NAME.offsetA + + TABLE_NAME.align) & ~TABLE_NAME.align) + ) / (TABLE_NAME.sbgemm_q * 4) - 15) & ~15); +#endif + #if BUILD_SINGLE==1 TABLE_NAME.sgemm_r = (((BUFFER_SIZE - ((TABLE_NAME.sgemm_p * TABLE_NAME.sgemm_q * 4 + TABLE_NAME.offsetA From 9d7429406f0950113c989105eef9c5ee6cad01d3 Mon Sep 17 00:00:00 2001 From: Martin Kroeker Date: Fri, 25 Feb 2022 10:05:36 +0100 Subject: [PATCH 2/4] Declare SHUFFLE_MAGIC_NO as const to placate clang --- kernel/x86_64/sbgemm_microk_cooperlake_template.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/kernel/x86_64/sbgemm_microk_cooperlake_template.c b/kernel/x86_64/sbgemm_microk_cooperlake_template.c index b8ed9838e..4a4e46f44 100644 --- a/kernel/x86_64/sbgemm_microk_cooperlake_template.c +++ b/kernel/x86_64/sbgemm_microk_cooperlake_template.c @@ -356,7 +356,7 @@ void sbgemm_block_kernel_nn_32xNx32_one(BLASLONG m, BLASLONG n, BLASLONG k, floa bfloat16 * B_addr = B; float * C_addr = C; - int SHUFFLE_MAGIC_NO = 0x39; + const int SHUFFLE_MAGIC_NO = 0x39; BLASLONG tag_k_32x = k & (~31); #ifndef ONE_ALPHA From 0698212c8c7318fd76cb366d27663b2c20856748 Mon Sep 17 00:00:00 2001 From: Martin Kroeker Date: Fri, 25 Feb 2022 15:33:02 +0100 Subject: [PATCH 3/4] Remove stray $ --- kernel/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/kernel/CMakeLists.txt b/kernel/CMakeLists.txt index 8aa6728d5..98c803e71 100644 --- a/kernel/CMakeLists.txt +++ b/kernel/CMakeLists.txt @@ -678,7 +678,7 @@ endif () set(SBGEMM_SMALL_K_B0_TN ../generic/gemm_small_matrix_kernel_tn.c) endif () if (NOT DEFINED SBGEMM_SMALL_K_B0_TT) - set($SBGEMM_SMALL_K_B0_TT ../generic/gemm_small_matrix_kernel_tt.c) + set(SBGEMM_SMALL_K_B0_TT ../generic/gemm_small_matrix_kernel_tt.c) endif () GenerateNamedObjects("${KERNELDIR}/${SBGEMM_SMALL_M_PERMIT}" "" "gemm_small_matrix_permit" false "" "" false "BFLOAT16") GenerateNamedObjects("${KERNELDIR}/${SBGEMM_SMALL_K_NN}" "" "gemm_small_kernel_nn" false "" "" false "BFLOAT16") From 9c626e466ed52edeff947607b01a580f549dc204 Mon Sep 17 00:00:00 2001 From: Martin Kroeker Date: Fri, 25 Feb 2022 15:36:02 +0100 Subject: [PATCH 4/4] really fix definition of SHUFFLE_MAGIC_NO --- kernel/x86_64/sbgemm_microk_cooperlake_template.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/kernel/x86_64/sbgemm_microk_cooperlake_template.c b/kernel/x86_64/sbgemm_microk_cooperlake_template.c index 4a4e46f44..bd5cbb744 100644 --- a/kernel/x86_64/sbgemm_microk_cooperlake_template.c +++ b/kernel/x86_64/sbgemm_microk_cooperlake_template.c @@ -13,6 +13,8 @@ #define ONE 1.e0f #define ZERO 0.e0f +#define SHUFFLE_MAGIC_NO (const int) 0x39 + #undef STORE16_COMPLETE_RESULT #undef STORE16_MASK_COMPLETE_RESULT #undef SBGEMM_BLOCK_KERNEL_NN_32x8xK @@ -356,7 +358,6 @@ void sbgemm_block_kernel_nn_32xNx32_one(BLASLONG m, BLASLONG n, BLASLONG k, floa bfloat16 * B_addr = B; float * C_addr = C; - const int SHUFFLE_MAGIC_NO = 0x39; BLASLONG tag_k_32x = k & (~31); #ifndef ONE_ALPHA @@ -465,7 +466,6 @@ void sbgemm_block_kernel_nn_16xNx32_one(BLASLONG m, BLASLONG n, BLASLONG k, floa bfloat16 * B_addr = B; float * C_addr = C; - int SHUFFLE_MAGIC_NO = 0x39; BLASLONG tag_k_32x = k & (~31); #ifndef ONE_ALPHA @@ -1192,7 +1192,6 @@ void sbgemm_block_kernel_tn_32xNx32_one(BLASLONG m, BLASLONG n, BLASLONG k, floa bfloat16 * B_addr = B; float * C_addr = C; - int SHUFFLE_MAGIC_NO = 0x39; BLASLONG tag_k_32x = k & (~31); #ifndef ONE_ALPHA @@ -1291,7 +1290,6 @@ void sbgemm_block_kernel_tn_16xNx32_one(BLASLONG m, BLASLONG n, BLASLONG k, floa bfloat16 * B_addr = B; float * C_addr = C; - int SHUFFLE_MAGIC_NO = 0x39; BLASLONG tag_k_32x = k & (~31); #ifndef ONE_ALPHA