A new host tag `gcn_gpu` has been added. This allows for selection of those GPU tests which depend upon the gcn-gpu docker image to run. In addition to this, the square GPU tests has been moved to the CI tests. This ensures some GPU code is compiled and run on every PR.
167 lines
7.2 KiB
YAML
167 lines
7.2 KiB
YAML
---
|
|
# This workflow runs all of the long tests within main.py, extra tests in nightly.sh, and unittests
|
|
|
|
name: Daily Tests
|
|
|
|
on:
|
|
# This is triggered weekly via the 'scheduler.yaml' workflow.
|
|
workflow_dispatch:
|
|
|
|
jobs:
|
|
# this builds both unittests.fast and unittests.debug
|
|
unittests-fast-debug:
|
|
strategy:
|
|
matrix:
|
|
type: [fast, debug]
|
|
runs-on: [self-hosted, linux, x64]
|
|
container: ghcr.io/gem5/ubuntu-24.04_all-dependencies:latest
|
|
timeout-minutes: 60
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- name: ALL/unittests.${{ matrix.type }} UnitTests
|
|
run: scons build/ALL/unittests.${{ matrix.type }} -j $(nproc)
|
|
|
|
# start running all of the long tests
|
|
testlib-long-tests:
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
test-type: [arm_boot_tests, fs, gpu, insttest_se, learning_gem5, m5threads_test_atomic, memory, multi_isa, replacement_policies, riscv_boot_tests,
|
|
stdlib, x86_boot_tests]
|
|
runs-on: [self-hosted, linux, x64]
|
|
container: ghcr.io/gem5/ubuntu-24.04_all-dependencies:latest
|
|
timeout-minutes: 1440 # 24 hours for entire matrix to run
|
|
steps:
|
|
- name: Clean runner
|
|
run: rm -rf ./* || true rm -rf ./.??* || true rm -rf ~/.cache || true
|
|
- uses: actions/checkout@v4
|
|
|
|
- name: long ${{ matrix.test-type }} tests
|
|
working-directory: ${{ github.workspace }}/tests
|
|
run: ./main.py run gem5/${{ matrix.test-type }} --length=long -vv -t $(nproc)
|
|
- name: upload results
|
|
if: success() || failure()
|
|
uses: actions/upload-artifact@v4
|
|
env:
|
|
MY_STEP_VAR: ${{ matrix.test-type }}_COMMIT.${{github.sha}}_RUN.${{github.run_id}}_ATTEMPT.${{github.run_attempt}}
|
|
with:
|
|
name: ${{ env.MY_STEP_VAR }}
|
|
path: tests/testing-results
|
|
retention-days: 7
|
|
- run: echo "This job's status is ${{ job.status }}."
|
|
|
|
# split library example tests into runs based on Suite UID
|
|
# so that they don't hog the runners for too long
|
|
testlib-long-gem5_library_example_tests:
|
|
runs-on: [self-hosted, linux, x64]
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
test-type: [gem5-library-example-x86-ubuntu-run-ALL-x86_64-opt, gem5-library-example-riscv-ubuntu-run-ALL-x86_64-opt, lupv-example-ALL-x86_64-opt,
|
|
gem5-library-example-arm-ubuntu-run-test-ALL-x86_64-opt, gem5-library-example-riscvmatched-hello-ALL-x86_64-opt]
|
|
container: ghcr.io/gem5/ubuntu-24.04_all-dependencies:latest
|
|
timeout-minutes: 1440 # 24 hours
|
|
steps:
|
|
- name: Clean runner
|
|
run: rm -rf ./* || true rm -rf ./.??* || true rm -rf ~/.cache || true
|
|
- uses: actions/checkout@v4
|
|
- name: long ${{ matrix.test-type }} gem5_library_example_tests
|
|
working-directory: ${{ github.workspace }}/tests
|
|
run: ./main.py run --uid SuiteUID:tests/gem5/gem5_library_example_tests/test_gem5_library_examples.py:test-${{ matrix.test-type }} --length=long
|
|
-vv
|
|
- name: upload results
|
|
if: success() || failure()
|
|
uses: actions/upload-artifact@v4
|
|
env:
|
|
MY_STEP_VAR: ${{ matrix.test-type }}_COMMIT.${{github.sha}}_RUN.${{github.run_id}}_ATTEMPT.${{github.run_attempt}}
|
|
with:
|
|
name: ${{ env.MY_STEP_VAR }}
|
|
path: tests/testing-results
|
|
retention-days: 7
|
|
- run: echo "This job's status is ${{ job.status }}."
|
|
|
|
gpu-tests:
|
|
runs-on: [self-hosted, linux, x64]
|
|
container: ghcr.io/gem5/gcn-gpu:latest
|
|
timeout-minutes: 300
|
|
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
with:
|
|
ref: develop
|
|
- name: Build VEGA_X86/gem5.opt
|
|
run: scons build/VEGA_X86/gem5.opt -j`nproc`
|
|
|
|
- name: Run Testlib GPU Tests
|
|
working-directory: ${{ github.workspace }}/tests
|
|
run: ./main.py run --length=long --skip-build -vvv -t $(nproc) --host gcn_gpu
|
|
|
|
- name: Upload results
|
|
if: success() || failure()
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: gpu_COMMIT.${{github.sha}}_RUN.${{github.run_id}}_ATTEMPT.${{github.run_attempt}}
|
|
path: tests/testing-results
|
|
retention-days: 7
|
|
|
|
# This runs the SST-gem5 integration compilation and tests it with
|
|
# ext/sst/sst/example.py.
|
|
sst-test:
|
|
runs-on: [self-hosted, linux, x64]
|
|
container: ghcr.io/gem5/sst-env:latest
|
|
timeout-minutes: 180
|
|
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- name: Build RISCV/libgem5_opt.so with SST
|
|
run: scons build/RISCV/libgem5_opt.so --without-tcmalloc --duplicate-sources --ignore-style -j $(nproc)
|
|
- name: Makefile ext/sst
|
|
working-directory: ${{ github.workspace }}/ext/sst
|
|
run: mv Makefile.linux Makefile
|
|
- name: Compile ext/sst
|
|
working-directory: ${{ github.workspace }}/ext/sst
|
|
run: make -j $(nproc)
|
|
- name: Run SST test
|
|
working-directory: ${{ github.workspace }}/ext/sst
|
|
run: sst --add-lib-path=./ sst/example.py
|
|
|
|
# This runs the gem5 within SystemC ingration and runs a simple hello-world
|
|
# simulation with it.
|
|
systemc-test:
|
|
runs-on: [self-hosted, linux, x64]
|
|
container: ghcr.io/gem5/systemc-env:latest
|
|
timeout-minutes: 180
|
|
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- name: Build ARM/gem5.opt
|
|
run: scons build/ARM/gem5.opt --ignore-style --duplicate-sources -j$(nproc)
|
|
- name: disable systemc
|
|
run: scons setconfig build/ARM --ignore-style USE_SYSTEMC=n
|
|
- name: Build ARM/libgem5_opt.so
|
|
run: scons build/ARM/libgem5_opt.so --with-cxx-config --without-python --without-tcmalloc -j$(nproc) --duplicate-sources
|
|
- name: Compile gem5 withing SystemC
|
|
working-directory: ${{ github.workspace }}/util/systemc/gem5_within_systemc
|
|
run: make
|
|
- name: Run gem5 within SystemC test
|
|
run: ./build/ARM/gem5.opt configs/deprecated/example/se.py -c tests/test-progs/hello/bin/arm/linux/hello
|
|
- name: Continue gem5 within SystemC test
|
|
run: LD_LIBRARY_PATH=build/ARM/:/opt/systemc/lib-linux64/ ./util/systemc/gem5_within_systemc/gem5.opt.sc m5out/config.ini
|
|
|
|
daily-tests:
|
|
# The dummy job is used to indicate whether the daily tests have
|
|
# passed or not. This can be used as status check for pull requests.
|
|
# I.e., if we want to stop pull requests from being merged if the
|
|
# daily tests are failing we can add this job as a required status
|
|
# check.
|
|
runs-on: ubuntu-latest
|
|
needs:
|
|
- unittests-fast-debug
|
|
- testlib-long-tests
|
|
- testlib-long-gem5_library_example_tests
|
|
- sst-test
|
|
- systemc-test
|
|
- gpu-tests
|
|
steps:
|
|
- run: echo "This daily tests have passed."
|