Skip to content

Commit d978892

Browse files
authored
Merge pull request #5898 from moluopro/develop
Fix ARM64 SME direct-kernel build and dispatch
2 parents 7c99195 + 06d553d commit d978892

9 files changed

Lines changed: 1160 additions & 1142 deletions

cmake/cc.cmake

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -313,13 +313,13 @@ endif ()
313313
if (${CORE} STREQUAL ARMV9SME)
314314
if (NOT DYNAMIC_ARCH)
315315
if (${CMAKE_C_COMPILER_ID} STREQUAL "NVHPC" AND NOT NO_SVE)
316-
set (CCOMMON_OPT "${CCOMMON_OPT} -tp=host")
316+
set (CCOMMON_OPT "${CCOMMON_OPT} -tp=host")
317317
else ()
318-
set (CCOMMON_OPT "${CCOMMON_OPT} -march=armv9-a+sme")
319-
if (${OSNAME} STREQUAL Windows AND ${CMAKE_C_COMPILER_ID} MATCHES "Clang" )
320-
set (CCOMMON_OPT "${CCOMMON_OPT} --aarch64-stack-hazard-size=0")
318+
set (CCOMMON_OPT "${CCOMMON_OPT} -march=armv9-a+sme")
319+
if (CMAKE_SYSTEM_NAME STREQUAL "Windows" AND CMAKE_C_COMPILER_ID MATCHES "Clang")
320+
set (CCOMMON_OPT "${CCOMMON_OPT} --aarch64-stack-hazard-size=0")
321+
endif ()
321322
endif ()
322-
endif ()
323323
endif ()
324324
endif ()
325325

