Performance Regression #40
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Performance Regression | |
on: | |
schedule: | |
#run at 15:30 UTC (23:30 UTC+8) on Friday | |
- cron: '30 15 * * 5' | |
#run at 15:30 UTC (23:30 UTC+8) Every two weeks | |
# - cron: '30 15 13,27 * *' | |
#run it manually when the workflow is in the default branch | |
workflow_dispatch: | |
inputs: | |
test_commit: | |
description: 'Commit SHA to run the workflow on' | |
required: false | |
default: '' | |
#only for test push | |
# push: | |
# branches: [ ci-perf-yml ] | |
jobs: | |
run: | |
runs-on: perf | |
continue-on-error: false | |
#At most 2 days to finish | |
timeout-minutes: 2880 | |
name: Checkpoints | |
steps: | |
- name: Set test commit | |
id: set_test_commit | |
run: | | |
if [ "${{ github.event.inputs.test_commit }}" = "" ]; then | |
echo "Using latest commit." | |
echo "commit_sha=${{ github.sha }}" >> $GITHUB_OUTPUT | |
else | |
echo "Using specified commit: ${{ github.event.inputs.test_commit }}" | |
echo "commit_sha=${{ github.event.inputs.test_commit }}" >> $GITHUB_OUTPUT | |
fi | |
- name: Determine if this is the biweekly run | |
id: determine_run | |
run: | | |
if [ "${{ github.event_name }}" = "workflow_dispatch" ]; then | |
echo "run_biweekly=true" >> $GITHUB_OUTPUT | |
elif [ $(( $(date +'%V') % 2 )) -eq 1 ]; then | |
echo "run_biweekly=true" >> $GITHUB_OUTPUT | |
else | |
echo "run_biweekly=false" >> $GITHUB_OUTPUT | |
fi | |
- name: Checkout code at specific commit | |
if: steps.determine_run.outputs.run_biweekly == 'true' | |
uses: actions/checkout@v2 | |
with: | |
ref: ${{ steps.set_test_commit.outputs.commit_sha }} | |
submodules: 'recursive' | |
- name: Set env | |
if: steps.determine_run.outputs.run_biweekly == 'true' | |
run: | | |
SHORT_SHA=$(git rev-parse --short HEAD) | |
DATE=$(git show -s --format=%cd --date=format:%y%m%d HEAD) | |
echo "NOOP_HOME=$GITHUB_WORKSPACE" >> $GITHUB_ENV | |
echo "NEMU_HOME=/nfs/home/share/ci-workloads/NEMU" >> $GITHUB_ENV | |
echo "AM_HOME=/nfs/home/share/ci-workloads/nexus-am" >> $GITHUB_ENV | |
echo "PERF_HOME=/nfs/home/share/ci-workloads/env-scripts/perf" >> $GITHUB_ENV | |
echo "SPEC_DIR=/nfs/home/ci-runner/master-perf-report/cr${DATE}-${SHORT_SHA}" >> $GITHUB_ENV | |
echo "CKPT_HOME=/nfs/home/share/checkpoints_profiles/spec06_rv64gcb_O3_20m_gcc12.2.0-intFpcOff-jeMalloc/checkpoint-0-0-0" >> $GITHUB_ENV | |
echo "CKPT_JSON_PATH=/nfs/home/share/checkpoints_profiles/spec06_rv64gcb_O3_20m_gcc12.2.0-intFpcOff-jeMalloc/checkpoint-0-0-0/cluster-0-0.json" >> $GITHUB_ENV | |
- name: Clean Up | |
if: steps.determine_run.outputs.run_biweekly == 'true' | |
run: | | |
python3 $GITHUB_WORKSPACE/scripts/xiangshan.py --clean | |
- name: Build EMU with DRAMsim3 | |
if: steps.determine_run.outputs.run_biweekly == 'true' | |
run: | | |
if [ -e "$SPEC_DIR/emu" ]; then | |
mkdir -p $NOOP_HOME/build | |
cp $SPEC_DIR/emu $NOOP_HOME/build/emu | |
else | |
python3 $GITHUB_WORKSPACE/scripts/xiangshan.py --build \ | |
--dramsim3 /nfs/home/share/ci-workloads/DRAMsim3 \ | |
--with-dramsim3 --threads 16 \ | |
--pgo $GITHUB_WORKSPACE/ready-to-run/coremark-2-iteration.bin \ | |
--llvm-profdata llvm-profdata | |
mkdir -p $SPEC_DIR | |
cp $NOOP_HOME/build/emu $SPEC_DIR/emu | |
fi | |
- name: Run SPEC CPU2006 checkpoints | |
if: steps.determine_run.outputs.run_biweekly == 'true' | |
run: | | |
cd $PERF_HOME | |
python3 xs_autorun_multiServer.py $CKPT_HOME $CKPT_JSON_PATH \ | |
--xs $NOOP_HOME --threads 16 --dir $SPEC_DIR --resume \ | |
-L "node033 node034 node036 node037 node038 node039 node040 node041 node042" | |
find $NOOP_HOME/build/ -maxdepth 1 -name "*.vcd" -exec mv {} $SPEC_DIR \; | |
- name: Report SPEC CPU2006 score | |
if: steps.determine_run.outputs.run_biweekly == 'true' | |
run: | | |
cd $PERF_HOME | |
python3 xs_autorun_multiServer.py $CKPT_HOME $CKPT_JSON_PATH \ | |
--xs $NOOP_HOME --threads 16 --dir $SPEC_DIR \ | |
--check --dump-json-path $SPEC_DIR/err_ckps.json | |
python3 xs_autorun_multiServer.py $CKPT_HOME $CKPT_JSON_PATH \ | |
--xs $NOOP_HOME --threads 16 --dir $SPEC_DIR --report \ | |
> $SPEC_DIR/score.txt | |
mkdir $GITHUB_WORKSPACE/result | |
cp $SPEC_DIR/err_ckps.json $GITHUB_WORKSPACE/result/err_ckps.json | |
cp $SPEC_DIR/score.txt $GITHUB_WORKSPACE/result/score.txt | |
- name: Upload result | |
if: steps.determine_run.outputs.run_biweekly == 'true' | |
uses: actions/upload-artifact@v4 | |
with: | |
name: result | |
path: result |