From 789525f8e846b3e575c6166dfec5a9795a0ad3eb Mon Sep 17 00:00:00 2001 From: Diyou Shen Date: Mon, 5 Jan 2026 15:35:09 +0100 Subject: [PATCH 01/10] [CI] Add an environment check. --- .gitlab-ci.yml | 85 ++++++++++++++++++++++++++++++-------------------- 1 file changed, 52 insertions(+), 33 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index df58016..0a49879 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -31,44 +31,63 @@ cache: when: always expire_in: 1 day +cc-preflight: + stage: build + script: + - export CC="$(command -v gcc-11.2.0 || command -v gcc)" + - export CXX="$(command -v g++-11.2.0 || command -v g++)" + - echo "CC=$CC" + - echo "CXX=$CXX" + - $CC --version + - $CXX --version + - | + cat > /tmp/cc_test.c <<'EOF' + #include + int main(){ puts("cc_ok"); return 0; } + EOF + $CC /tmp/cc_test.c -o /tmp/cc_test + /tmp/cc_test + build-tmp: extends: .base stage: build script: - echo "CI WIP, no check available now" -# build-tc: -# extends: .base -# stage: build -# timeout: 3h -# script: -# # Check if the cache was restored (i.e., if 'install/bin' exists) -# - if [ ! -d "install/llvm" ]; then -# - echo "Toolchain not found in cache. Building dependencies..." -# - make bender -# - make toolchain -# - echo "Toolchain built. Will be cached." -# - else -# - echo "Toolchain found in cache. Skipping build." -# - fi +build-tc: + extends: .base + stage: build + timeout: 3h + script: + - | + if [ ! -d "install/llvm" ]; then + echo "Toolchain not found in cache. Building dependencies..." + make bender + make toolchain + echo "Toolchain built. Will be cached." + else + echo "Toolchain found in cache. Skipping build." + fi -# build-vsim: -# extends: .base -# needs: [ build-tc ] -# stage: build -# script: -# - make init -# - make dram-build CMAKE=cmake-3.28.3 -# - make generate config=cachepool_fpu_512 -# - make vsim config=cachepool_fpu_512 -# artifacts: -# paths: [ "software/build", "sim/bin" ] +build-vsim: + extends: .base + needs: [ build-tc cc-preflight ] + stage: build + script: + - make init + - make dram-build CMAKE=cmake-3.28.3 + - make generate config=cachepool_fpu_512 + - export CC=$(command -v gcc-11.2.0 || command -v gcc) + - export CXX=$(command -v g++-11.2.0 || command -v g++) + - make vsim config=cachepool_fpu_512 + artifacts: + paths: [ "software/build", "sim/bin" ] -# run_dotp: -# extends: .base -# needs: [ build-vsim ] -# stage: sim-vsim -# script: -# - ./sim/bin/cachepool_cluster.vsim ./software/build/CachePoolTests/test-cachepool-fdotp-32b_M1024 -# artifacts: -# paths: [ "software/build", "sim/bin" ] +run_dotp: + extends: .base + needs: [ build-vsim ] + stage: sim-vsim + script: + - ./sim/bin/cachepool_cluster.vsim ./software/build/CachePoolTests/test-cachepool-fdotp-32b_M1024 + artifacts: + paths: [ "software/build", "sim/bin" ] From bff9e0052584684f8e977990f0a9eea31ddb8b38 Mon Sep 17 00:00:00 2001 From: Diyou Shen Date: Mon, 5 Jan 2026 15:44:21 +0100 Subject: [PATCH 02/10] [CI] Fix a workflow typo --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 0a49879..641cc8e 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -71,7 +71,7 @@ build-tc: build-vsim: extends: .base - needs: [ build-tc cc-preflight ] + needs: [ "build-tc", "cc-preflight" ] stage: build script: - make init From 14e649e87a98bb7a80ae8b045d1f6640974a75fc Mon Sep 17 00:00:00 2001 From: Diyou Shen Date: Mon, 5 Jan 2026 15:46:24 +0100 Subject: [PATCH 03/10] [CI] Typo fix --- .gitlab-ci.yml | 42 +++++++++++++++++++++--------------------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 641cc8e..f6c30f8 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -69,25 +69,25 @@ build-tc: echo "Toolchain found in cache. Skipping build." fi -build-vsim: - extends: .base - needs: [ "build-tc", "cc-preflight" ] - stage: build - script: - - make init - - make dram-build CMAKE=cmake-3.28.3 - - make generate config=cachepool_fpu_512 - - export CC=$(command -v gcc-11.2.0 || command -v gcc) - - export CXX=$(command -v g++-11.2.0 || command -v g++) - - make vsim config=cachepool_fpu_512 - artifacts: - paths: [ "software/build", "sim/bin" ] +# build-vsim: +# extends: .base +# needs: [ "build-tc", "cc-preflight" ] +# stage: build +# script: +# - make init +# - make dram-build CMAKE=cmake-3.28.3 +# - make generate config=cachepool_fpu_512 +# - export CC=$(command -v gcc-11.2.0 || command -v gcc) +# - export CXX=$(command -v g++-11.2.0 || command -v g++) +# - make vsim config=cachepool_fpu_512 +# artifacts: +# paths: [ "software/build", "sim/bin" ] -run_dotp: - extends: .base - needs: [ build-vsim ] - stage: sim-vsim - script: - - ./sim/bin/cachepool_cluster.vsim ./software/build/CachePoolTests/test-cachepool-fdotp-32b_M1024 - artifacts: - paths: [ "software/build", "sim/bin" ] +# run_dotp: +# extends: .base +# needs: [ build-vsim ] +# stage: sim-vsim +# script: +# - ./sim/bin/cachepool_cluster.vsim ./software/build/CachePoolTests/test-cachepool-fdotp-32b_M1024 +# artifacts: +# paths: [ "software/build", "sim/bin" ] From 30d17fa815e87e9d1c27376a012aab70c65e1969 Mon Sep 17 00:00:00 2001 From: Diyou Shen Date: Mon, 5 Jan 2026 16:00:09 +0100 Subject: [PATCH 04/10] [CI] Add dolent tag --- .gitlab-ci.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index f6c30f8..10b1004 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -16,6 +16,10 @@ variables: python: 'python3' python3: 'python3' +default: + tags: + - dolent + stages: - build # - sim-vsim @@ -32,6 +36,7 @@ cache: expire_in: 1 day cc-preflight: + extends: .base stage: build script: - export CC="$(command -v gcc-11.2.0 || command -v gcc)" From bf74e882c6997e3ad2f6ade0358d4aafbab04160 Mon Sep 17 00:00:00 2001 From: Diyou Shen Date: Mon, 26 Jan 2026 10:50:57 +0100 Subject: [PATCH 05/10] [CI] Enable smoke test for debug. --- .gitlab-ci.yml | 44 ++++++++++++++++++++++---------------------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 10b1004..b726cbd 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -22,7 +22,7 @@ default: stages: - build - # - sim-vsim + - sim-vsim cache: paths: @@ -74,25 +74,25 @@ build-tc: echo "Toolchain found in cache. Skipping build." fi -# build-vsim: -# extends: .base -# needs: [ "build-tc", "cc-preflight" ] -# stage: build -# script: -# - make init -# - make dram-build CMAKE=cmake-3.28.3 -# - make generate config=cachepool_fpu_512 -# - export CC=$(command -v gcc-11.2.0 || command -v gcc) -# - export CXX=$(command -v g++-11.2.0 || command -v g++) -# - make vsim config=cachepool_fpu_512 -# artifacts: -# paths: [ "software/build", "sim/bin" ] +build-vsim: + extends: .base + needs: [ "build-tc", "cc-preflight" ] + stage: build + script: + - export CC="$(command -v gcc-11.2.0 || command -v gcc)" + - export CXX="$(command -v g++-11.2.0 || command -v g++)" + - make init + - make dram-build + - make generate config=cachepool_fpu_512 + - make vsim config=cachepool_fpu_512 + artifacts: + paths: [ "software/build", "sim/bin" ] -# run_dotp: -# extends: .base -# needs: [ build-vsim ] -# stage: sim-vsim -# script: -# - ./sim/bin/cachepool_cluster.vsim ./software/build/CachePoolTests/test-cachepool-fdotp-32b_M1024 -# artifacts: -# paths: [ "software/build", "sim/bin" ] +run_dotp: + extends: .base + needs: [ "build-vsim" ] + stage: sim-vsim + script: + - ./sim/bin/cachepool_cluster.vsim ./software/build/CachePoolTests/test-cachepool-fdotp-32b_M1024 + artifacts: + paths: [ "software/build", "sim/bin" ] From 9acd1f3c1ff0a5fdc04a18005a92f0353788961d Mon Sep 17 00:00:00 2001 From: Diyou Shen Date: Mon, 26 Jan 2026 10:59:10 +0100 Subject: [PATCH 06/10] [CI] Try quick-tool built-up --- .gitlab-ci.yml | 29 +++++++++++++++-------------- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index b726cbd..42f457d 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -24,11 +24,11 @@ stages: - build - sim-vsim -cache: - paths: - - install/ - key: "$CI_COMMIT_REF_SLUG-toolchain-v1" # Recommended key structure - policy: pull-push +# cache: +# paths: +# - install/ +# key: "$CI_COMMIT_REF_SLUG-toolchain-v1" # Recommended key structure +# policy: pull-push .base: artifacts: @@ -64,15 +64,16 @@ build-tc: stage: build timeout: 3h script: - - | - if [ ! -d "install/llvm" ]; then - echo "Toolchain not found in cache. Building dependencies..." - make bender - make toolchain - echo "Toolchain built. Will be cached." - else - echo "Toolchain found in cache. Skipping build." - fi + - make quick-tool + # - | + # if [ ! -d "install/llvm" ]; then + # echo "Toolchain not found in cache. Building dependencies..." + # make bender + # make toolchain + # echo "Toolchain built. Will be cached." + # else + # echo "Toolchain found in cache. Skipping build." + # fi build-vsim: extends: .base From 130d9059e5af42100eba392d2adeae547f5d24aa Mon Sep 17 00:00:00 2001 From: Diyou Shen Date: Mon, 26 Jan 2026 11:06:06 +0100 Subject: [PATCH 07/10] [CI] Add quick-tool also in build target. --- .gitlab-ci.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 42f457d..fcbb506 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -82,6 +82,7 @@ build-vsim: script: - export CC="$(command -v gcc-11.2.0 || command -v gcc)" - export CXX="$(command -v g++-11.2.0 || command -v g++)" + - make quick-tool - make init - make dram-build - make generate config=cachepool_fpu_512 From 66a0b8a2b09c0dcbd5ac9e11b613011387de4f7f Mon Sep 17 00:00:00 2001 From: Diyou Shen Date: Mon, 26 Jan 2026 11:14:19 +0100 Subject: [PATCH 08/10] [CI] Try to export real path for gcc and g++ --- .gitlab-ci.yml | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index fcbb506..4166b8f 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -82,11 +82,28 @@ build-vsim: script: - export CC="$(command -v gcc-11.2.0 || command -v gcc)" - export CXX="$(command -v g++-11.2.0 || command -v g++)" + - | + mkdir -p "$CI_PROJECT_DIR/.ci/bin" + cat > "$CI_PROJECT_DIR/.ci/bin/g++" <<'EOF' + #!/usr/bin/env bash + exec /usr/ela/local/sepp-linux/bin/g++-11.2.0 "$@" + EOF + chmod +x "$CI_PROJECT_DIR/.ci/bin/g++" + cat > "$CI_PROJECT_DIR/.ci/bin/gcc" <<'EOF' + #!/usr/bin/env bash + exec /usr/ela/local/sepp-linux/bin/gcc-11.2.0 "$@" + EOF + chmod +x "$CI_PROJECT_DIR/.ci/bin/gcc" + export PATH="$CI_PROJECT_DIR/.ci/bin:$PATH" + which g++ && g++ --version - make quick-tool - make init - make dram-build - make generate config=cachepool_fpu_512 - make vsim config=cachepool_fpu_512 + - export CC="$(command -v gcc-11.2.0 || command -v gcc)" + - export CXX="$(command -v g++-11.2.0 || command -v g++)" + - ./sim/bin/cachepool_cluster.vsim ./software/build/CachePoolTests/test-cachepool-fdotp-32b_M1024 artifacts: paths: [ "software/build", "sim/bin" ] From b0360de98ccef10cf1595d9d61a3a5da753d7087 Mon Sep 17 00:00:00 2001 From: Diyou Shen Date: Mon, 26 Jan 2026 11:25:59 +0100 Subject: [PATCH 09/10] [CI] activate bash and conda for run. --- .gitlab-ci.yml | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 4166b8f..ade5b74 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -85,17 +85,22 @@ build-vsim: - | mkdir -p "$CI_PROJECT_DIR/.ci/bin" cat > "$CI_PROJECT_DIR/.ci/bin/g++" <<'EOF' - #!/usr/bin/env bash - exec /usr/ela/local/sepp-linux/bin/g++-11.2.0 "$@" + ./ + exec /usr/pack/gcc-11.2.0-af/linux-x64/bin/g++ "$@" EOF chmod +x "$CI_PROJECT_DIR/.ci/bin/g++" cat > "$CI_PROJECT_DIR/.ci/bin/gcc" <<'EOF' - #!/usr/bin/env bash - exec /usr/ela/local/sepp-linux/bin/gcc-11.2.0 "$@" + source /home/dishen/.bashrc + conda activate /home/dishen/.conda/envs/mempool + exec /usr/pack/gcc-11.2.0-af/linux-x64/bin/gcc "$@" EOF chmod +x "$CI_PROJECT_DIR/.ci/bin/gcc" - export PATH="$CI_PROJECT_DIR/.ci/bin:$PATH" - which g++ && g++ --version + # override what Makefile uses + export CXX="$CI_PROJECT_DIR/.ci/bin/g++" + export CC="$CI_PROJECT_DIR/.ci/bin/gcc" + echo "CXX=$CXX"; echo "CC=$CC" + realpath -P "$CXX" + realpath -P "$CC" - make quick-tool - make init - make dram-build From 61fc6ec2fcc8dd6b7d8e9d6a673f17a1acb70b4e Mon Sep 17 00:00:00 2001 From: Diyou Shen Date: Mon, 26 Jan 2026 13:20:10 +0100 Subject: [PATCH 10/10] [CI] Activate more tests using auto-benchmark. --- .gitlab-ci.yml | 101 +++++------------------------- util/auto-benchmark/configs-ci.sh | 5 ++ util/auto-benchmark/run_ci.sh | 59 +++++++++++++++++ 3 files changed, 78 insertions(+), 87 deletions(-) create mode 100644 util/auto-benchmark/configs-ci.sh create mode 100755 util/auto-benchmark/run_ci.sh diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index ade5b74..59d5188 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -10,113 +10,40 @@ variables: APPS: "tests" PATH: '/home/gitlabci/.cargo/bin:/usr/local/bin:/usr/bin:/usr/sbin:/sbin:/usr/local/condor/bin:/usr/sepp/bin:$CI_PROJECT_DIR/install/verilator/bin:/home/gitlabci/.local/bin' OBJCACHE: '' - CC: 'gcc-11.2.0' - CXX: 'g++-11.2.0' + CC: '/usr/pack/gcc-11.2.0-af/linux-x64/bin/gcc' + CXX: '/usr/pack/gcc-11.2.0-af/linux-x64/bin/g++' CMAKE: 'cmake-3.28.3' python: 'python3' python3: 'python3' default: - tags: - - dolent + tags: [dolent] stages: - build - - sim-vsim - -# cache: -# paths: -# - install/ -# key: "$CI_COMMIT_REF_SLUG-toolchain-v1" # Recommended key structure -# policy: pull-push .base: artifacts: when: always expire_in: 1 day -cc-preflight: - extends: .base - stage: build - script: - - export CC="$(command -v gcc-11.2.0 || command -v gcc)" - - export CXX="$(command -v g++-11.2.0 || command -v g++)" - - echo "CC=$CC" - - echo "CXX=$CXX" - - $CC --version - - $CXX --version - - | - cat > /tmp/cc_test.c <<'EOF' - #include - int main(){ puts("cc_ok"); return 0; } - EOF - $CC /tmp/cc_test.c -o /tmp/cc_test - /tmp/cc_test - -build-tmp: - extends: .base - stage: build - script: - - echo "CI WIP, no check available now" - -build-tc: - extends: .base - stage: build - timeout: 3h - script: - - make quick-tool - # - | - # if [ ! -d "install/llvm" ]; then - # echo "Toolchain not found in cache. Building dependencies..." - # make bender - # make toolchain - # echo "Toolchain built. Will be cached." - # else - # echo "Toolchain found in cache. Skipping build." - # fi - build-vsim: extends: .base - needs: [ "build-tc", "cc-preflight" ] stage: build script: - - export CC="$(command -v gcc-11.2.0 || command -v gcc)" - - export CXX="$(command -v g++-11.2.0 || command -v g++)" - - | - mkdir -p "$CI_PROJECT_DIR/.ci/bin" - cat > "$CI_PROJECT_DIR/.ci/bin/g++" <<'EOF' - ./ - exec /usr/pack/gcc-11.2.0-af/linux-x64/bin/g++ "$@" - EOF - chmod +x "$CI_PROJECT_DIR/.ci/bin/g++" - cat > "$CI_PROJECT_DIR/.ci/bin/gcc" <<'EOF' - source /home/dishen/.bashrc - conda activate /home/dishen/.conda/envs/mempool - exec /usr/pack/gcc-11.2.0-af/linux-x64/bin/gcc "$@" - EOF - chmod +x "$CI_PROJECT_DIR/.ci/bin/gcc" - # override what Makefile uses - export CXX="$CI_PROJECT_DIR/.ci/bin/g++" - export CC="$CI_PROJECT_DIR/.ci/bin/gcc" - echo "CXX=$CXX"; echo "CC=$CC" - realpath -P "$CXX" - realpath -P "$CC" + - echo "Using CC=$CC" + - echo "Using CXX=$CXX" + - test -x "$CC" + - test -x "$CXX" - make quick-tool - make init - make dram-build - - make generate config=cachepool_fpu_512 - - make vsim config=cachepool_fpu_512 - - export CC="$(command -v gcc-11.2.0 || command -v gcc)" - - export CXX="$(command -v g++-11.2.0 || command -v g++)" - - ./sim/bin/cachepool_cluster.vsim ./software/build/CachePoolTests/test-cachepool-fdotp-32b_M1024 - artifacts: - paths: [ "software/build", "sim/bin" ] + - cd util/auto-benchmark + - chmod +x ./run_ci.sh + - ./run_ci.sh -run_dotp: - extends: .base - needs: [ "build-vsim" ] - stage: sim-vsim - script: - - ./sim/bin/cachepool_cluster.vsim ./software/build/CachePoolTests/test-cachepool-fdotp-32b_M1024 artifacts: - paths: [ "software/build", "sim/bin" ] + paths: + - software/build + - sim/bin + - util/auto-benchmark/logs diff --git a/util/auto-benchmark/configs-ci.sh b/util/auto-benchmark/configs-ci.sh new file mode 100644 index 0000000..961a3fe --- /dev/null +++ b/util/auto-benchmark/configs-ci.sh @@ -0,0 +1,5 @@ +# Configs and kernel suffixes (without prefix) +CONFIGS="cachepool_fpu_128 cachepool_fpu_256 cachepool_fpu_512" +KERNELS="spin-lock fdotp-32b_M32768 gemv-col_M256_N128_K32 fmatmul-32b_M32_N32_K32" +PREFIX="test-cachepool-" # common prefix for all kernels +ROOT_PATH=../.. # adjust if needed (path to repo root) diff --git a/util/auto-benchmark/run_ci.sh b/util/auto-benchmark/run_ci.sh new file mode 100755 index 0000000..8066d4f --- /dev/null +++ b/util/auto-benchmark/run_ci.sh @@ -0,0 +1,59 @@ +#!/usr/bin/env bash +set -e + +# Load user configs +source ./configs-ci.sh + +# Derived paths +SIM_CMD="${ROOT_PATH}/sim/bin/cachepool_cluster.vsim" +SW_PATH="${ROOT_PATH}/software/build/CachePoolTests" +SIM_LOG_DIR="./sim/bin/logs" # where perf logs appear +LOG_DIR="logs/$(date +%Y%m%d-%H%M%S)" +mkdir -p "$LOG_DIR" +ln -sfn "$(realpath "$LOG_DIR")" logs/latest + +echo "== CachePool batch run ==" +echo "ROOT_PATH : $ROOT_PATH" +echo "CONFIGS : $CONFIGS" +echo "KERNELS : $KERNELS" +echo "PREFIX : $PREFIX" +echo "Logs : $LOG_DIR (also at logs/latest)" +echo + +for cfg in $CONFIGS; do + echo "==== Building $cfg ====" + make -C "$ROOT_PATH" -s clean generate vsim config=$cfg + + summary_file="${LOG_DIR}/${cfg}_summary.txt" + rm -f "$summary_file" # start fresh for each config + + for k in $KERNELS; do + kernel_name="${PREFIX}${k}" + bin_path="${SW_PATH}/${kernel_name}" + log_file="${LOG_DIR}/${cfg}_${k}.log" + + echo "---- Running $cfg / $kernel_name ----" + if [[ ! -f "$bin_path" ]]; then + echo " [WARN] Binary not found: $bin_path" | tee "$log_file" + continue + fi + + # Run simulation and capture output + "$SIM_CMD" "$bin_path" 2>&1 | tee "$log_file" + + # Move generated perf logs if any + if [[ -d "$SIM_LOG_DIR" && "$(ls -A "$SIM_LOG_DIR")" ]]; then + new_pm_dir="${LOG_DIR}/${cfg}_${k}_pm" + mv "$SIM_LOG_DIR" "$new_pm_dir" + echo " [INFO] Moved perf logs to $new_pm_dir" + fi + + # Extract UART summary + python3 write_results.py "$log_file" "$summary_file" "$cfg" "$k" + done + + echo "---- Summary for $cfg written to $summary_file ----" +done + +echo +echo "All runs complete. Logs stored in $LOG_DIR"