interface/trsm.c

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -361,6 +361,7 @@ void CNAME(enum CBLAS_ORDER order,
361361

362362
if (args.m == 0 || args.n == 0) return;
363363

364+
#if defined(TRMM)
364365
#if !defined(COMPLEX) && !defined(DOUBLE) && !defined(BFLOAT16) && !defined(HFLOAT16)
365366
#if defined(ARCH_ARM64) && (defined(USE_STRMM_KERNEL_DIRECT)||defined(DYNAMIC_ARCH))
366367
#if defined(DYNAMIC_ARCH)
@@ -371,15 +372,17 @@ if (strcmp(gotoblas_corename(), "armv9sme") == 0
371372
)
372373
#endif
373374
if (order == CblasRowMajor && Diag == CblasNonUnit && Side == CblasLeft && m == lda && n == ldb) {
374-
if (Trans == CblasNoTrans) {
375+
if (Trans == CblasNoTrans || Trans == CblasConjNoTrans) {
375376
(Uplo == CblasUpper ? STRMM_DIRECT_LNUN : STRMM_DIRECT_LNLN)(m, n, alpha, a, lda, b, ldb);
376-
} else if (Trans == CblasTrans) {
377+
return;
378+
} else if (Trans == CblasTrans || Trans == CblasConjTrans) {
377379
(Uplo == CblasUpper ? STRMM_DIRECT_LTUN : STRMM_DIRECT_LTLN)(m, n, alpha, a, lda, b, ldb);
380+
return;
378381
}
379-
return;
380382
}
381383
#endif
382384
#endif
385+
#endif
383386

384387

385388

kernel/CMakeLists.txt

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -292,38 +292,38 @@ function (build_core TARGET_CORE KDIR TSUFFIX KERNEL_DEFINITIONS)
292292
if (USE_DIRECT_SSYMM)
293293
if (ARM64)
294294
set (SSYMMDIRECTKERNEL_ALPHA_BETA ssymm_direct_alpha_beta_arm64_sme1.c)
295-
GenerateNamedObjects("${KERNELDIR}/${SSYMMDIRECTKERNEL_ALPHA_BETA}" "" "symm_direct_alpha_betaLU" false "" "" false SINGLE)
296-
GenerateNamedObjects("${KERNELDIR}/${SSYMMDIRECTKERNEL_ALPHA_BETA}" "" "symm_direct_alpha_betaLL" false "" "" false SINGLE)
295+
GenerateNamedObjects("${KERNELDIR}/${SSYMMDIRECTKERNEL_ALPHA_BETA}" "LEFT;UPPER" "symm_direct_alpha_betaLU" false "" "" false SINGLE)
296+
GenerateNamedObjects("${KERNELDIR}/${SSYMMDIRECTKERNEL_ALPHA_BETA}" "LEFT;LOWER" "symm_direct_alpha_betaLL" false "" "" false SINGLE)
297297
endif ()
298298
endif()
299299

300300
if (USE_DIRECT_STRMM)
301301
if (ARM64)
302302
set (STRMMDIRECTKERNEL strmm_direct_arm64_sme1.c)
303-
GenerateNamedObjects("${KERNELDIR}/${STRMMDIRECTKERNEL}" "" "trmm_direct_LNUN" false "" "" false SINGLE)
303+
GenerateNamedObjects("${KERNELDIR}/${STRMMDIRECTKERNEL}" "UPPER" "trmm_direct_LNUN" false "" "" false SINGLE)
304304
GenerateNamedObjects("${KERNELDIR}/${STRMMDIRECTKERNEL}" "" "trmm_direct_LNLN" false "" "" false SINGLE)
305-
GenerateNamedObjects("${KERNELDIR}/${STRMMDIRECTKERNEL}" "" "trmm_direct_LTUN" false "" "" false SINGLE)
306-
GenerateNamedObjects("${KERNELDIR}/${STRMMDIRECTKERNEL}" "" "trmm_direct_LTLN" false "" "" false SINGLE)
305+
GenerateNamedObjects("${KERNELDIR}/${STRMMDIRECTKERNEL}" "TRANSA;UPPER" "trmm_direct_LTUN" false "" "" false SINGLE)
306+
GenerateNamedObjects("${KERNELDIR}/${STRMMDIRECTKERNEL}" "TRANSA" "trmm_direct_LTLN" false "" "" false SINGLE)
307307
endif ()
308308
endif ()
309309

310310
if (USE_DIRECT_SSYRK)
311311
if (ARM64)
312312
set (SSYRKDIRECTKERNEL_ALPHA_BETA ssyrk_direct_alpha_beta_arm64_sme1.c)
313-
GenerateNamedObjects("${KERNELDIR}/${SSYRKDIRECTKERNEL_ALPHA_BETA}" "" "syrk_direct_alpha_betaUN" false "" "" false SINGLE)
314-
GenerateNamedObjects("${KERNELDIR}/${SSYRKDIRECTKERNEL_ALPHA_BETA}" "" "syrk_direct_alpha_betaUT" false "" "" false SINGLE)
313+
GenerateNamedObjects("${KERNELDIR}/${SSYRKDIRECTKERNEL_ALPHA_BETA}" "UPPER" "syrk_direct_alpha_betaUN" false "" "" false SINGLE)
314+
GenerateNamedObjects("${KERNELDIR}/${SSYRKDIRECTKERNEL_ALPHA_BETA}" "TRANSA;UPPER" "syrk_direct_alpha_betaUT" false "" "" false SINGLE)
315315
GenerateNamedObjects("${KERNELDIR}/${SSYRKDIRECTKERNEL_ALPHA_BETA}" "" "syrk_direct_alpha_betaLN" false "" "" false SINGLE)
316-
GenerateNamedObjects("${KERNELDIR}/${SSYRKDIRECTKERNEL_ALPHA_BETA}" "" "syrk_direct_alpha_betaLT" false "" "" false SINGLE)
316+
GenerateNamedObjects("${KERNELDIR}/${SSYRKDIRECTKERNEL_ALPHA_BETA}" "TRANSA" "syrk_direct_alpha_betaLT" false "" "" false SINGLE)
317317
endif ()
318318
endif()
319319

320320
if (USE_DIRECT_SSYR2K)
321321
if (ARM64)
322322
set (SSYR2KDIRECTKERNEL_ALPHA_BETA ssyr2k_direct_alpha_beta_arm64_sme1.c)
323-
GenerateNamedObjects("${KERNELDIR}/${SSYR2KDIRECTKERNEL_ALPHA_BETA}" "" "syr2k_direct_alpha_betaUN" false "" "" false SINGLE)
324-
GenerateNamedObjects("${KERNELDIR}/${SSYR2KDIRECTKERNEL_ALPHA_BETA}" "" "syr2k_direct_alpha_betaUT" false "" "" false SINGLE)
323+
GenerateNamedObjects("${KERNELDIR}/${SSYR2KDIRECTKERNEL_ALPHA_BETA}" "UPPER" "syr2k_direct_alpha_betaUN" false "" "" false SINGLE)
324+
GenerateNamedObjects("${KERNELDIR}/${SSYR2KDIRECTKERNEL_ALPHA_BETA}" "TRANSA;UPPER" "syr2k_direct_alpha_betaUT" false "" "" false SINGLE)
325325
GenerateNamedObjects("${KERNELDIR}/${SSYR2KDIRECTKERNEL_ALPHA_BETA}" "" "syr2k_direct_alpha_betaLN" false "" "" false SINGLE)
326-
GenerateNamedObjects("${KERNELDIR}/${SSYR2KDIRECTKERNEL_ALPHA_BETA}" "" "syr2k_direct_alpha_betaLT" false "" "" false SINGLE)
326+
GenerateNamedObjects("${KERNELDIR}/${SSYR2KDIRECTKERNEL_ALPHA_BETA}" "TRANSA" "syr2k_direct_alpha_betaLT" false "" "" false SINGLE)
327327
endif ()
328328
endif()
329329

@@ -1555,4 +1555,3 @@ else ()
15551555
set(KERNEL_DEFINITIONS "")
15561556
build_core("${TARGET_CORE}" "${KDIR}" "${TSUFFIX}" "${KERNEL_DEFINITIONS}")
15571557
endif ()
1558-

0 commit comments

Comments
 (0)