From 5b2766829b8cb8294afed67a366e43850c2d4c0b Mon Sep 17 00:00:00 2001 From: "Bobby R. Bruce" Date: Thu, 1 Feb 2024 09:18:15 -0800 Subject: [PATCH 01/14] misc: Merge develop .github dir into stable (#831) --- .github/dependabot.yml | 17 +++++ .github/workflows/compiler-tests.yaml | 5 +- .github/workflows/daily-tests.yaml | 20 ++--- .github/workflows/gpu-tests.yaml | 95 ------------------------ .github/workflows/weekly-tests.yaml | 101 +++++++++++++++++++++++--- 5 files changed, 120 insertions(+), 118 deletions(-) create mode 100644 .github/dependabot.yml delete mode 100644 .github/workflows/gpu-tests.yaml diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 0000000000..196c33c0be --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,17 @@ +--- +version: 2 +updates: + - package-ecosystem: pip + directory: / + schedule: + interval: monthly + assignees: + - Harshil2107 + commit-message: + prefix: 'misc: ' + # Raise pull requests for version updates + # to pip against the `develop` branch + target-branch: develop + # Labels on pull requests for version updates only + labels: + - misc diff --git a/.github/workflows/compiler-tests.yaml b/.github/workflows/compiler-tests.yaml index 4656563357..5e903732ce 100644 --- a/.github/workflows/compiler-tests.yaml +++ b/.github/workflows/compiler-tests.yaml @@ -38,9 +38,8 @@ jobs: strategy: fail-fast: false matrix: - gem5-compilation: [ARM, ARM_MESI_Three_Level, ARM_MESI_Three_Level_HTM, ARM_MOESI_hammer, Garnet_standalone, GCN3_X86, MIPS, 'NULL', NULL_MESI_Two_Level, - NULL_MOESI_CMP_directory, NULL_MOESI_CMP_token, NULL_MOESI_hammer, POWER, RISCV, SPARC, X86, X86_MI_example, X86_MOESI_AMD_Base, VEGA_X86, - GCN3_X86] + gem5-compilation: [ARM, ARM_MESI_Three_Level, ARM_MESI_Three_Level_HTM, ARM_MOESI_hammer, Garnet_standalone, MIPS, 'NULL', NULL_MESI_Two_Level, + NULL_MOESI_CMP_directory, NULL_MOESI_CMP_token, NULL_MOESI_hammer, POWER, RISCV, SPARC, X86, X86_MI_example, X86_MOESI_AMD_Base, VEGA_X86] image: [gcc-version-12, clang-version-16] opts: [.opt] runs-on: [self-hosted, linux, x64] diff --git a/.github/workflows/daily-tests.yaml b/.github/workflows/daily-tests.yaml index 987f5c1ad2..6aeb195b1f 100644 --- a/.github/workflows/daily-tests.yaml +++ b/.github/workflows/daily-tests.yaml @@ -280,25 +280,25 @@ jobs: # Scheduled workflows run on the default branch by default. We # therefore need to explicitly checkout the develop branch. ref: develop - - name: Compile build/GCN3_X86/gem5.opt - run: scons build/GCN3_X86/gem5.opt -j $(nproc) + - name: Compile build/VEGA_X86/gem5.opt + run: scons build/VEGA_X86/gem5.opt -j $(nproc) - name: Get Square test-prog from gem5-resources uses: wei/wget@v1 with: - args: -q http://dist.gem5.org/dist/develop/test-progs/square/square # Removed -N bc it wasn't available within actions, should be okay bc workspace is clean every time: https://github.com/coder/sshcode/issues/102 - - name: Run Square test with GCN3_X86/gem5.opt (SE mode) + args: -q https://dist.gem5.org/dist/v24-0/test-progs/square/square # Removed -N bc it wasn't available within actions, should be okay bc workspace is clean every time: https://github.com/coder/sshcode/issues/102 + - name: Run Square test with VEGA_X86/gem5.opt (SE mode) run: | mkdir -p tests/testing-results - ./build/GCN3_X86/gem5.opt configs/example/apu_se.py --reg-alloc-policy=dynamic -n3 -c square + ./build/VEGA_X86/gem5.opt configs/example/apu_se.py --reg-alloc-policy=dynamic -n3 -c square - name: Get allSyncPrims-1kernel from gem5-resources uses: wei/wget@v1 with: - args: -q http://dist.gem5.org/dist/develop/test-progs/heterosync/gcn3/allSyncPrims-1kernel # Removed -N bc it wasn't available within actions, should be okay bc workspace is clean every time - - name: Run allSyncPrims-1kernel sleepMutex test with GCN3_X86/gem5.opt (SE mode) - run: ./build/GCN3_X86/gem5.opt configs/example/apu_se.py --reg-alloc-policy=dynamic -n3 -c allSyncPrims-1kernel --options="sleepMutex 10 16 + args: -q https://dist.gem5.org/dist/v24-0/test-progs/heterosync/allSyncPrims-1kernel # Removed -N bc it wasn't available within actions, should be okay bc workspace is clean every time + - name: Run allSyncPrims-1kernel sleepMutex test with VEGA_X86/gem5.opt (SE mode) + run: ./build/VEGA_X86/gem5.opt configs/example/apu_se.py --reg-alloc-policy=dynamic -n3 -c allSyncPrims-1kernel --options="sleepMutex 10 16 4" - - name: Run allSyncPrims-1kernel lfTreeBarrUsing test with GCN3_X86/gem5.opt (SE mode) - run: ./build/GCN3_X86/gem5.opt configs/example/apu_se.py --reg-alloc-policy=dynamic -n3 -c allSyncPrims-1kernel --options="lfTreeBarrUniq + - name: Run allSyncPrims-1kernel lfTreeBarrUsing test with VEGA_X86/gem5.opt (SE mode) + run: ./build/VEGA_X86/gem5.opt configs/example/apu_se.py --reg-alloc-policy=dynamic -n3 -c allSyncPrims-1kernel --options="lfTreeBarrUniq 10 16 4" daily-tests: # The dummy job is used to indicate whether the daily tests have diff --git a/.github/workflows/gpu-tests.yaml b/.github/workflows/gpu-tests.yaml deleted file mode 100644 index a60218e6e7..0000000000 --- a/.github/workflows/gpu-tests.yaml +++ /dev/null @@ -1,95 +0,0 @@ ---- -# This workflow runs all the Weekly GPU Tests. -# For now this file is kept separate as we are still developing and testing -# this workflow. It will eventually be merged with "weekly-tests.yaml" - -name: Weekly Tests (GPU) - -on: - # Runs every Sunday from 7AM UTC - schedule: - - cron: 00 7 * * 6 - # Allows us to manually start workflow for testing - workflow_dispatch: - -jobs: - build-gem5: - runs-on: [self-hosted, linux, x64] - container: ghcr.io/gem5/gcn-gpu:latest - steps: - - uses: actions/checkout@v3 - 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@v3 - 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-gem5 - timeout-minutes: 480 # 8 hours - steps: - - uses: actions/checkout@v3 - 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@v3 - 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-gem5 - timeout-minutes: 120 # 2 hours - steps: - - uses: actions/checkout@v3 - 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@v3 - 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 - working-directory: ${{ github.workspace }}/hip - run: wget http://dist.gem5.org/dist/v22-1/test-progs/halo-finder/ForceTreeTest - - name: Run HACC tests - working-directory: ${{ github.workspace }} - 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" diff --git a/.github/workflows/weekly-tests.yaml b/.github/workflows/weekly-tests.yaml index 6c211435c2..62d047709f 100644 --- a/.github/workflows/weekly-tests.yaml +++ b/.github/workflows/weekly-tests.yaml @@ -4,13 +4,94 @@ name: Weekly Tests on: - # Runs every Sunday from 7AM UTC + # Runs every Sunday from 7AM UTC schedule: - cron: 00 7 * * 6 - # Allows us to manually start workflow for testing + # 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@v3 + 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@v3 + 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@v3 + 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@v3 + 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@v3 + 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@v3 + 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 + working-directory: ${{ github.workspace }}/hip + run: wget http://dist.gem5.org/dist/v22-1/test-progs/halo-finder/ForceTreeTest + - name: Run HACC tests + working-directory: ${{ github.workspace }} + 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-22.04_all-dependencies:latest @@ -19,8 +100,8 @@ jobs: steps: - uses: actions/checkout@v3 with: - # Scheduled workflows run on the default branch by default. We - # therefore need to explicitly checkout the develop branch. + # 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 @@ -34,7 +115,7 @@ jobs: retention-days: 5 - run: echo "This job's status is ${{ job.status }}." - # start running the very-long tests + # start running the very-long tests testlib-very-long-tests: strategy: fail-fast: false @@ -49,8 +130,8 @@ jobs: run: rm -rf ./* || true rm -rf ./.??* || true rm -rf ~/.cache || true - uses: actions/checkout@v3 with: - # Scheduled workflows run on the default branch by default. We - # therefore need to explicitly checkout the develop branch. + # Scheduled workflows run on the default branch by default. We + # therefore need to explicitly checkout the develop branch. ref: develop - uses: actions/download-artifact@v3 with: @@ -83,15 +164,15 @@ jobs: steps: - uses: actions/checkout@v3 with: - # Scheduled workflows run on the default branch by default. We - # therefore need to explicitly checkout the develop branch. + # 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 + # 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) From c890e6b113a59caeec3eea9bafea4a03a471f89d Mon Sep 17 00:00:00 2001 From: "Bobby R. Bruce" Date: Fri, 2 Feb 2024 10:38:47 -0800 Subject: [PATCH 02/14] misc: Merge .github dir from develop to stable (#841) This is to incorporate Daily Test fix #840. --- .github/workflows/daily-tests.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/daily-tests.yaml b/.github/workflows/daily-tests.yaml index 6aeb195b1f..92041c32b3 100644 --- a/.github/workflows/daily-tests.yaml +++ b/.github/workflows/daily-tests.yaml @@ -285,7 +285,7 @@ jobs: - name: Get Square test-prog from gem5-resources uses: wei/wget@v1 with: - args: -q https://dist.gem5.org/dist/v24-0/test-progs/square/square # Removed -N bc it wasn't available within actions, should be okay bc workspace is clean every time: https://github.com/coder/sshcode/issues/102 + args: -q http://dist.gem5.org/dist/v24-0/test-progs/square/square # Removed -N bc it wasn't available within actions, should be okay bc workspace is clean every time: https://github.com/coder/sshcode/issues/102 - name: Run Square test with VEGA_X86/gem5.opt (SE mode) run: | mkdir -p tests/testing-results @@ -293,7 +293,7 @@ jobs: - name: Get allSyncPrims-1kernel from gem5-resources uses: wei/wget@v1 with: - args: -q https://dist.gem5.org/dist/v24-0/test-progs/heterosync/allSyncPrims-1kernel # Removed -N bc it wasn't available within actions, should be okay bc workspace is clean every time + args: -q http://dist.gem5.org/dist/v24-0/test-progs/heterosync/allSyncPrims-1kernel # Removed -N bc it wasn't available within actions, should be okay bc workspace is clean every time - name: Run allSyncPrims-1kernel sleepMutex test with VEGA_X86/gem5.opt (SE mode) run: ./build/VEGA_X86/gem5.opt configs/example/apu_se.py --reg-alloc-policy=dynamic -n3 -c allSyncPrims-1kernel --options="sleepMutex 10 16 4" From 650b92124bd8ed4d4716a5112d2f004fd2a5dbc0 Mon Sep 17 00:00:00 2001 From: "Bobby R. Bruce" Date: Tue, 5 Mar 2024 08:35:11 +0000 Subject: [PATCH 03/14] misc: Copy the develop .github dir to stable (#912) --- .github/workflows/ci-tests.yaml | 14 +++++++------- .github/workflows/compiler-tests.yaml | 10 +++++----- .github/workflows/daily-tests.yaml | 24 +++++++++++------------- .github/workflows/docker-build.yaml | 2 +- .github/workflows/weekly-tests.yaml | 16 ++++++++-------- 5 files changed, 32 insertions(+), 34 deletions(-) diff --git a/.github/workflows/ci-tests.yaml b/.github/workflows/ci-tests.yaml index 49928faf20..828eab6fb0 100644 --- a/.github/workflows/ci-tests.yaml +++ b/.github/workflows/ci-tests.yaml @@ -17,7 +17,7 @@ jobs: runs-on: ubuntu-22.04 if: github.event.pull_request.draft == false steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - uses: actions/setup-python@v3 - uses: pre-commit/action@v3.0.0 @@ -27,7 +27,7 @@ jobs: runs-on: ubuntu-22.04 if: github.event.pull_request.draft == false steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 with: fetch-depth: 0 - name: Check for Change-Id @@ -54,7 +54,7 @@ jobs: needs: [pre-commit, check-for-change-id] # only runs if pre-commit and change-id passes timeout-minutes: 60 steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: CI Unittests working-directory: ${{ github.workspace }} run: scons build/ALL/unittests.opt -j $(nproc) @@ -68,7 +68,7 @@ jobs: container: ghcr.io/gem5/ubuntu-22.04_all-dependencies:latest needs: [pre-commit, check-for-change-id] steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 # Unfortunately the 'ubunutu-latest' image doesn't have jq installed. # We therefore need to install it as a step here. @@ -100,7 +100,7 @@ jobs: needs: [pre-commit, check-for-change-id] timeout-minutes: 90 steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Clang Compilation working-directory: ${{ github.workspace }} run: scons build/ALL/gem5.fast -j $(nproc) @@ -114,7 +114,7 @@ jobs: matrix: build-target: ${{ fromJson(needs.testlib-quick-matrix.outputs.build-matrix) }} steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Build gem5 run: scons ${{ matrix.build-target }} -j $(nproc) @@ -150,7 +150,7 @@ jobs: run: rm -rf ./* || true rm -rf ./.??* || true rm -rf ~/.cache || true # Checkout the repository then download the gem5.opt artifact. - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - uses: actions/download-artifact@v3 with: name: ci-tests-${{ github.run_number }}-testlib-quick-all-gem5-builds diff --git a/.github/workflows/compiler-tests.yaml b/.github/workflows/compiler-tests.yaml index 5e903732ce..fde8f3cd44 100644 --- a/.github/workflows/compiler-tests.yaml +++ b/.github/workflows/compiler-tests.yaml @@ -16,15 +16,15 @@ jobs: strategy: fail-fast: false matrix: - image: [gcc-version-12, gcc-version-11, gcc-version-10, gcc-version-8, clang-version-16, clang-version-15, clang-version-14, clang-version-13, - clang-version-12, clang-version-11, clang-version-10, clang-version-9, clang-version-8, clang-version-7, ubuntu-20.04_all-dependencies, + image: [gcc-version-13, gcc-version-12, gcc-version-11, gcc-version-10, gcc-version-8, clang-version-16, clang-version-15, clang-version-14, + clang-version-13, clang-version-12, clang-version-11, clang-version-10, clang-version-9, clang-version-8, clang-version-7, ubuntu-20.04_all-dependencies, ubuntu-22.04_all-dependencies, ubuntu-22.04_min-dependencies] opts: [.opt, .fast] runs-on: [self-hosted, linux, x64] timeout-minutes: 2880 # 48 hours container: ghcr.io/gem5/${{ matrix.image }}:latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 with: # Scheduled workflows run on the default branch by default. We # therefore need to explicitly checkout the develop branch. @@ -40,13 +40,13 @@ jobs: matrix: gem5-compilation: [ARM, ARM_MESI_Three_Level, ARM_MESI_Three_Level_HTM, ARM_MOESI_hammer, Garnet_standalone, MIPS, 'NULL', NULL_MESI_Two_Level, NULL_MOESI_CMP_directory, NULL_MOESI_CMP_token, NULL_MOESI_hammer, POWER, RISCV, SPARC, X86, X86_MI_example, X86_MOESI_AMD_Base, VEGA_X86] - image: [gcc-version-12, clang-version-16] + image: [gcc-version-13, clang-version-16] opts: [.opt] runs-on: [self-hosted, linux, x64] timeout-minutes: 2880 # 48 hours container: ghcr.io/gem5/${{ matrix.image }}:latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 with: # Scheduled workflows run on the default branch by default. We # therefore need to explicitly checkout the develop branch. diff --git a/.github/workflows/daily-tests.yaml b/.github/workflows/daily-tests.yaml index 92041c32b3..81de5c4746 100644 --- a/.github/workflows/daily-tests.yaml +++ b/.github/workflows/daily-tests.yaml @@ -7,6 +7,8 @@ on: # Runs every day from 7AM UTC schedule: - cron: 0 7 * * * + # Allows us to manually start workflow for testing + workflow_dispatch: jobs: name-artifacts: @@ -46,7 +48,7 @@ jobs: needs: name-artifacts container: ghcr.io/gem5/ubuntu-22.04_all-dependencies:latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 with: # Scheduled workflows run on the default branch by default. We # therefore need to explicitly checkout the develop branch. @@ -75,7 +77,7 @@ jobs: container: ghcr.io/gem5/ubuntu-22.04_all-dependencies:latest timeout-minutes: 60 steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 with: # Scheduled workflows run on the default branch by default. We # therefore need to explicitly checkout the develop branch. @@ -97,7 +99,7 @@ jobs: steps: - name: Clean runner run: rm -rf ./* || true rm -rf ./.??* || true rm -rf ~/.cache || true - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 with: # Scheduled workflows run on the default branch by default. We # therefore need to explicitly checkout the develop branch. @@ -186,7 +188,7 @@ jobs: steps: - name: Clean runner run: rm -rf ./* || true rm -rf ./.??* || true rm -rf ~/.cache || true - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 with: # Scheduled workflows run on the default branch by default. We # therefore need to explicitly checkout the develop branch. @@ -224,7 +226,7 @@ jobs: timeout-minutes: 180 steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 with: # Scheduled workflows run on the default branch by default. We # therefore need to explicitly checkout the develop branch. @@ -249,7 +251,7 @@ jobs: timeout-minutes: 180 steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 with: # Scheduled workflows run on the default branch by default. We # therefore need to explicitly checkout the develop branch. @@ -275,7 +277,7 @@ jobs: timeout-minutes: 720 # 12 hours steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 with: # Scheduled workflows run on the default branch by default. We # therefore need to explicitly checkout the develop branch. @@ -283,17 +285,13 @@ jobs: - name: Compile build/VEGA_X86/gem5.opt run: scons build/VEGA_X86/gem5.opt -j $(nproc) - name: Get Square test-prog from gem5-resources - uses: wei/wget@v1 - with: - args: -q http://dist.gem5.org/dist/v24-0/test-progs/square/square # Removed -N bc it wasn't available within actions, should be okay bc workspace is clean every time: https://github.com/coder/sshcode/issues/102 + run: build/VEGA_X86/gem5.opt util/obtain-resource.py square-gpu-test -p square - name: Run Square test with VEGA_X86/gem5.opt (SE mode) run: | mkdir -p tests/testing-results ./build/VEGA_X86/gem5.opt configs/example/apu_se.py --reg-alloc-policy=dynamic -n3 -c square - name: Get allSyncPrims-1kernel from gem5-resources - uses: wei/wget@v1 - with: - args: -q http://dist.gem5.org/dist/v24-0/test-progs/heterosync/allSyncPrims-1kernel # Removed -N bc it wasn't available within actions, should be okay bc workspace is clean every time + run: build/VEGA_X86/gem5.opt util/obtain-resource.py allSyncPrims-1kernel -p allSyncPrims-1kernel - name: Run allSyncPrims-1kernel sleepMutex test with VEGA_X86/gem5.opt (SE mode) run: ./build/VEGA_X86/gem5.opt configs/example/apu_se.py --reg-alloc-policy=dynamic -n3 -c allSyncPrims-1kernel --options="sleepMutex 10 16 4" diff --git a/.github/workflows/docker-build.yaml b/.github/workflows/docker-build.yaml index 68b0905e83..1677a231ab 100644 --- a/.github/workflows/docker-build.yaml +++ b/.github/workflows/docker-build.yaml @@ -9,7 +9,7 @@ jobs: container: ghcr.io/gem5/ubuntu-22.04_all-dependencies:latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 with: # Scheduled workflows run on the default branch by default. We # therefore need to explicitly checkout the develop branch. diff --git a/.github/workflows/weekly-tests.yaml b/.github/workflows/weekly-tests.yaml index 62d047709f..fd2527c094 100644 --- a/.github/workflows/weekly-tests.yaml +++ b/.github/workflows/weekly-tests.yaml @@ -15,7 +15,7 @@ jobs: runs-on: [self-hosted, linux, x64] container: ghcr.io/gem5/gcn-gpu:latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 with: # Scheduled workflows run on the default branch by default. We # therefore need to explicitly checkout the develop branch. @@ -35,7 +35,7 @@ jobs: needs: build-gcn-gpu-gem5 timeout-minutes: 480 # 8 hours steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 with: # Scheduled workflows run on the default branch by default. We # therefore need to explicitly checkout the develop branch. @@ -67,7 +67,7 @@ jobs: needs: build-gcn-gpu-gem5 timeout-minutes: 120 # 2 hours steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 with: # Scheduled workflows run on the default branch by default. We # therefore need to explicitly checkout the develop branch. @@ -86,7 +86,7 @@ jobs: scons build/x86/out/m5 - name: Download tests working-directory: ${{ github.workspace }}/hip - run: wget http://dist.gem5.org/dist/v22-1/test-progs/halo-finder/ForceTreeTest + run: build/VEGA_X86/gem5.opt util/obtain-resource.py hacc-force-tree -p ForceTreeTest - name: Run HACC tests working-directory: ${{ github.workspace }} run: | @@ -98,7 +98,7 @@ jobs: outputs: build-name: ${{ steps.artifact-name.outputs.name }} steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 with: # Scheduled workflows run on the default branch by default. We # therefore need to explicitly checkout the develop branch. @@ -128,12 +128,12 @@ jobs: steps: - name: Clean runner run: rm -rf ./* || true rm -rf ./.??* || true rm -rf ~/.cache || true - - uses: actions/checkout@v3 + - 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@v3 + - uses: actions/download-artifact@v4 with: name: ${{needs.build-gem5.outputs.build-name}} path: build/ALL @@ -162,7 +162,7 @@ jobs: container: ghcr.io/gem5/ubuntu-22.04_all-dependencies:latest timeout-minutes: 4320 # 3 days steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 with: # Scheduled workflows run on the default branch by default. We # therefore need to explicitly checkout the develop branch. From e8bc4fc137a5a7e82b601432271a027b652ae69b Mon Sep 17 00:00:00 2001 From: "Bobby R. Bruce" Date: Mon, 11 Mar 2024 12:35:35 -0700 Subject: [PATCH 04/14] misc: Sync stable .github dir with develop (#928) --- .github/workflows/weekly-tests.yaml | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/.github/workflows/weekly-tests.yaml b/.github/workflows/weekly-tests.yaml index fd2527c094..109001c651 100644 --- a/.github/workflows/weekly-tests.yaml +++ b/.github/workflows/weekly-tests.yaml @@ -85,10 +85,8 @@ jobs: export TERM=xterm-256color scons build/x86/out/m5 - name: Download tests - working-directory: ${{ github.workspace }}/hip - run: build/VEGA_X86/gem5.opt util/obtain-resource.py hacc-force-tree -p ForceTreeTest + run: build/VEGA_X86/gem5.opt util/obtain-resource.py hacc-force-tree -p hip/ForceTreeTest - name: Run HACC tests - working-directory: ${{ github.workspace }} 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" @@ -133,7 +131,7 @@ jobs: # 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 + - uses: actions/download-artifact@v3 with: name: ${{needs.build-gem5.outputs.build-name}} path: build/ALL From ee6f1377d7c54422137dfa47cd4d73407814867d Mon Sep 17 00:00:00 2001 From: "Bobby R. Bruce" Date: Tue, 2 Apr 2024 10:20:25 -0700 Subject: [PATCH 05/14] misc: Sync develop .github to stable (#987) --- .github/workflows/ci-tests.yaml | 6 +++--- .github/workflows/daily-tests.yaml | 28 ++++++++++++++-------------- .github/workflows/docker-build.yaml | 4 ++-- .github/workflows/weekly-tests.yaml | 12 ++++++------ 4 files changed, 25 insertions(+), 25 deletions(-) diff --git a/.github/workflows/ci-tests.yaml b/.github/workflows/ci-tests.yaml index 828eab6fb0..bc35583c17 100644 --- a/.github/workflows/ci-tests.yaml +++ b/.github/workflows/ci-tests.yaml @@ -127,7 +127,7 @@ jobs: # stripping the "build" directory. By adding the "anchor.txt" file, we # ensure the "build" directory is preserved. - run: echo "anchor" > anchor.txt - - uses: actions/upload-artifact@v3 + - uses: actions/upload-artifact@v4 with: name: ci-tests-${{ github.run_number }}-testlib-quick-all-gem5-builds path: | @@ -151,7 +151,7 @@ jobs: # Checkout the repository then download the gem5.opt artifact. - uses: actions/checkout@v4 - - uses: actions/download-artifact@v3 + - uses: actions/download-artifact@v4 with: name: ci-tests-${{ github.run_number }}-testlib-quick-all-gem5-builds @@ -177,7 +177,7 @@ jobs: # Upload the tests/testing-results directory as an artifact. - name: Upload test results if: success() || failure() - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: ci-tests-run-${{ github.run_number }}-attempt-${{ github.run_attempt }}-testlib-quick-${{ steps.sanitize-test-dir.outputs.sanatized-test-dir }}-status-${{ steps.run-tests.outcome }}-output diff --git a/.github/workflows/daily-tests.yaml b/.github/workflows/daily-tests.yaml index 81de5c4746..d74d0788fd 100644 --- a/.github/workflows/daily-tests.yaml +++ b/.github/workflows/daily-tests.yaml @@ -16,7 +16,7 @@ jobs: outputs: build-name: ${{ steps.artifact-name.outputs.name }} steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 - id: artifact-name run: echo "name=$(date +"%Y-%m-%d_%H.%M.%S-")" >> $GITHUB_OUTPUT @@ -61,7 +61,7 @@ jobs: run: scons setconfig build/${{ matrix.image }} ${{ matrix.setconfig-option }} - name: Build gem5 run: scons build/${{ matrix.image }}/gem5.opt -j $(nproc) - - uses: actions/upload-artifact@v3 + - uses: actions/upload-artifact@v4 with: name: ${{ needs.name-artifacts.outputs.build-name }}${{ matrix.image }} path: build/${{ matrix.image }}/gem5.opt @@ -108,47 +108,47 @@ jobs: # since long tests can't start until the build matrix completes, # we download all artifacts from the build for each test # in this matrix - - uses: actions/download-artifact@v3 + - uses: actions/download-artifact@v4 with: name: ${{needs.name-artifacts.outputs.build-name}}ALL path: build/ALL - run: chmod u+x build/ALL/gem5.opt - - uses: actions/download-artifact@v3 + - uses: actions/download-artifact@v4 with: name: ${{needs.name-artifacts.outputs.build-name}}ALL_CHI path: build/ALL_CHI - run: chmod u+x build/ALL_CHI/gem5.opt - - uses: actions/download-artifact@v3 + - uses: actions/download-artifact@v4 with: name: ${{needs.name-artifacts.outputs.build-name}}ARM path: build/ARM - run: chmod u+x build/ARM/gem5.opt - - uses: actions/download-artifact@v3 + - uses: actions/download-artifact@v4 with: name: ${{needs.name-artifacts.outputs.build-name}}ALL_MSI path: build/ALL_MSI - run: chmod u+x build/ALL_MSI/gem5.opt - - uses: actions/download-artifact@v3 + - uses: actions/download-artifact@v4 with: name: ${{needs.name-artifacts.outputs.build-name}}ALL_MESI_Two_Level path: build/ALL_MESI_Two_Level - run: chmod u+x build/ALL_MESI_Two_Level/gem5.opt - - uses: actions/download-artifact@v3 + - uses: actions/download-artifact@v4 with: name: ${{needs.name-artifacts.outputs.build-name}}NULL path: build/NULL - run: chmod u+x build/NULL/gem5.opt - - uses: actions/download-artifact@v3 + - uses: actions/download-artifact@v4 with: name: ${{needs.name-artifacts.outputs.build-name}}NULL_MI_example path: build/NULL_MI_example - run: chmod u+x build/NULL_MI_example/gem5.opt - - uses: actions/download-artifact@v3 + - uses: actions/download-artifact@v4 with: name: ${{needs.name-artifacts.outputs.build-name}}RISCV path: build/RISCV - run: chmod u+x build/RISCV/gem5.opt - - uses: actions/download-artifact@v3 + - uses: actions/download-artifact@v4 with: name: ${{needs.name-artifacts.outputs.build-name}}VEGA_X86 path: build/VEGA_X86 @@ -164,7 +164,7 @@ jobs: zip -r output.zip tests/testing-results - name: upload zip if: success() || failure() - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 env: MY_STEP_VAR: ${{ matrix.test-type }}_COMMIT.${{github.sha}}_RUN.${{github.run_id}}_ATTEMPT.${{github.run_attempt}} with: @@ -193,7 +193,7 @@ jobs: # Scheduled workflows run on the default branch by default. We # therefore need to explicitly checkout the develop branch. ref: develop - - uses: actions/download-artifact@v3 + - uses: actions/download-artifact@v4 with: name: ${{needs.name-artifacts.outputs.build-name}}ALL path: build/ALL @@ -209,7 +209,7 @@ jobs: zip -r output.zip tests/testing-results - name: upload zip if: success() || failure() - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 env: MY_STEP_VAR: ${{ matrix.test-type }}_COMMIT.${{github.sha}}_RUN.${{github.run_id}}_ATTEMPT.${{github.run_attempt}} with: diff --git a/.github/workflows/docker-build.yaml b/.github/workflows/docker-build.yaml index 1677a231ab..c9e259d7f4 100644 --- a/.github/workflows/docker-build.yaml +++ b/.github/workflows/docker-build.yaml @@ -14,7 +14,7 @@ jobs: # Scheduled workflows run on the default branch by default. We # therefore need to explicitly checkout the develop branch. ref: develop - - uses: actions/upload-artifact@v3 + - uses: actions/upload-artifact@v4 with: name: dockerfiles path: util/dockerfiles @@ -28,7 +28,7 @@ jobs: contents: read steps: - - uses: actions/download-artifact@v3 + - uses: actions/download-artifact@v4 with: name: dockerfiles path: dockerfiles-docker-build diff --git a/.github/workflows/weekly-tests.yaml b/.github/workflows/weekly-tests.yaml index 109001c651..a7a4ffbbad 100644 --- a/.github/workflows/weekly-tests.yaml +++ b/.github/workflows/weekly-tests.yaml @@ -22,7 +22,7 @@ jobs: ref: develop - name: Build gem5 run: scons build/VEGA_X86/gem5.opt -j $(nproc) --ignore-style - - uses: actions/upload-artifact@v3 + - 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 @@ -42,7 +42,7 @@ jobs: ref: develop - name: Download build/VEGA_X86/gem5.opt - uses: actions/download-artifact@v3 + uses: actions/download-artifact@v4 with: name: weekly-test-${{ github.run_number }}-attempt-${{ github.run_attempt }}-gem5-build-vega path: build/VEGA_X86 @@ -72,7 +72,7 @@ jobs: # Scheduled workflows run on the default branch by default. We # therefore need to explicitly checkout the develop branch. ref: develop - - uses: actions/download-artifact@v3 + - uses: actions/download-artifact@v4 with: name: weekly-test-${{ github.run_number }}-attempt-${{ github.run_attempt }}-gem5-build-vega path: build/VEGA_X86 @@ -106,7 +106,7 @@ jobs: - name: Build gem5 run: | scons build/ALL/gem5.opt -j $(nproc) - - uses: actions/upload-artifact@v3 + - uses: actions/upload-artifact@v4 with: name: ${{ steps.artifact-name.outputs.name }} path: build/ALL/gem5.opt @@ -131,7 +131,7 @@ jobs: # Scheduled workflows run on the default branch by default. We # therefore need to explicitly checkout the develop branch. ref: develop - - uses: actions/download-artifact@v3 + - uses: actions/download-artifact@v4 with: name: ${{needs.build-gem5.outputs.build-name}} path: build/ALL @@ -146,7 +146,7 @@ jobs: zip -r output.zip tests/testing-results - name: upload zip if: success() || failure() - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 env: MY_STEP_VAR: ${{ matrix.test-type }}_COMMIT.${{github.sha}}_RUN.${{github.run_id}}_ATTEMPT.${{github.run_attempt}} with: From 0b2fa9900b3754787b4fd564937b8c145bcfbd5d Mon Sep 17 00:00:00 2001 From: "Bobby R. Bruce" Date: Fri, 19 Apr 2024 19:41:30 -0700 Subject: [PATCH 06/14] misc: Merge .github develop dir to stable (#1043) --- .github/workflows/ci-tests.yaml | 63 +++++++++++++++++++++------ .github/workflows/compiler-tests.yaml | 4 +- .github/workflows/daily-tests.yaml | 10 ++--- .github/workflows/docker-build.yaml | 2 +- .github/workflows/weekly-tests.yaml | 8 ++-- 5 files changed, 62 insertions(+), 25 deletions(-) diff --git a/.github/workflows/ci-tests.yaml b/.github/workflows/ci-tests.yaml index bc35583c17..a1aebe82ac 100644 --- a/.github/workflows/ci-tests.yaml +++ b/.github/workflows/ci-tests.yaml @@ -14,17 +14,17 @@ concurrency: jobs: pre-commit: # runs on github hosted runner - runs-on: ubuntu-22.04 + runs-on: ubuntu-latest if: github.event.pull_request.draft == false steps: - uses: actions/checkout@v4 - - uses: actions/setup-python@v3 - - uses: pre-commit/action@v3.0.0 + - uses: actions/setup-python@v5 + - uses: pre-commit/action@v3.0.1 # ensures we have a change-id in every commit, needed for gerrit check-for-change-id: # runs on github hosted runner - runs-on: ubuntu-22.04 + runs-on: ubuntu-latest if: github.event.pull_request.draft == false steps: - uses: actions/checkout@v4 @@ -50,7 +50,7 @@ jobs: unittests-all-opt: runs-on: [self-hosted, linux, x64] if: github.event.pull_request.draft == false - container: ghcr.io/gem5/ubuntu-22.04_all-dependencies:latest + container: ghcr.io/gem5/ubuntu-24.04_all-dependencies:latest needs: [pre-commit, check-for-change-id] # only runs if pre-commit and change-id passes timeout-minutes: 60 steps: @@ -65,15 +65,15 @@ jobs: if: github.event.pull_request.draft == false # In order to make sure the environment is exactly the same, we run in # the same container we use to build gem5 and run the testlib tests. This - container: ghcr.io/gem5/ubuntu-22.04_all-dependencies:latest + container: ghcr.io/gem5/ubuntu-24.04_all-dependencies:latest needs: [pre-commit, check-for-change-id] steps: - uses: actions/checkout@v4 - # Unfortunately the 'ubunutu-latest' image doesn't have jq installed. - # We therefore need to install it as a step here. + # Unfortunately the image doesn't have jq installed. + # We therefore need to install it as a step here. - name: Install jq - run: apt install -y jq + run: apt update && apt install -y jq - name: Get directories for testlib-quick working-directory: ${{ github.workspace }}/tests @@ -108,7 +108,7 @@ jobs: testlib-quick-gem5-builds: runs-on: [self-hosted, linux, x64] if: github.event.pull_request.draft == false - container: ghcr.io/gem5/ubuntu-22.04_all-dependencies:latest + container: ghcr.io/gem5/ubuntu-24.04_all-dependencies:latest needs: [pre-commit, check-for-change-id, testlib-quick-matrix] strategy: matrix: @@ -138,7 +138,7 @@ jobs: testlib-quick-execution: runs-on: [self-hosted, linux, x64] if: github.event.pull_request.draft == false - container: ghcr.io/gem5/ubuntu-22.04_all-dependencies:latest + container: ghcr.io/gem5/ubuntu-24.04_all-dependencies:latest needs: [pre-commit, check-for-change-id, testlib-quick-matrix, testlib-quick-gem5-builds] timeout-minutes: 360 # 6 hours strategy: @@ -184,12 +184,49 @@ jobs: path: tests/testing-results retention-days: 30 + pyunit: + runs-on: [self-hosted, linux, x64] + if: github.event.pull_request.draft == false + container: ghcr.io/gem5/ubuntu-24.04_all-dependencies:latest + needs: [pre-commit, check-for-change-id, testlib-quick-gem5-builds] + timeout-minutes: 30 + steps: + + # Checkout the repository then download the builds. + - uses: actions/checkout@v4 + - uses: actions/download-artifact@v4 + with: + name: ci-tests-${{ github.run_number }}-testlib-quick-all-gem5-builds + + # Check that the gem5 binaries exist and are executable. + - name: Chmod gem5.{opt,debug,fast} to be executable + run: | + find . -name "gem5.opt" -exec chmod u+x {} \; + find . -name "gem5.debug" -exec chmod u+x {} \; + find . -name "gem5.fast" -exec chmod u+x {} \; + + # Run the pyunit tests. + # Note: these are all quick tests. + - name: Run The pyunit tests + id: run-tests + working-directory: ${{ github.workspace }}/tests + run: ./main.py run --skip-build -vv -j$(nproc) pyunit + + # Upload the tests/testing-results directory as an artifact. + - name: Upload pyunit test results + if: success() || failure() + uses: actions/upload-artifact@v4 + with: + name: ci-tests-run-${{ github.run_number }}-attempt-${{ github.run_attempt }}-pyunit-status-${{ steps.run-tests.outcome }}-output + path: tests/testing-results + retention-days: 30 + testlib-quick: # It is 'testlib-quick' which needs to pass for the pull request to be # merged. The 'testlib-quick-execution' is a matrix job which runs all the # the testlib quick tests. This job is therefore a stub which will pass if # all the testlib-quick-execution jobs pass. - runs-on: ubuntu-22.04 - needs: testlib-quick-execution + runs-on: ubuntu-latest + needs: [testlib-quick-execution, pyunit] steps: - run: echo "This job's status is ${{ job.status }}." diff --git a/.github/workflows/compiler-tests.yaml b/.github/workflows/compiler-tests.yaml index fde8f3cd44..1c1ef88fd4 100644 --- a/.github/workflows/compiler-tests.yaml +++ b/.github/workflows/compiler-tests.yaml @@ -18,7 +18,7 @@ jobs: matrix: image: [gcc-version-13, gcc-version-12, gcc-version-11, gcc-version-10, gcc-version-8, clang-version-16, clang-version-15, clang-version-14, clang-version-13, clang-version-12, clang-version-11, clang-version-10, clang-version-9, clang-version-8, clang-version-7, ubuntu-20.04_all-dependencies, - ubuntu-22.04_all-dependencies, ubuntu-22.04_min-dependencies] + ubuntu-22.04_all-dependencies, ubuntu-24.04_all-dependencies, ubuntu-24.04_min-dependencies] opts: [.opt, .fast] runs-on: [self-hosted, linux, x64] timeout-minutes: 2880 # 48 hours @@ -61,7 +61,7 @@ jobs: # I.e., if we want to stop pull requests from being merged if the # compiler tests are failing, we can add this job as a required status # check. - runs-on: ubuntu-22.04 + runs-on: ubuntu-latest needs: - latest-compilers-all-gem5-builds - all-compilers diff --git a/.github/workflows/daily-tests.yaml b/.github/workflows/daily-tests.yaml index d74d0788fd..73788d3c9c 100644 --- a/.github/workflows/daily-tests.yaml +++ b/.github/workflows/daily-tests.yaml @@ -46,7 +46,7 @@ jobs: isa-option: 'NULL' runs-on: [self-hosted, linux, x64] needs: name-artifacts - container: ghcr.io/gem5/ubuntu-22.04_all-dependencies:latest + container: ghcr.io/gem5/ubuntu-24.04_all-dependencies:latest steps: - uses: actions/checkout@v4 with: @@ -74,7 +74,7 @@ jobs: matrix: type: [fast, debug] runs-on: [self-hosted, linux, x64] - container: ghcr.io/gem5/ubuntu-22.04_all-dependencies:latest + container: ghcr.io/gem5/ubuntu-24.04_all-dependencies:latest timeout-minutes: 60 steps: - uses: actions/checkout@v4 @@ -93,7 +93,7 @@ jobs: 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-22.04_all-dependencies:latest + container: ghcr.io/gem5/ubuntu-24.04_all-dependencies:latest needs: [name-artifacts, build-gem5] timeout-minutes: 1440 # 24 hours for entire matrix to run steps: @@ -182,7 +182,7 @@ jobs: 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-22.04_all-dependencies:latest + container: ghcr.io/gem5/ubuntu-24.04_all-dependencies:latest needs: [name-artifacts, build-gem5] timeout-minutes: 1440 # 24 hours steps: @@ -304,7 +304,7 @@ jobs: # 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-22.04 + runs-on: ubuntu-latest needs: - unittests-fast-debug - testlib-long-tests diff --git a/.github/workflows/docker-build.yaml b/.github/workflows/docker-build.yaml index c9e259d7f4..2afa907d0d 100644 --- a/.github/workflows/docker-build.yaml +++ b/.github/workflows/docker-build.yaml @@ -6,7 +6,7 @@ on: jobs: obtain-dockerfiles: runs-on: [self-hosted, linux, x64] - container: ghcr.io/gem5/ubuntu-22.04_all-dependencies:latest + container: ghcr.io/gem5/ubuntu-24.04_all-dependencies:latest steps: - uses: actions/checkout@v4 diff --git a/.github/workflows/weekly-tests.yaml b/.github/workflows/weekly-tests.yaml index a7a4ffbbad..3773557504 100644 --- a/.github/workflows/weekly-tests.yaml +++ b/.github/workflows/weekly-tests.yaml @@ -92,7 +92,7 @@ jobs: build-gem5: runs-on: [self-hosted, linux, x64] - container: ghcr.io/gem5/ubuntu-22.04_all-dependencies:latest + container: ghcr.io/gem5/ubuntu-24.04_all-dependencies:latest outputs: build-name: ${{ steps.artifact-name.outputs.name }} steps: @@ -120,7 +120,7 @@ jobs: 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-22.04_all-dependencies:latest + container: ghcr.io/gem5/ubuntu-24.04_all-dependencies:latest needs: [build-gem5] timeout-minutes: 4320 # 3 days steps: @@ -157,7 +157,7 @@ jobs: dramsys-tests: runs-on: [self-hosted, linux, x64] - container: ghcr.io/gem5/ubuntu-22.04_all-dependencies:latest + container: ghcr.io/gem5/ubuntu-24.04_all-dependencies:latest timeout-minutes: 4320 # 3 days steps: - uses: actions/checkout@v4 @@ -187,7 +187,7 @@ jobs: # 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 + runs-on: ubuntu-latest needs: - testlib-very-long-tests - dramsys-tests From 115322319c709a6e2a12e8b5c5299aa813d94633 Mon Sep 17 00:00:00 2001 From: "Bobby R. Bruce" Date: Sun, 21 Apr 2024 09:27:59 -0700 Subject: [PATCH 07/14] misc: Sync stable .github with develop (#1051) --- .github/workflows/ci-tests.yaml | 2 +- .github/workflows/daily-tests.yaml | 18 ++++-------------- .github/workflows/weekly-tests.yaml | 9 ++------- 3 files changed, 7 insertions(+), 22 deletions(-) diff --git a/.github/workflows/ci-tests.yaml b/.github/workflows/ci-tests.yaml index a1aebe82ac..663e7219ac 100644 --- a/.github/workflows/ci-tests.yaml +++ b/.github/workflows/ci-tests.yaml @@ -175,7 +175,7 @@ jobs: run: echo "sanatized-test-dir=$(echo '${{ matrix.test-dir }}' | sed 's/\//-/g')" >> $GITHUB_OUTPUT # Upload the tests/testing-results directory as an artifact. - - name: Upload test results + - name: upload results if: success() || failure() uses: actions/upload-artifact@v4 with: diff --git a/.github/workflows/daily-tests.yaml b/.github/workflows/daily-tests.yaml index 73788d3c9c..efa5943186 100644 --- a/.github/workflows/daily-tests.yaml +++ b/.github/workflows/daily-tests.yaml @@ -157,19 +157,14 @@ jobs: - name: long ${{ matrix.test-type }} tests working-directory: ${{ github.workspace }}/tests run: ./main.py run gem5/${{ matrix.test-type }} --length=long --skip-build -vv -t $(nproc) - - name: create zip of results - if: success() || failure() - run: | - apt-get -y install zip - zip -r output.zip tests/testing-results - - name: upload zip + - 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: output.zip + path: tests/testing-results retention-days: 7 - run: echo "This job's status is ${{ job.status }}." @@ -202,19 +197,14 @@ jobs: 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 --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 + - 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: output.zip + path: tests/testing-results retention-days: 7 - run: echo "This job's status is ${{ job.status }}." diff --git a/.github/workflows/weekly-tests.yaml b/.github/workflows/weekly-tests.yaml index 3773557504..41f935bf22 100644 --- a/.github/workflows/weekly-tests.yaml +++ b/.github/workflows/weekly-tests.yaml @@ -139,19 +139,14 @@ jobs: - 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 + - 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: output.zip + path: tests/testing-results retention-days: 7 - run: echo "This job's status is ${{ job.status }}." From 0b2243bb0a262bf97f45948b579ccf8b1a8ee35d Mon Sep 17 00:00:00 2001 From: "Bobby R. Bruce" Date: Tue, 21 May 2024 11:56:17 -0700 Subject: [PATCH 08/14] misc: Sync stable .github dir with develop (#1155) --- .github/workflows/compiler-tests.yaml | 4 ++-- .github/workflows/weekly-tests.yaml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/compiler-tests.yaml b/.github/workflows/compiler-tests.yaml index 1c1ef88fd4..9db1af6417 100644 --- a/.github/workflows/compiler-tests.yaml +++ b/.github/workflows/compiler-tests.yaml @@ -16,8 +16,8 @@ jobs: strategy: fail-fast: false matrix: - image: [gcc-version-13, gcc-version-12, gcc-version-11, gcc-version-10, gcc-version-8, clang-version-16, clang-version-15, clang-version-14, - clang-version-13, clang-version-12, clang-version-11, clang-version-10, clang-version-9, clang-version-8, clang-version-7, ubuntu-20.04_all-dependencies, + image: [gcc-version-13, gcc-version-12, gcc-version-11, gcc-version-10, clang-version-16, clang-version-15, clang-version-14, clang-version-13, + clang-version-12, clang-version-11, clang-version-10, clang-version-9, clang-version-8, clang-version-7, ubuntu-20.04_all-dependencies, ubuntu-22.04_all-dependencies, ubuntu-24.04_all-dependencies, ubuntu-24.04_min-dependencies] opts: [.opt, .fast] runs-on: [self-hosted, linux, x64] diff --git a/.github/workflows/weekly-tests.yaml b/.github/workflows/weekly-tests.yaml index 41f935bf22..7d06d94ad8 100644 --- a/.github/workflows/weekly-tests.yaml +++ b/.github/workflows/weekly-tests.yaml @@ -152,7 +152,7 @@ jobs: dramsys-tests: runs-on: [self-hosted, linux, x64] - container: ghcr.io/gem5/ubuntu-24.04_all-dependencies:latest + container: ghcr.io/gem5/ubuntu-22.04_all-dependencies:latest timeout-minutes: 4320 # 3 days steps: - uses: actions/checkout@v4 From 8404ae276bf3eed701aeeaec3cef0ed3b4f5de5b Mon Sep 17 00:00:00 2001 From: "Bobby R. Bruce" Date: Wed, 29 May 2024 07:48:13 -0700 Subject: [PATCH 09/14] misc: Sync .github develop -> stable (#1181) --- .github/workflows/daily-tests.yaml | 73 ++++++++++-------------------- 1 file changed, 25 insertions(+), 48 deletions(-) diff --git a/.github/workflows/daily-tests.yaml b/.github/workflows/daily-tests.yaml index efa5943186..8f2773aca3 100644 --- a/.github/workflows/daily-tests.yaml +++ b/.github/workflows/daily-tests.yaml @@ -67,6 +67,22 @@ jobs: path: build/${{ matrix.image }}/gem5.opt retention-days: 5 - run: echo "This job's status is ${{ job.status }}." + # The actions/upload-artifact@v4 action has a special "merge" sub action + # which allows for the merging of multiple artifacts into a single one. + # This is otherwise not possible as artifacts are immutable after creation + # in v4. We createa a merged artifact here as we want to download all the + # gem5 build artifacts when running the long tests. + merge-gem5-build-artifacts: + runs-on: ubuntu-latest + needs: build-gem5 + steps: + - name: Merge gem5 build artifacts + uses: actions/upload-artifact/merge@v4 + with: + name: ${{needs.name-artifacts.outputs.build-name}} + path: ${{needs.name-artifacts.outputs.build-name}}* + retention-days: 5 + # this builds both unittests.fast and unittests.debug unittests-fast-debug: @@ -94,7 +110,7 @@ jobs: stdlib, x86_boot_tests] runs-on: [self-hosted, linux, x64] container: ghcr.io/gem5/ubuntu-24.04_all-dependencies:latest - needs: [name-artifacts, build-gem5] + needs: [name-artifacts, merge-gem5-build-artifacts] timeout-minutes: 1440 # 24 hours for entire matrix to run steps: - name: Clean runner @@ -104,55 +120,16 @@ jobs: # Scheduled workflows run on the default branch by default. We # therefore need to explicitly checkout the develop branch. ref: develop - # download all artifacts for each test - # since long tests can't start until the build matrix completes, - # we download all artifacts from the build for each test - # in this matrix + # download all artifacts for each test. Thoguh this is inelegant, + # it's simpler than figuring otu which long tests requires which + # binary. - uses: actions/download-artifact@v4 with: - name: ${{needs.name-artifacts.outputs.build-name}}ALL - path: build/ALL - - run: chmod u+x build/ALL/gem5.opt - - uses: actions/download-artifact@v4 - with: - name: ${{needs.name-artifacts.outputs.build-name}}ALL_CHI - path: build/ALL_CHI - - run: chmod u+x build/ALL_CHI/gem5.opt - - uses: actions/download-artifact@v4 - with: - name: ${{needs.name-artifacts.outputs.build-name}}ARM - path: build/ARM - - run: chmod u+x build/ARM/gem5.opt - - uses: actions/download-artifact@v4 - with: - name: ${{needs.name-artifacts.outputs.build-name}}ALL_MSI - path: build/ALL_MSI - - run: chmod u+x build/ALL_MSI/gem5.opt - - uses: actions/download-artifact@v4 - with: - name: ${{needs.name-artifacts.outputs.build-name}}ALL_MESI_Two_Level - path: build/ALL_MESI_Two_Level - - run: chmod u+x build/ALL_MESI_Two_Level/gem5.opt - - uses: actions/download-artifact@v4 - with: - name: ${{needs.name-artifacts.outputs.build-name}}NULL - path: build/NULL - - run: chmod u+x build/NULL/gem5.opt - - uses: actions/download-artifact@v4 - with: - name: ${{needs.name-artifacts.outputs.build-name}}NULL_MI_example - path: build/NULL_MI_example - - run: chmod u+x build/NULL_MI_example/gem5.opt - - uses: actions/download-artifact@v4 - with: - name: ${{needs.name-artifacts.outputs.build-name}}RISCV - path: build/RISCV - - run: chmod u+x build/RISCV/gem5.opt - - uses: actions/download-artifact@v4 - with: - name: ${{needs.name-artifacts.outputs.build-name}}VEGA_X86 - path: build/VEGA_X86 - - run: chmod u+x build/VEGA_X86/gem5.opt + name: ${{needs.name-artifacts.outputs.build-name}} + # The upload/download GitHub actions do not preserve the executable + # bit of the files. We need to set the executable bit for the + # gem5.opt binaries we've just downloaded. + - run: find build -name "gem5.opt" | xargs chmod u+x # run test - name: long ${{ matrix.test-type }} tests working-directory: ${{ github.workspace }}/tests From bbdaae540c3745d1bc0833059ac15e0dfa388f14 Mon Sep 17 00:00:00 2001 From: "Bobby R. Bruce" Date: Thu, 30 May 2024 04:29:55 -0700 Subject: [PATCH 10/14] misc: Sync .github dir to stable (#1185) --- .github/workflows/daily-tests.yaml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/daily-tests.yaml b/.github/workflows/daily-tests.yaml index 8f2773aca3..465d70ab37 100644 --- a/.github/workflows/daily-tests.yaml +++ b/.github/workflows/daily-tests.yaml @@ -64,7 +64,7 @@ jobs: - uses: actions/upload-artifact@v4 with: name: ${{ needs.name-artifacts.outputs.build-name }}${{ matrix.image }} - path: build/${{ matrix.image }}/gem5.opt + path: '*build/${{ matrix.image }}/gem5.opt' retention-days: 5 - run: echo "This job's status is ${{ job.status }}." # The actions/upload-artifact@v4 action has a special "merge" sub action @@ -74,13 +74,13 @@ jobs: # gem5 build artifacts when running the long tests. merge-gem5-build-artifacts: runs-on: ubuntu-latest - needs: build-gem5 + needs: [build-gem5, name-artifacts] steps: - name: Merge gem5 build artifacts uses: actions/upload-artifact/merge@v4 with: name: ${{needs.name-artifacts.outputs.build-name}} - path: ${{needs.name-artifacts.outputs.build-name}}* + pattern: ${{needs.name-artifacts.outputs.build-name}}* retention-days: 5 From ef2a9110b7412cd526867dadd686e65fb3e4a5ac Mon Sep 17 00:00:00 2001 From: "Bobby R. Bruce" Date: Thu, 30 May 2024 07:48:47 -0700 Subject: [PATCH 11/14] misc: Merge .github dir develop -> stable (#1189) --- .github/workflows/daily-tests.yaml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/daily-tests.yaml b/.github/workflows/daily-tests.yaml index 465d70ab37..5cd580694f 100644 --- a/.github/workflows/daily-tests.yaml +++ b/.github/workflows/daily-tests.yaml @@ -65,7 +65,7 @@ jobs: with: name: ${{ needs.name-artifacts.outputs.build-name }}${{ matrix.image }} path: '*build/${{ matrix.image }}/gem5.opt' - retention-days: 5 + retention-days: 1 - run: echo "This job's status is ${{ job.status }}." # The actions/upload-artifact@v4 action has a special "merge" sub action # which allows for the merging of multiple artifacts into a single one. @@ -73,7 +73,8 @@ jobs: # in v4. We createa a merged artifact here as we want to download all the # gem5 build artifacts when running the long tests. merge-gem5-build-artifacts: - runs-on: ubuntu-latest + runs-on: [self-hosted, linux, x64] + container: ghcr.io/gem5/ubuntu-24.04_all-dependencies:latestt needs: [build-gem5, name-artifacts] steps: - name: Merge gem5 build artifacts @@ -81,7 +82,7 @@ jobs: with: name: ${{needs.name-artifacts.outputs.build-name}} pattern: ${{needs.name-artifacts.outputs.build-name}}* - retention-days: 5 + retention-days: 1 # this builds both unittests.fast and unittests.debug @@ -168,7 +169,6 @@ jobs: - uses: actions/download-artifact@v4 with: name: ${{needs.name-artifacts.outputs.build-name}}ALL - path: build/ALL - run: chmod u+x build/ALL/gem5.opt - name: long ${{ matrix.test-type }} gem5_library_example_tests working-directory: ${{ github.workspace }}/tests From fd0e6acc94885aa1ef868363eebd32504c96693e Mon Sep 17 00:00:00 2001 From: "Bobby R. Bruce" Date: Thu, 30 May 2024 10:15:35 -0700 Subject: [PATCH 12/14] misc: Fix daily-tests 1. Typo in container. 2. Add compression level to minimize size of generated artifact. Change-Id: I854e814162fb434ad50a64e3070b943905e4134b --- .github/workflows/daily-tests.yaml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/daily-tests.yaml b/.github/workflows/daily-tests.yaml index 5cd580694f..cf39474401 100644 --- a/.github/workflows/daily-tests.yaml +++ b/.github/workflows/daily-tests.yaml @@ -74,7 +74,7 @@ jobs: # gem5 build artifacts when running the long tests. merge-gem5-build-artifacts: runs-on: [self-hosted, linux, x64] - container: ghcr.io/gem5/ubuntu-24.04_all-dependencies:latestt + container: ghcr.io/gem5/ubuntu-24.04_all-dependencies:latest needs: [build-gem5, name-artifacts] steps: - name: Merge gem5 build artifacts @@ -83,6 +83,7 @@ jobs: name: ${{needs.name-artifacts.outputs.build-name}} pattern: ${{needs.name-artifacts.outputs.build-name}}* retention-days: 1 + compression-level: 9 # this builds both unittests.fast and unittests.debug From 26a1d2ff0b6d49cf44ad1863ad17ae63f32f22da Mon Sep 17 00:00:00 2001 From: "Bobby R. Bruce" Date: Tue, 11 Jun 2024 15:42:53 -0700 Subject: [PATCH 13/14] misc,tests: Update daily test artifact actions to v4.0.0 Change-Id: I711fa36639e925ce958e0484a31ee6a4dde87dbe --- .github/workflows/daily-tests.yaml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/daily-tests.yaml b/.github/workflows/daily-tests.yaml index cf39474401..102ef0ca71 100644 --- a/.github/workflows/daily-tests.yaml +++ b/.github/workflows/daily-tests.yaml @@ -61,7 +61,7 @@ jobs: run: scons setconfig build/${{ matrix.image }} ${{ matrix.setconfig-option }} - name: Build gem5 run: scons build/${{ matrix.image }}/gem5.opt -j $(nproc) - - uses: actions/upload-artifact@v4 + - uses: actions/upload-artifact@v4.0.0 with: name: ${{ needs.name-artifacts.outputs.build-name }}${{ matrix.image }} path: '*build/${{ matrix.image }}/gem5.opt' @@ -78,7 +78,7 @@ jobs: needs: [build-gem5, name-artifacts] steps: - name: Merge gem5 build artifacts - uses: actions/upload-artifact/merge@v4 + uses: actions/upload-artifact/merge@v4.0.0 with: name: ${{needs.name-artifacts.outputs.build-name}} pattern: ${{needs.name-artifacts.outputs.build-name}}* @@ -125,7 +125,7 @@ jobs: # download all artifacts for each test. Thoguh this is inelegant, # it's simpler than figuring otu which long tests requires which # binary. - - uses: actions/download-artifact@v4 + - uses: actions/download-artifact@v4.0.0 with: name: ${{needs.name-artifacts.outputs.build-name}} # The upload/download GitHub actions do not preserve the executable @@ -138,7 +138,7 @@ jobs: run: ./main.py run gem5/${{ matrix.test-type }} --length=long --skip-build -vv -t $(nproc) - name: upload results if: success() || failure() - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v4.0.0 env: MY_STEP_VAR: ${{ matrix.test-type }}_COMMIT.${{github.sha}}_RUN.${{github.run_id}}_ATTEMPT.${{github.run_attempt}} with: @@ -167,7 +167,7 @@ jobs: # 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 + - uses: actions/download-artifact@v4.0.0 with: name: ${{needs.name-artifacts.outputs.build-name}}ALL - run: chmod u+x build/ALL/gem5.opt @@ -177,7 +177,7 @@ jobs: --skip-build -vv - name: upload results if: success() || failure() - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v4.0.0 env: MY_STEP_VAR: ${{ matrix.test-type }}_COMMIT.${{github.sha}}_RUN.${{github.run_id}}_ATTEMPT.${{github.run_attempt}} with: From e03a5f78d1bd3cc900f4f2d8791e112f8cf397d1 Mon Sep 17 00:00:00 2001 From: "Bobby R. Bruce" Date: Wed, 12 Jun 2024 00:14:27 -0700 Subject: [PATCH 14/14] misc,tests: Revert merge version to 'v4' from 'v4.0.0' 'v4.0.0' wasn't working. The following error was occurred: ``` Can't find 'action.yml', 'action.yaml' or 'Dockerfile' for action 'actions/upload-artifact/merge@v4.0.0'. ``` Change-Id: I658b0fe292df029501fbc1286acb06f4014ae4e1 --- .github/workflows/daily-tests.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/daily-tests.yaml b/.github/workflows/daily-tests.yaml index 102ef0ca71..a45c39a183 100644 --- a/.github/workflows/daily-tests.yaml +++ b/.github/workflows/daily-tests.yaml @@ -78,7 +78,7 @@ jobs: needs: [build-gem5, name-artifacts] steps: - name: Merge gem5 build artifacts - uses: actions/upload-artifact/merge@v4.0.0 + uses: actions/upload-artifact/merge@v4 with: name: ${{needs.name-artifacts.outputs.build-name}} pattern: ${{needs.name-artifacts.outputs.build-name}}*