Files
gem5/.github/workflows/weekly-tests.yaml
Bobby R. Bruce 3142464ff7 misc: Add 'scheduler.yaml' workflow (#1307)
This is made to run on the 'stable' branch to schedule workflow runs on
the `develop` branch. This solves the problem of GitHub Workflows being
scheduled to only run on 'stable' branch' thus ignoring changes made to
them on 'develop'

With this schedule we no longer need to force a checkout of 'develop' in
the workflows. As such these have been removed.

The scheduled workflows are now triggered via "workflow_dispatch" via
the "scheduler.yaml" workflow
2024-07-01 12:36:56 -07:00

165 lines
6.9 KiB
YAML

---
# This workflow runs all of the very-long tests within main.py
name: Weekly Tests
on:
# This is triggered weekly via the 'scheduler.yaml' workflow.
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
- 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
- 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
- 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
- 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
- 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: 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 }}."
dramsys-tests:
runs-on: [self-hosted, linux, x64]
container: ghcr.io/gem5/ubuntu-22.04_all-dependencies:latest
timeout-minutes: 4320 # 3 days
steps:
- uses: actions/checkout@v4
- 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-latest
needs:
- testlib-very-long-tests
- dramsys-tests
- LULESH-tests
- HACC-tests
steps:
- run: echo "This weekly tests have passed."