diff --git a/.github/workflows/cpuarch.yml b/.github/workflows/cpuarch.yml new file mode 100644 index 000000000..672d26395 --- /dev/null +++ b/.github/workflows/cpuarch.yml @@ -0,0 +1,107 @@ +name: CPU Compilation/Unit Tests + +on: + push: + +jobs: + check-commit: + runs-on: ubuntu-24.04 + outputs: + run_tests: ${{ steps.check_message.outputs.run_tests }} + steps: + - name: Checkout repository + uses: actions/checkout@v4 + - name: Check commit message + id: check_message + run: | + if git log -1 --pretty=%B | grep -q "CPUTEST"; then + echo "run_tests=true" >> "$GITHUB_OUTPUT" + else + echo "run_tests=false" >> "$GITHUB_OUTPUT" + fi + tests: + needs: check-commit + if: needs.check-commit.outputs.run_tests == 'true' + name: UNIT_TESTS (precision=${{ matrix.precision }}, mpi=${{ matrix.mpi }}, output=${{ matrix.output }}) + runs-on: ubuntu-24.04 + strategy: + fail-fast: false + matrix: + precision: [single, double] + mpi: [ON, OFF] + output: [ON, OFF] + exclude: + - precision: single + mpi: ON + output: ON + - precision: double + mpi: ON + output: ON + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + submodules: recursive + - name: Install GCC 14 and build tools + run: | + sudo apt-get update + sudo apt-get install -y gcc-14 g++-14 gfortran-14 build-essential wget libevent-dev libhwloc-dev + sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-14 50 + sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-14 50 + sudo update-alternatives --install /usr/bin/gfortran gfortran /usr/bin/gfortran-14 50 + gcc --version + g++ --version + - name: Install CMake (3.x) + run: | + sudo apt-get install -y cmake + cmake --version + - name: Install OpenMPI 5 + run: | + sudo apt-get install -y libopenmpi-dev openmpi-bin + mpirun --version + - name: Configure + run: | + if [ "${{ matrix.mpi }}" = "ON" ]; then + export CC=mpicc + export CXX=mpicxx + else + export CC=gcc-14 + export CXX=g++-14 + fi + cmake -B build -D TESTS=ON -D precision=${{ matrix.precision }} -D mpi=${{ matrix.mpi }} -D output=${{ matrix.output }} + - name: Compile + run: cmake --build build -j "$(nproc)" + - name: Run tests + run: ctest --test-dir build --output-on-failure + pgens: + needs: check-commit + if: needs.check-commit.outputs.run_tests == 'true' + name: PGENS (pgen=${{ matrix.pgen }}) + runs-on: ubuntu-24.04 + strategy: + fail-fast: false + matrix: + pgen: [streaming, turbulence, reconnection, shock, magnetosphere, accretion, wald] + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + submodules: recursive + - name: Install GCC 14 and build tools + run: | + sudo apt-get update + sudo apt-get install -y gcc-14 g++-14 gfortran-14 build-essential wget libevent-dev libhwloc-dev + sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-14 50 + sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-14 50 + sudo update-alternatives --install /usr/bin/gfortran gfortran /usr/bin/gfortran-14 50 + gcc --version + g++ --version + - name: Install CMake (3.x) + run: | + sudo apt-get install -y cmake + cmake --version + - name: Configure + run: | + cmake -B build -D pgen=${{ matrix.pgen }} -D output=OFF + - name: Compile + run: cmake --build build -j "$(nproc)" diff --git a/.github/workflows/actions.yml b/.github/workflows/multiarch.yml similarity index 94% rename from .github/workflows/actions.yml rename to .github/workflows/multiarch.yml index a5c546328..89af03747 100644 --- a/.github/workflows/actions.yml +++ b/.github/workflows/multiarch.yml @@ -1,11 +1,11 @@ -name: Unit tests +name: Multi-Arch Local Tests on: push: jobs: check-commit: - runs-on: ubuntu-latest + runs-on: ubuntu-24.04 outputs: run_tests: ${{ steps.check_message.outputs.run_tests }} steps: @@ -14,7 +14,7 @@ jobs: - name: Check commit message id: check_message run: | - if git log -1 --pretty=%B | grep -q "RUNTEST"; then + if git log -1 --pretty=%B | grep -q "MARCHTEST"; then echo "run_tests=true" >> "$GITHUB_OUTPUT" else echo "run_tests=false" >> "$GITHUB_OUTPUT" diff --git a/compile_pgens.sh b/compile_pgens.sh deleted file mode 100755 index 2d5bdc9eb..000000000 --- a/compile_pgens.sh +++ /dev/null @@ -1,41 +0,0 @@ -#!/usr/bin/env bash - -pgens=("magnetosphere" "reconnection" "turbulence" "shock" "streaming" "accretion" "wald") -flags=("OFFLINE=ON") - -for pgen in "${pgens[@]}"; do - echo "Compiling pgen: $pgen" - flags_d="-D pgen=${pgen} " - for flag in "${flags[@]}"; do - flags_d+="-D ${flag}" - done - - ( - cmake -B "builds/build-${pgen}" $flags_d && - cmake --build "builds/build-${pgen}" -j && - mkdir -p "temp/${pgen}" && - cp "builds/build-${pgen}/src/entity.xc" "temp/${pgen}/" && - cp "pgens/${pgen}/"*.toml "temp/${pgen}/" - ) || { - echo "Failed to compile pgen: $pgen" - exit 1 - } -done - -for pgen in "${pgens[@]}"; do - cd "temp/${pgen}" || { - echo "no temp directory for $pgen" - exit 1 - } - tomls=$(find . -type f -name "*.toml") - for toml in "${tomls[@]}"; do - ( - echo "Running pgen: $pgen with config $toml" && - ./entity.xc -input "$toml" && - cd ../../ - ) || { - echo "Failed to run $pgen with config $toml" - exit 1 - } - done -done