Files
gem5/.github/workflows/weekly-tests.yaml
Bobby R. Bruce 05bc85aa9b misc: Update Update GitHub Actions to use 24.04 over 22.04
This change ensures all our tests run on our most recent supported LTS
release of Ubuntu.

In the case of compiler tests we still test 22.04 all-dep but test 24.04
all-dep and min-dep (i.e., we drop 22.04 min-dep as it's somewhat
redundant).

Change-Id: I63666d1017594b496523a48e5112a8994f57885f
2024-04-13 14:13:35 -07:00

196 lines
8.3 KiB
YAML

---
# This workflow runs all of the very-long tests within main.py
name: Weekly Tests
on:
# Runs every Sunday from 7AM UTC
schedule:
- cron: 00 7 * * 6
# Allows us to manually start workflow for testing
workflow_dispatch:
jobs:
build-gcn-gpu-gem5:
runs-on: [self-hosted, linux, x64]
container: ghcr.io/gem5/gcn-gpu:latest
steps:
- uses: actions/checkout@v4
with:
# Scheduled workflows run on the default branch by default. We
# therefore need to explicitly checkout the develop branch.
ref: develop
- name: Build gem5
run: scons build/VEGA_X86/gem5.opt -j $(nproc) --ignore-style
- uses: actions/upload-artifact@v4
with:
name: weekly-test-${{ github.run_number }}-attempt-${{ github.run_attempt }}-gem5-build-vega
path: build/VEGA_X86/gem5.opt
retention-days: 5
- run: echo "This job's status is ${{ job.status }}."
LULESH-tests:
runs-on: [self-hosted, linux, x64]
container: ghcr.io/gem5/gcn-gpu:latest
needs: build-gcn-gpu-gem5
timeout-minutes: 480 # 8 hours
steps:
- uses: actions/checkout@v4
with:
# Scheduled workflows run on the default branch by default. We
# therefore need to explicitly checkout the develop branch.
ref: develop
- name: Download build/VEGA_X86/gem5.opt
uses: actions/download-artifact@v4
with:
name: weekly-test-${{ github.run_number }}-attempt-${{ github.run_attempt }}-gem5-build-vega
path: build/VEGA_X86
# `download-artifact` does not preserve permissions so we need to set
# them again.
- run: chmod u+x build/VEGA_X86/gem5.opt
- name: Obtain LULESH
# Obtains the latest LULESH compatible with this version of gem5 via
# gem5 Resources.
run: build/VEGA_X86/gem5.opt util/obtain-resource.py lulesh -p lulesh
- name: Run LULUESH tests
working-directory: ${{ github.workspace }}
run: |
build/VEGA_X86/gem5.opt configs/example/apu_se.py -n3 --mem-size=8GB --reg-alloc-policy=dynamic --dgpu --gfx-version=gfx900 -c \
lulesh --options="0.01 2"
HACC-tests:
runs-on: [self-hosted, linux, x64]
container: ghcr.io/gem5/gcn-gpu:latest
needs: build-gcn-gpu-gem5
timeout-minutes: 120 # 2 hours
steps:
- uses: actions/checkout@v4
with:
# Scheduled workflows run on the default branch by default. We
# therefore need to explicitly checkout the develop branch.
ref: develop
- uses: actions/download-artifact@v4
with:
name: weekly-test-${{ github.run_number }}-attempt-${{ github.run_attempt }}-gem5-build-vega
path: build/VEGA_X86
- run: chmod u+x build/VEGA_X86/gem5.opt
- name: make hip directory
run: mkdir hip
- name: Compile m5ops and x86
working-directory: ${{ github.workspace }}/util/m5
run: |
export TERM=xterm-256color
scons build/x86/out/m5
- name: Download tests
run: build/VEGA_X86/gem5.opt util/obtain-resource.py hacc-force-tree -p hip/ForceTreeTest
- name: Run HACC tests
run: |
build/VEGA_X86/gem5.opt configs/example/apu_se.py -n3 --reg-alloc-policy=dynamic --benchmark-root=hip -c ForceTreeTest --options="0.5 0.1 64 0.1 1 N 12 rcb"
build-gem5:
runs-on: [self-hosted, linux, x64]
container: ghcr.io/gem5/ubuntu-24.04_all-dependencies:latest
outputs:
build-name: ${{ steps.artifact-name.outputs.name }}
steps:
- uses: actions/checkout@v4
with:
# Scheduled workflows run on the default branch by default. We
# therefore need to explicitly checkout the develop branch.
ref: develop
- id: artifact-name
run: echo "name=$(date +"%Y-%m-%d_%H.%M.%S")-ALL" >> $GITHUB_OUTPUT
- name: Build gem5
run: |
scons build/ALL/gem5.opt -j $(nproc)
- uses: actions/upload-artifact@v4
with:
name: ${{ steps.artifact-name.outputs.name }}
path: build/ALL/gem5.opt
retention-days: 5
- run: echo "This job's status is ${{ job.status }}."
# start running the very-long tests
testlib-very-long-tests:
strategy:
fail-fast: false
matrix:
test-type: [gem5_library_example_tests, gem5_resources, parsec_benchmarks, x86_boot_tests]
runs-on: [self-hosted, linux, x64]
container: ghcr.io/gem5/ubuntu-24.04_all-dependencies:latest
needs: [build-gem5]
timeout-minutes: 4320 # 3 days
steps:
- name: Clean runner
run: rm -rf ./* || true rm -rf ./.??* || true rm -rf ~/.cache || true
- uses: actions/checkout@v4
with:
# Scheduled workflows run on the default branch by default. We
# therefore need to explicitly checkout the develop branch.
ref: develop
- uses: actions/download-artifact@v4
with:
name: ${{needs.build-gem5.outputs.build-name}}
path: build/ALL
- run: chmod u+x build/ALL/gem5.opt
- name: very-long ${{ matrix.test-type }}
working-directory: ${{ github.workspace }}/tests
run: ./main.py run gem5/${{ matrix.test-type }} --length very-long --skip-build -vv
- name: create zip of results
if: success() || failure()
run: |
apt-get -y install zip
zip -r output.zip tests/testing-results
- name: upload zip
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: output.zip
retention-days: 7
- run: echo "This job's status is ${{ job.status }}."
dramsys-tests:
runs-on: [self-hosted, linux, x64]
container: ghcr.io/gem5/ubuntu-24.04_all-dependencies:latest
timeout-minutes: 4320 # 3 days
steps:
- uses: actions/checkout@v4
with:
# Scheduled workflows run on the default branch by default. We
# therefore need to explicitly checkout the develop branch.
ref: develop
- name: Checkout DRAMSys
working-directory: ${{ github.workspace }}/ext/dramsys
run: git clone https://github.com/tukl-msd/DRAMSys --branch v5.0 --depth 1 DRAMSys
# gem5 is built separately because it depends on the DRAMSys library
- name: Build gem5
working-directory: ${{ github.workspace }}
run: scons build/ALL/gem5.opt -j $(nproc)
- name: Run DRAMSys Checks
working-directory: ${{ github.workspace }}
run: |
./build/ALL/gem5.opt configs/example/gem5_library/dramsys/arm-hello-dramsys.py
./build/ALL/gem5.opt configs/example/gem5_library/dramsys/dramsys-traffic.py
./build/ALL/gem5.opt configs/example/dramsys.py
weekly-tests:
# The dummy job is used to indicate whether the weekly 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
# weekly tests are failing we can add this job as a required status
# check.
runs-on: ubuntu-22.04
needs:
- testlib-very-long-tests
- dramsys-tests
steps:
- run: echo "This weekly tests have passed."