From dffad2740dab4ff0a93fa54415321e7747a55517 Mon Sep 17 00:00:00 2001 From: AlexandreSinger Date: Sat, 21 Dec 2024 15:48:40 -0500 Subject: [PATCH] [CI] Upgraded Runners to Ubuntu 24.04 Upgraded the GitHub-hosted runners from Ubuntu 22.04 to Ubuntu 24.04. This ensures that all changes to VTR will work on the most recent version of Ubuntu (as well as being warning clean). Removed the prior tests for Ubuntu 24.04. Added a tests to ensure Ubuntu 22.04 remains warning clean as well. --- .github/scripts/install_dependencies.sh | 17 ++-- ...ncies.sh => install_jammy_dependencies.sh} | 4 - .github/workflows/noble.yml | 51 ---------- .github/workflows/test.yml | 93 ++++++++++--------- .../analytical_place/analytical_solver.cpp | 9 ++ vpr/src/analytical_place/analytical_solver.h | 9 ++ vpr/src/place/analytic_placer.cpp | 9 ++ 7 files changed, 83 insertions(+), 109 deletions(-) rename .github/scripts/{install_noble_dependencies.sh => install_jammy_dependencies.sh} (95%) delete mode 100644 .github/workflows/noble.yml diff --git a/.github/scripts/install_dependencies.sh b/.github/scripts/install_dependencies.sh index b33a2e1bba4..93215d9c419 100755 --- a/.github/scripts/install_dependencies.sh +++ b/.github/scripts/install_dependencies.sh @@ -11,7 +11,6 @@ sudo apt install -y \ binutils-gold \ build-essential \ capnproto \ - ament-cmake \ exuberant-ctags \ curl \ doxygen \ @@ -44,18 +43,18 @@ sudo apt install -y \ qtbase5-dev \ uuid-dev \ default-jdk \ - g++-9 \ - gcc-9 \ - g++-10 \ - gcc-10 \ g++-11 \ gcc-11 \ g++-12 \ gcc-12 \ - clang-11 \ - clang-12 \ - clang-13 \ - clang-14 \ + g++-13 \ + gcc-13 \ + g++-14 \ + gcc-14 \ + clang-15 \ + clang-16 \ + clang-17 \ + clang-18 \ clang-format-14 \ libtbb-dev diff --git a/.github/scripts/install_noble_dependencies.sh b/.github/scripts/install_jammy_dependencies.sh similarity index 95% rename from .github/scripts/install_noble_dependencies.sh rename to .github/scripts/install_jammy_dependencies.sh index 98e42720dba..aa6631f8a04 100755 --- a/.github/scripts/install_noble_dependencies.sh +++ b/.github/scripts/install_jammy_dependencies.sh @@ -51,10 +51,6 @@ sudo apt install -y \ gcc-11 \ g++-12 \ gcc-12 \ - g++-13 \ - gcc-13 \ - clang-14 \ - clang-18 \ clang-format-14 \ libtbb-dev diff --git a/.github/workflows/noble.yml b/.github/workflows/noble.yml deleted file mode 100644 index 5f13b764da1..00000000000 --- a/.github/workflows/noble.yml +++ /dev/null @@ -1,51 +0,0 @@ -# This workflow is designed to test that VTR can run on Ubuntu 24.04. Since -# the Ubuntu 24.04 GitHub runners are still in Beta, this is left as a workflow -# that must be dispatched manually. In the future this workflow should be -# removed and made the default (integrated into test.yml). -name: Noble - -on: - workflow_dispatch: - schedule: - - cron: '0 0 * * *' # daily - -# We want to cancel previous runs for a given PR or branch / ref if another CI -# run is requested. -# See: https://docs.github.com/en/actions/using-jobs/using-concurrency -concurrency: - group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} - cancel-in-progress: true - -env: - MATRIX_EVAL: "CC=gcc-13 && CXX=g++-13" - -jobs: - FutureCompatibility: - runs-on: ubuntu-24.04 - strategy: - fail-fast: false - matrix: - include: - - { name: 'GCC 13 (Ubuntu Noble - 24.04)', eval: 'CC=gcc-13 && CXX=g++-13', } - - { name: 'Clang 18 (Ubuntu Noble - 24.04)', eval: 'CC=clang-18 && CXX=clang++-18', } - name: 'B: ${{ matrix.name }}' - steps: - - uses: actions/setup-python@v5 - with: - python-version: 3.12.3 - - uses: actions/checkout@v4 - with: - submodules: 'true' - - run: ./.github/scripts/install_noble_dependencies.sh - - - uses: hendrikmuhs/ccache-action@v1.2 - - - name: Test - env: - CMAKE_PARAMS: "-DVTR_ASSERT_LEVEL=3 -DVTR_IPO_BUILD=off" - MATRIX_EVAL: ${{ matrix.eval }} - BUILD_TYPE: release - run: | - export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH" - ./.github/scripts/build.sh - diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 4c005ed19cf..b6c665ff3ed 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -31,12 +31,12 @@ concurrency: env: # default compiler for all non-compatibility tests - MATRIX_EVAL: "CC=gcc-11 && CXX=g++-11" + MATRIX_EVAL: "CC=gcc-13 && CXX=g++-13" jobs: Build: name: 'B: Building VtR' - runs-on: ubuntu-22.04 + runs-on: ubuntu-24.04 strategy: fail-fast: false matrix: @@ -48,7 +48,7 @@ jobs: - uses: actions/setup-python@v5 with: - python-version: 3.10.10 + python-version: 3.12.3 - uses: actions/checkout@v4 with: submodules: 'true' @@ -72,7 +72,7 @@ jobs: Format: - runs-on: ubuntu-22.04 + runs-on: ubuntu-24.04 strategy: fail-fast: false matrix: @@ -83,6 +83,8 @@ jobs: name: 'F: ${{ matrix.name }}' steps: + # TODO: This should be on the same version of Python as would be found on + # Ubuntu 24.04 (3.12.3); however that version has some linting errors. - uses: actions/setup-python@v5 with: python-version: 3.10.10 @@ -97,12 +99,12 @@ jobs: UniTests: name: 'U: C++ Unit Tests' - runs-on: ubuntu-22.04 + runs-on: ubuntu-24.04 steps: - uses: actions/setup-python@v5 with: - python-version: 3.10.10 + python-version: 3.12.3 - uses: actions/checkout@v4 with: submodules: 'true' @@ -123,12 +125,12 @@ jobs: Warnings: name: 'W: Check Compilation Warnings' - runs-on: ubuntu-22.04 + runs-on: ubuntu-24.04 steps: - uses: actions/setup-python@v5 with: - python-version: 3.10.10 + python-version: 3.12.3 - uses: actions/checkout@v4 with: submodules: 'true' @@ -154,32 +156,32 @@ jobs: Regression: - runs-on: ubuntu-22.04 + runs-on: ubuntu-24.04 strategy: fail-fast: false matrix: include: [ { name: 'Basic', - params: '-DCMAKE_COMPILE_WARNING_AS_ERROR=on -DVTR_ASSERT_LEVEL=3 -DWITH_BLIFEXPLORER=on', + params: '-DCMAKE_COMPILE_WARNING_AS_ERROR=on -DVTR_IPO_BUILD=off -DVTR_ASSERT_LEVEL=3 -DWITH_BLIFEXPLORER=on', suite: 'vtr_reg_basic', extra_pkgs: "" }, { name: 'Basic with highest assertion level', - params: '-DCMAKE_COMPILE_WARNING_AS_ERROR=on -DVTR_ASSERT_LEVEL=4 -DWITH_BLIFEXPLORER=on', + params: '-DCMAKE_COMPILE_WARNING_AS_ERROR=on -DVTR_IPO_BUILD=off -DVTR_ASSERT_LEVEL=4 -DWITH_BLIFEXPLORER=on', suite: 'vtr_reg_basic', extra_pkgs: "" }, { name: 'Basic_odin', - params: '-DCMAKE_COMPILE_WARNING_AS_ERROR=on -DVTR_ASSERT_LEVEL=3 -DWITH_BLIFEXPLORER=on -DWITH_PARMYS=OFF -DWITH_ODIN=on', + params: '-DCMAKE_COMPILE_WARNING_AS_ERROR=on -DVTR_IPO_BUILD=off -DVTR_ASSERT_LEVEL=3 -DWITH_BLIFEXPLORER=on -DWITH_PARMYS=OFF -DWITH_ODIN=on', suite: 'vtr_reg_basic_odin', extra_pkgs: "" }, { name: 'Basic with NO_GRAPHICS', - params: '-DCMAKE_COMPILE_WARNING_AS_ERROR=on -DVTR_ASSERT_LEVEL=3 -DWITH_BLIFEXPLORER=on -DVPR_USE_EZGL=off', + params: '-DCMAKE_COMPILE_WARNING_AS_ERROR=on -DVTR_IPO_BUILD=off -DVTR_ASSERT_LEVEL=3 -DWITH_BLIFEXPLORER=on -DVPR_USE_EZGL=off', suite: 'vtr_reg_basic', extra_pkgs: "" }, @@ -191,25 +193,25 @@ jobs: }, { name: 'Basic with CAPNPROTO disabled', - params: '-DCMAKE_COMPILE_WARNING_AS_ERROR=on -DVTR_ASSERT_LEVEL=3 -DWITH_BLIFEXPLORER=on -DVTR_ENABLE_CAPNPROTO=off', + params: '-DCMAKE_COMPILE_WARNING_AS_ERROR=on -DVTR_IPO_BUILD=off -DVTR_ASSERT_LEVEL=3 -DWITH_BLIFEXPLORER=on -DVTR_ENABLE_CAPNPROTO=off', suite: 'vtr_reg_basic', extra_pkgs: "" }, { name: 'Basic with VTR_ENABLE_DEBUG_LOGGING', - params: '-DCMAKE_COMPILE_WARNING_AS_ERROR=on -DVTR_ASSERT_LEVEL=3 -DWITH_BLIFEXPLORER=on -DVTR_ENABLE_DEBUG_LOGGING=on', + params: '-DCMAKE_COMPILE_WARNING_AS_ERROR=on -DVTR_IPO_BUILD=off -DVTR_ASSERT_LEVEL=3 -DWITH_BLIFEXPLORER=on -DVTR_ENABLE_DEBUG_LOGGING=on', suite: 'vtr_reg_basic', extra_pkgs: "" }, { name: 'Basic_odin with VTR_ENABLE_DEBUG_LOGGING', - params: '-DCMAKE_COMPILE_WARNING_AS_ERROR=on -DVTR_ASSERT_LEVEL=3 -DWITH_BLIFEXPLORER=on -DVTR_ENABLE_DEBUG_LOGGING=on -DWITH_PARMYS=OFF -DWITH_ODIN=on', + params: '-DCMAKE_COMPILE_WARNING_AS_ERROR=on -DVTR_IPO_BUILD=off -DVTR_ASSERT_LEVEL=3 -DWITH_BLIFEXPLORER=on -DVTR_ENABLE_DEBUG_LOGGING=on -DWITH_PARMYS=OFF -DWITH_ODIN=on', suite: 'vtr_reg_basic_odin', extra_pkgs: "" }, { name: 'Strong', - params: '-DCMAKE_COMPILE_WARNING_AS_ERROR=on -DVTR_ASSERT_LEVEL=3 -DWITH_BLIFEXPLORER=on', + params: '-DCMAKE_COMPILE_WARNING_AS_ERROR=on -DVTR_IPO_BUILD=off -DVTR_ASSERT_LEVEL=3 -DWITH_BLIFEXPLORER=on', suite: 'vtr_reg_strong', extra_pkgs: "libeigen3-dev" }, @@ -221,7 +223,7 @@ jobs: }, { name: 'Valgrind Memory', - params: '-DCMAKE_COMPILE_WARNING_AS_ERROR=on -DVTR_ASSERT_LEVEL=3 -DWITH_BLIFEXPLORER=on -DWITH_ODIN=on', + params: '-DCMAKE_COMPILE_WARNING_AS_ERROR=on -DVTR_IPO_BUILD=off -DVTR_ASSERT_LEVEL=3 -DWITH_BLIFEXPLORER=on -DWITH_ODIN=on', suite: 'vtr_reg_valgrind_small', extra_pkgs: "" } @@ -231,7 +233,7 @@ jobs: - uses: actions/setup-python@v5 with: - python-version: 3.10.10 + python-version: 3.12.3 - uses: actions/checkout@v4 with: @@ -281,7 +283,7 @@ jobs: vtr_flow/**/parse_results*.txt Sanitized: - runs-on: ubuntu-22.04 + runs-on: ubuntu-24.04 strategy: fail-fast: false matrix: @@ -300,7 +302,7 @@ jobs: - uses: actions/setup-python@v5 with: - python-version: 3.10.10 + python-version: 3.12.3 - uses: actions/checkout@v4 with: submodules: 'true' @@ -335,12 +337,12 @@ jobs: Parmys: name: 'Parmys Basic Test' - runs-on: ubuntu-22.04 + runs-on: ubuntu-24.04 steps: - uses: actions/setup-python@v5 with: - python-version: 3.10.10 + python-version: 3.12.3 - uses: actions/checkout@v4 with: submodules: 'true' @@ -367,12 +369,12 @@ jobs: ODINII: name: 'ODIN-II Basic Test' - runs-on: ubuntu-22.04 + runs-on: ubuntu-24.04 steps: - uses: actions/setup-python@v5 with: - python-version: 3.10.10 + python-version: 3.12.3 - uses: actions/checkout@v4 with: submodules: 'true' @@ -400,12 +402,12 @@ jobs: VQM2BLIF: name: 'VQM2BLIF Basic Tests' - runs-on: ubuntu-22.04 + runs-on: ubuntu-24.04 steps: - uses: actions/setup-python@v5 with: - python-version: 3.10.10 + python-version: 3.12.3 - uses: actions/checkout@v4 with: submodules: 'true' @@ -429,25 +431,25 @@ jobs: ./utils/vqm2blif/test/scripts/test_vqm2blif.sh Compatibility: - runs-on: ubuntu-22.04 + runs-on: ubuntu-24.04 strategy: fail-fast: false matrix: include: - - { name: 'GCC 9 (Ubuntu Jammy - 22.04)', eval: 'CC=gcc-9 && CXX=g++-9', } - - { name: 'GCC 10 (Ubuntu Jammy - 22.04)', eval: 'CC=gcc-10 && CXX=g++-10', } - - { name: 'GCC 11 (Ubuntu Jammy - 22.04)', eval: 'CC=gcc-11 && CXX=g++-11', } - - { name: 'GCC 12 (Ubuntu Jammy - 22.04)', eval: 'CC=gcc-12 && CXX=g++-12', } - - { name: 'Clang 11 (Ubuntu Jammy - 22.04)', eval: 'CC=clang-11 && CXX=clang++-11', } - - { name: 'Clang 12 (Ubuntu Jammy - 22.04)', eval: 'CC=clang-12 && CXX=clang++-12', } - - { name: 'Clang 13 (Ubuntu Jammy - 22.04)', eval: 'CC=clang-13 && CXX=clang++-13', } - - { name: 'Clang 14 (Ubuntu Jammy - 22.04)', eval: 'CC=clang-14 && CXX=clang++-14', } + - { name: 'GCC 11 (Ubuntu Noble - 24.04)', eval: 'CC=gcc-11 && CXX=g++-11', } + - { name: 'GCC 12 (Ubuntu Noble - 24.04)', eval: 'CC=gcc-12 && CXX=g++-12', } + - { name: 'GCC 14 (Ubuntu Noble - 24.04)', eval: 'CC=gcc-14 && CXX=g++-14', } + - { name: 'Clang 15 (Ubuntu Noble - 24.04)', eval: 'CC=clang-15 && CXX=clang++-15', } + - { name: 'Clang 16 (Ubuntu Noble - 24.04)', eval: 'CC=clang-16 && CXX=clang++-16', } + - { name: 'Clang 17 (Ubuntu Noble - 24.04)', eval: 'CC=clang-17 && CXX=clang++-17', } + - { name: 'Clang 18 (Ubuntu Noble - 24.04)', eval: 'CC=clang-18 && CXX=clang++-18', } + # Note: We do not include GCC-13 since it is the default and is already tested. name: 'B: ${{ matrix.name }}' steps: - uses: actions/setup-python@v5 with: - python-version: 3.10.10 + python-version: 3.12.3 - uses: actions/checkout@v4 with: submodules: 'true' @@ -471,13 +473,13 @@ jobs: export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH" ./.github/scripts/build.sh - NobleCompatibility: - name: 'Ubuntu Noble - 24.04 Compatibility Test' - runs-on: ubuntu-24.04 + JammyCompatibility: + name: 'Ubuntu Jammy - 22.04 Compatibility Test' + runs-on: ubuntu-22.04 steps: - uses: actions/setup-python@v5 with: - python-version: 3.12.3 + python-version: 3.10.10 - uses: actions/checkout@v4 with: @@ -488,14 +490,14 @@ jobs: id: cpu-cores - name: Install Dependencies - run: ./.github/scripts/install_noble_dependencies.sh + run: ./.github/scripts/install_jammy_dependencies.sh - uses: hendrikmuhs/ccache-action@v1.2 - name: Test env: CMAKE_PARAMS: "-DVTR_ASSERT_LEVEL=3 -DCMAKE_COMPILE_WARNING_AS_ERROR=on -DVTR_IPO_BUILD=off" - MATRIX_EVAL: 'CC=gcc-13 && CXX=g++-13' + MATRIX_EVAL: 'CC=gcc-11 && CXX=g++-11' BUILD_TYPE: release NUM_PROC: ${{ steps.cpu-cores.outputs.count }} run: | @@ -515,12 +517,12 @@ jobs: - ODINII - VQM2BLIF - Compatibility - runs-on: ubuntu-22.04 + runs-on: ubuntu-24.04 steps: - uses: actions/setup-python@v5 with: - python-version: 3.10.10 + python-version: 3.12.3 - uses: actions/checkout@v4 with: submodules: 'true' @@ -543,3 +545,4 @@ jobs: run: | export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH" ./.github/scripts/build.sh + diff --git a/vpr/src/analytical_place/analytical_solver.cpp b/vpr/src/analytical_place/analytical_solver.cpp index e15f510a20b..4c5e0037c7b 100644 --- a/vpr/src/analytical_place/analytical_solver.cpp +++ b/vpr/src/analytical_place/analytical_solver.cpp @@ -19,11 +19,20 @@ #include "vtr_vector.h" #ifdef EIGEN_INSTALLED +// The eigen library contains a warning in GCC13 for a null dereference. This +// causes the CI build to fail due to the warning. Ignoring the warning for +// these include files. Using push to return to the state of GCC diagnostics. +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wnull-dereference" + #include #include #include #include #include + +// Pop the GCC diagnostics state back to what it was before. +#pragma GCC diagnostic pop #endif // EIGEN_INSTALLED std::unique_ptr make_analytical_solver(e_analytical_solver solver_type, diff --git a/vpr/src/analytical_place/analytical_solver.h b/vpr/src/analytical_place/analytical_solver.h index a86eae6d073..33397a554d1 100644 --- a/vpr/src/analytical_place/analytical_solver.h +++ b/vpr/src/analytical_place/analytical_solver.h @@ -14,7 +14,16 @@ #include "vtr_vector.h" #ifdef EIGEN_INSTALLED +// The eigen library contains a warning in GCC13 for a null dereference. This +// causes the CI build to fail due to the warning. Ignoring the warning for +// these include files. Using push to return to the state of GCC diagnostics. +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wnull-dereference" + #include "Eigen/Sparse" + +// Pop the GCC diagnostics state back to what it was before. +#pragma GCC diagnostic pop #endif // EIGEN_INSTALLED // Forward declarations diff --git a/vpr/src/place/analytic_placer.cpp b/vpr/src/place/analytic_placer.cpp index 9d1f2406656..b4ac4400f0f 100644 --- a/vpr/src/place/analytic_placer.cpp +++ b/vpr/src/place/analytic_placer.cpp @@ -1,8 +1,17 @@ #ifdef ENABLE_ANALYTIC_PLACE # include "analytic_placer.h" + +// The eigen library contains a warning in GCC13 for a null dereference. This +// causes the CI build to fail due to the warning. Ignoring the warning for +// these include files. Using push to return to the state of GCC diagnostics. +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wnull-dereference" # include # include +// Pop the GCC diagnostics state back to what it was before. +#pragma GCC diagnostic pop + # include # include # include