Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
6b49e47
Create m4sme_p configuration and first kernels
Luislo1 Feb 10, 2026
c8a29f8
Add packing routines for sgemm and dgemm kernels
Luislo1 Feb 10, 2026
294afc6
Add SVLx4SVL sgemm and SVLx8SVL dgemm kernels
Luislo1 Feb 10, 2026
0cfed38
Add 4SVLxSVL sgemm and 8SVLxSVL dgemm kernels
Luislo1 Feb 10, 2026
e839c2e
Add 2SVLx4SVL dgemm kernel
Luislo1 Feb 10, 2026
491f1a3
Add m4sme_e configuration optimized for E-cores
Luislo1 Mar 9, 2026
18e8a87
Fix sysctl include
Luislo1 Mar 18, 2026
562a2b8
Fix register size values
Luislo1 Mar 19, 2026
34f2fe3
Merge branch 'master' into m4sme
devinamatthews Jun 27, 2026
e8b5ccc
Add CI tests for m4sme.
devinamatthews Jun 27, 2026
e10a5b8
Update CREDITS.
devinamatthews Jun 27, 2026
1e7c13d
Fix stupid.
devinamatthews Jun 27, 2026
aced8fe
Clang 17 doesn't seem to support __arm_new.
devinamatthews Jun 27, 2026
175d79f
Can't use -march=native when cross-compiling.
devinamatthews Jun 27, 2026
070b5da
Don't try m4sme_p on native HW yet.
devinamatthews Jun 27, 2026
d4dd6f1
Need SVE.
devinamatthews Jun 27, 2026
f4d5ea4
Oops.
devinamatthews Jun 27, 2026
472e6a1
Clean up m4sme compiler flags.
devinamatthews Jun 27, 2026
4e8f8eb
Fix -fuse-ld and try m4sme_p on HW anyways.
devinamatthews Jun 27, 2026
8a22eb4
Specify configurations better
devinamatthews Jun 27, 2026
cdca945
Missed one.
devinamatthews Jun 27, 2026
ab34193
Need lld-18 explicitly
devinamatthews Jun 27, 2026
d38c9f8
Fix testsuite script bug.
devinamatthews Jun 27, 2026
d4762e2
Bump xcode version and provide libgcc for clang.
devinamatthews Jun 27, 2026
a566bd4
Try without --sysroot.
devinamatthews Jun 27, 2026
82cee3f
Remove SVE2 flag
Luislo1 Jun 29, 2026
339c93f
Remove compiler flag
Luislo1 Jul 7, 2026
455dc3c
Disable m4sme cross-compiler tests and gcc support.
devinamatthews Jul 9, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
59 changes: 25 additions & 34 deletions .circleci/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,10 +13,10 @@ executors:
- image: cimg/base:2024.10
linuxnew: # Docker using the Base Convenience Image
docker:
- image: cimg/base:current-22.04
- image: cimg/base:current-24.04
macos: &macos-executor # macos executor running Xcode
macos:
xcode: 16.4.0
xcode: 26.4.1
linuxvm: # executor type
machine:
image: ubuntu-2204:current
Expand Down Expand Up @@ -79,6 +79,7 @@ workflows:
THR: pthreads
CC: clang
CXX: clang++
CONF: arm64--firestorm,m4sme_p,m4sme_e

# cortexa15 build and fast testsuite (qemu)
- build:
Expand All @@ -88,39 +89,25 @@ workflows:
PACKAGES: 'gcc-arm-linux-gnueabihf g++-arm-linux-gnueabihf libc6-dev-armhf-cross qemu-system-arm qemu-user'
TESTSUITE_WRAPPER: 'qemu-arm -cpu cortex-a15 -L /usr/arm-linux-gnueabihf/'

# cortexa57 build and fast testsuite (qemu)
# arm64 build and fast testsuite (gcc, qemu)
- build:
CC: aarch64-linux-gnu-gcc
CXX: aarch64-linux-gnu-g++
CONF: cortexa57
PACKAGES: 'gcc-aarch64-linux-gnu g++-aarch64-linux-gnu libc6-dev-arm64-cross qemu-system-arm qemu-user'
TESTSUITE_WRAPPER: 'qemu-aarch64 -L /usr/aarch64-linux-gnu/'
os: linuxnew
CC: aarch64-linux-gnu-gcc-14
CXX: aarch64-linux-gnu-g++-14
CONF: arm64--armsve,firestorm,thunderx2,cortexa57,cortexa53 #,m4sme_p,m4sme_e --- does not currently work with gcc
PACKAGES: 'gcc-14-aarch64-linux-gnu g++-14-aarch64-linux-gnu libc6-dev-arm64-cross qemu-system-arm qemu-user'
TESTSUITE_WRAPPER: 'qemu-aarch64 -cpu XXX -L /usr/aarch64-linux-gnu/'

