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