# Apple M1 (firestorm) build and fast testsuite (qemu)
# arm64 build and fast testsuite (clang, qemu)
- build:
CC: aarch64-linux-gnu-gcc
CXX: aarch64-linux-gnu-g++
CONF: firestorm
PACKAGES: 'gcc-aarch64-linux-gnu g++-aarch64-linux-gnu libc6-dev-arm64-cross qemu-system-arm qemu-user'
TESTSUITE_WRAPPER: 'qemu-aarch64 -L /usr/aarch64-linux-gnu/'

# armsve build and fast testsuite (qemu)
- build:
CC: aarch64-linux-gnu-gcc-10
CXX: aarch64-linux-gnu-g++-10
CONF: armsve
PACKAGES: 'gcc-10-aarch64-linux-gnu g++-10-aarch64-linux-gnu libc6-dev-arm64-cross qemu-system-arm qemu-user'
TESTSUITE_WRAPPER: 'qemu-aarch64 -cpu max,sve=true,sve512=true -L /usr/aarch64-linux-gnu/'

# arm64 build and fast testsuite (qemu)
# NOTE: This entry omits the -cpu flag so that while both NEON and SVE kernels
# are compiled, only NEON kernels will be tested. (h/t to RuQing Xu)
- build:
CC: aarch64-linux-gnu-gcc-10
CXX: aarch64-linux-gnu-g++-10
CONF: arm64
PACKAGES: 'gcc-10-aarch64-linux-gnu g++-10-aarch64-linux-gnu libc6-dev-arm64-cross qemu-system-arm qemu-user'
TESTSUITE_WRAPPER: 'qemu-aarch64 -L /usr/aarch64-linux-gnu/'
os: linuxnew
CC: clang-18
CXX: clang++-18
CONF: arm64--armsve,firestorm,thunderx2,cortexa57,cortexa53 #,m4sme_p,m4sme_e --- does not currently work when cross-compiling
CFLAGS: '--target=aarch64-linux-gnu' #--sysroot=/usr/aarch64-linux-gnu'
LDFLAGS: '--target=aarch64-linux-gnu -fuse-ld=lld-18' #--sysroot=/usr/aarch64-linux-gnu'
PACKAGES: 'lld-18 clang-18 gcc-14-aarch64-linux-gnu libc6-dev-arm64-cross qemu-system-arm qemu-user'
TESTSUITE_WRAPPER: 'qemu-aarch64 -cpu XXX -L /usr/aarch64-linux-gnu/'

# The RISC-V targets require the qemu version available in jammy or newer.
# When CI is upgraded, the packages should be activated and do_script.sh
Expand Down Expand Up @@ -172,6 +159,9 @@ jobs:
BLD:
type: string
default: ''
CFLAGS:
type: string
default: ''
LDFLAGS:
type: string
default: ''
Expand Down Expand Up @@ -210,6 +200,7 @@ jobs:
export CONF="<< parameters.CONF >>"
export TEST="<< parameters.TEST >>"
export BLD="<< parameters.BLD >>"
export CFLAGS="<< parameters.CFLAGS >>"
export LDFLAGS="<< parameters.LDFLAGS >>"
export SDE="<< parameters.SDE >>"
export LEVEL0="<< parameters.LEVEL0 >>"
Expand Down Expand Up @@ -249,7 +240,7 @@ jobs:

if [ "$CONF" = "generic_broadcast" ]; then
export CONF=generic
export CFLAGS="-DBLIS_BBM_s=2 -DBLIS_BBM_d=2 -DBLIS_BBM_c=2 -DBLIS_BBM_z=2 -DBLIS_BBN_s=4 -DBLIS_BBN_d=4 -DBLIS_BBN_c=4 -DBLIS_BBN_z=4"
export CFLAGS="$CFLAGS -DBLIS_BBM_s=2 -DBLIS_BBM_d=2 -DBLIS_BBM_c=2 -DBLIS_BBM_z=2 -DBLIS_BBN_s=4 -DBLIS_BBN_d=4 -DBLIS_BBN_c=4 -DBLIS_BBN_z=4"
fi

echo "Configuration:"
Expand All @@ -267,7 +258,7 @@ jobs:
echo "LDFLAGS = $LDFLAGS"
echo "TESTSUITE_WRAPPER = $TESTSUITE_WRAPPER"

$DIST_PATH/configure -p `pwd`/../install -t $THR $BLD CC=$CC $CONF
$DIST_PATH/configure -p `pwd`/../install -t $THR $BLD CC=$CC ${CONF%%--*}
pwd
ls -l
$CC --version
Expand Down
2 changes: 2 additions & 0 deletions CREDITS
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,8 @@ but many others have contributed code, ideas, and feedback, including
@lschork2
Dave Love @loveshack
Tze Meng Low (The University of Texas at Austin)
Luis Lopez @Luislo1 (Universidad Complutense de Madrid)
Luis Costero @luismacostero (Universidad Complutense de Madrid)
Ye Luo @ye-luo (Argonne National Laboratory)
Ricardo Magana @magania (Hewlett Packard Enterprise)
Madan mohan Manokar @madanm3 (AMD)
Expand Down
88 changes: 61 additions & 27 deletions ci/do_testsuite.sh
Original file line number Diff line number Diff line change
Expand Up @@ -9,35 +9,69 @@ export BLIS_JR_NT=1
export BLIS_IR_NT=1
export BLIS_THREAD_IMPL="single"

if [ "$TEST" = "FAST" -o "$TEST" = "ALL" ]; then
make T=1 testblis-fast
$DIST_PATH/testsuite/check-blistest.sh ./output.testsuite
TESTSUITE_WRAPPER_SAVE="$TESTSUITE_WRAPPER"

for impl in $(echo $THR | sed 's/none//' | tr , ' '); do
export BLIS_THREAD_IMPL="$impl"
TMP=${CONF##*--}
for THIS_CONF in $(echo ${TMP:-${CONF%%--*}} | tr , ' '); do

echo "Testing configuration: $THIS_CONF"

if [ "${CONF%%--*}" = "arm64" ] && [ "x$TESTSUITE_WRAPPER" != "x" ]; then
case $THIS_CONF in
armsve)
CPU="max,sve512=on,sme=off"
;;
firestorm | thunderx2 | cortexa57 | cortexa53)
CPU="max,sve=off,sme=off"
;;
m4sme_*)
CPU="max,sve=off,sme512=on"
;;
*)
echo "Unknown arm64 configuration: $THIS_CONF"
exit 1
;;
esac
export TESTSUITE_WRAPPER=$(echo "$TESTSUITE_WRAPPER_SAVE" | sed "s/XXX/$CPU/")
fi

case $CONF in
*--*)
export BLIS_ARCH_TYPE="$THIS_CONF"
;;
esac

if [ "$TEST" = "FAST" -o "$TEST" = "ALL" ]; then
make T=1 testblis-fast
$DIST_PATH/testsuite/check-blistest.sh ./output.testsuite
done
fi

if [ "$TEST" = "MD" -o "$TEST" = "ALL" ]; then
make T=1 testblis-md
$DIST_PATH/testsuite/check-blistest.sh ./output.testsuite
fi

if [ "$TEST" = "SALT" -o "$TEST" = "ALL" ]; then
# Disable multithreading within BLIS.
export BLIS_JC_NT=1 BLIS_IC_NT=1 BLIS_JR_NT=1 BLIS_IR_NT=1
make T=1 testblis-salt
$DIST_PATH/testsuite/check-blistest.sh ./output.testsuite
fi

if [ "$TEST" = "1" -o "$TEST" = "ALL" ]; then
make T=1 testblis
$DIST_PATH/testsuite/check-blistest.sh ./output.testsuite
fi

export BLIS_THREAD_IMPL="single"
make T=1 testblas
$DIST_PATH/blastest/check-blastest.sh
for impl in $(echo $THR | sed 's/none//' | tr , ' '); do
export BLIS_THREAD_IMPL="$impl"
make T=1 testblis-fast
$DIST_PATH/testsuite/check-blistest.sh ./output.testsuite
done
fi

if [ "$TEST" = "MD" -o "$TEST" = "ALL" ]; then
make T=1 testblis-md
$DIST_PATH/testsuite/check-blistest.sh ./output.testsuite
fi

if [ "$TEST" = "SALT" -o "$TEST" = "ALL" ]; then
# Disable multithreading within BLIS.
export BLIS_JC_NT=1 BLIS_IC_NT=1 BLIS_JR_NT=1 BLIS_IR_NT=1
make T=1 testblis-salt
$DIST_PATH/testsuite/check-blistest.sh ./output.testsuite
fi

if [ "$TEST" = "1" -o "$TEST" = "ALL" ]; then
make T=1 testblis
$DIST_PATH/testsuite/check-blistest.sh ./output.testsuite
fi

export BLIS_THREAD_IMPL="single"
make T=1 testblas
$DIST_PATH/blastest/check-blastest.sh

done

Loading