diff --git a/.github/workflows/bench.yml b/.github/workflows/bench.yml deleted file mode 100644 index 10e8e51681..0000000000 --- a/.github/workflows/bench.yml +++ /dev/null @@ -1,68 +0,0 @@ -name: 'Benchmark' - -on: pull_request - -jobs: - file-changes: - name: Detect File Changes - runs-on: 'ubuntu-latest' - outputs: - checkall: ${{ steps.changes.outputs.checkall }} - steps: - - name: Clone - uses: actions/checkout@v4 - - - name: Detect Changes - uses: dorny/paths-filter@v3 - id: changes - with: - filters: ".github/file-filter.yml" - - self: - name: Georgia Tech | Phoenix (NVHPC) - if: github.repository == 'MFlowCode/MFC' && needs.file-changes.outputs.checkall == 'true' - needs: file-changes - strategy: - matrix: - device: ['cpu', 'gpu'] - runs-on: - group: phoenix - labels: gt - timeout-minutes: 1400 - env: - ACTIONS_RUNNER_FORCE_ACTIONS_NODE_VERSION: node16 - ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION: true - steps: - - name: Clone - PR - uses: actions/checkout@v4 - with: - path: pr - - - name: Clone - Master - uses: actions/checkout@v4 - with: - repository: MFlowCode/MFC - ref: master - path: master - - - name: Bench (Master v. PR) - run: | - (cd pr && bash .github/workflows/phoenix/submit-bench.sh .github/workflows/phoenix/bench.sh ${{ matrix.device }}) & - (cd master && bash .github/workflows/phoenix/submit-bench.sh .github/workflows/phoenix/bench.sh ${{ matrix.device }}) & - wait %1 && wait %2 - - - name: Generate & Post Comment - run: | - (cd pr && . ./mfc.sh load -c p -m g) - (cd pr && ./mfc.sh bench_diff ../master/bench-${{ matrix.device }}.yaml ../pr/bench-${{ matrix.device }}.yaml) - - - name: Archive Logs - uses: actions/upload-artifact@v4 - if: always() - with: - name: logs-${{ matrix.device }} - path: | - pr/bench-${{ matrix.device }}.* - pr/build/benchmarks/* - master/bench-${{ matrix.device }}.* - master/build/benchmarks/* diff --git a/.github/workflows/cleanliness.yml b/.github/workflows/cleanliness.yml deleted file mode 100644 index ec472dce98..0000000000 --- a/.github/workflows/cleanliness.yml +++ /dev/null @@ -1,127 +0,0 @@ -name: Cleanliness - -on: [push, pull_request, workflow_dispatch] - -jobs: - file-changes: - name: Detect File Changes - runs-on: 'ubuntu-latest' - outputs: - checkall: ${{ steps.changes.outputs.checkall }} - steps: - - name: Clone - uses: actions/checkout@v4 - - - name: Detect Changes - uses: dorny/paths-filter@v3 - id: changes - with: - filters: ".github/file-filter.yml" - - cleanliness: - name: Code Cleanliness Check - if: needs.file-changes.outputs.checkall == 'true' - needs: file-changes - runs-on: "ubuntu-latest" - env: - pr_everything: 0 - master_everything: 0 - steps: - - name: Clone - PR - uses: actions/checkout@v4 - with: - path: pr - - name: Clone - Master - uses: actions/checkout@v4 - with: - repository: MFlowCode/MFC - ref: master - path: master - - - name: Setup Ubuntu - run: | - sudo apt update -y - sudo apt install -y tar wget make cmake gcc g++ python3 python3-dev "openmpi-*" libopenmpi-dev - - - name: Build - run: | - (cd pr && /bin/bash mfc.sh build -j $(nproc) --debug 2> ../pr.txt) - (cd master && /bin/bash mfc.sh build -j $(nproc) --debug 2> ../master.txt) - sed -i '/\/pr\//d' pr.txt - sed -i '/\/master\//d' master.txt - - - name: Unused Variables Diff - continue-on-error: true - run: | - grep -F 'Wunused-variable' master.txt > mUnused.txt - grep -F 'Wunused-variable' pr.txt > prUnused.txt - diff prUnused.txt mUnused.txt - - - name: Unused Dummy Arguments Diff - continue-on-error: true - run: | - grep -F 'Wunused-dummy-argument' pr.txt > prDummy.txt - grep -F 'Wunused-dummy-argument' master.txt > mDummy.txt - diff prDummy.txt mDummy.txt - - - name: Unused Value Diff - continue-on-error: true - run: | - grep -F 'Wunused-value' pr.txt > prUnused_val.txt - grep -F 'Wunused-value' master.txt > mUnused_val.txt - diff prUnused_val.txt mUnused_val.txt - - - name: Maybe Uninitialized Variables Diff - continue-on-error: true - run: | - grep -F 'Wmaybe-uninitialized' pr.txt > prMaybe.txt - grep -F 'Wmaybe-uninitialized' master.txt > mMaybe.txt - diff prMaybe.txt mMaybe.txt - - - - name: Everything Diff - continue-on-error: true - run: | - grep '\-W' pr.txt > pr_every.txt - grep '\-W' master.txt > m_every.txt - diff pr_every.txt m_every.txt - - - name: List of Warnings - run: | - cat pr_every.txt - - - - name: Summary - continue-on-error: true - run: | - pr_variable=$(grep -c -F 'Wunused-variable' pr.txt) - pr_argument=$(grep -c -F 'Wunused-dummy-argument' pr.txt) - pr_value=$(grep -c -F 'Wunused-value' pr.txt) - pr_uninit=$(grep -c -F 'Wmaybe-uninitialized' pr.txt) - pr_everything=$(grep -c '\-W' pr.txt) - - master_variable=$(grep -c -F 'Wunused-variable' master.txt) - master_argument=$(grep -c -F 'Wunused-dummy-argument' master.txt) - master_value=$(grep -c -F 'Wunused-value' master.txt) - master_uninit=$(grep -c -F 'Wmaybe-uninitialized' master.txt) - master_everything=$(grep -c '\-W' master.txt ) - - echo "pr_everything=$pr_everything" >> $GITHUB_ENV - echo "master_everything=$master_everything" >> $GITHUB_ENV - - echo "Difference is how many warnings were added or removed from master to PR." - echo "Negative numbers are better since you are removing warnings." - echo " " - echo "Unused Variable Count: $pr_variable, Difference: $((pr_variable - master_variable))" - echo "Unused Dummy Argument: $pr_argument, Difference: $((pr_argument - master_argument))" - echo "Unused Value: $pr_value, Difference: $((pr_value - master_value))" - echo "Maybe Uninitialized: $pr_uninit, Difference: $((pr_uninit - master_uninit))" - echo "Everything: $pr_everything, Difference: $((pr_everything - master_everything))" - - - - name: Check Differences - if: env.pr_everything > env.master_everything - run: | - echo "Difference between warning count in PR is greater than in master." - - diff --git a/.github/workflows/container-image.yml b/.github/workflows/container-image.yml new file mode 100644 index 0000000000..b227b883f1 --- /dev/null +++ b/.github/workflows/container-image.yml @@ -0,0 +1,55 @@ +name: Build Singularity Images + +on: + push: + +jobs: + Build-singularity-images: + name: Build Singularity Images + runs-on: ubuntu-latest + steps: + - name: Clone - PR + uses: actions/checkout@v4 + with: + path: pr + + - name: Build & Store Images + run: | + sudo apt-get update + sudo apt-get install -y software-properties-common openssh-client + sudo add-apt-repository -y ppa:apptainer/ppa + sudo apt-get install -y apptainer + sudo apptainer config fakeroot --enable $(whoami) + + (cd pr/.github/workflows/images && sudo apptainer build mfc_cpu.sif Singularity.cpu) + scp pr/.github/workflows/images/mfc_cpu.sif ${{secrets.SSH_USER}}:MFC/mfc_cpu.sif + rm -rf pr/.github/workflows/images/mfc_cpu.sif + + (cd pr/.github/workflows/images && sudo apptainer build mfc_cpu_bench.sif Singularity.cpu_bench) + scp pr/.github/workflows/images/mfc_cpu_bench.sif ${{secrets.SSH_USER}}:MFC/mfc_cpu_bench.sif + rm -rf pr/.github/workflows/images/mfc_cpu_bench.sif + + (cd pr/.github/workflows/images && sudo apptainer build mfc_gpu.sif Singularity.gpu) + scp pr/.github/workflows/images/mfc_gpu.sif ${{secrets.SSH_USER}}:MFC/mfc_gpu.sif + rm -rf pr/.github/workflows/images/mfc_gpu.sif + + (cd pr/.github/workflows/images && sudo apptainer build mfc_gpu_bench.sif Singularity.gpu_bench) + scp pr/.github/workflows/images/mfc_gpu_bench.sif ${{secrets.SSH_USER}}:MFC/mfc_gpu_bench.sif + rm -rf pr/.github/workflows/images/mfc_gpu_bench.sif + + - name: Test Images + run: | + ssh ${{secrets.SSH_USER}} " + condor_submit MFC/mfc_cpu.sub + condor_submit MFC/mfc_cpu_bench.sub + condor_submit MFC/mfc_gpu.sub + condor_submit MFC/mfc_gpu_bench.sub + " + + - name: Upload images as artifacts + uses: actions/upload-artifact@v4 + if: always() + with: + name: singularity-images + path: | + pr/.github/workflows/images/* \ No newline at end of file diff --git a/.github/workflows/coverage.yml b/.github/workflows/coverage.yml deleted file mode 100644 index 7487d8e550..0000000000 --- a/.github/workflows/coverage.yml +++ /dev/null @@ -1,48 +0,0 @@ -name: Coverage Check - -on: [push, pull_request, workflow_dispatch] - -jobs: - file-changes: - name: Detect File Changes - runs-on: 'ubuntu-latest' - outputs: - checkall: ${{ steps.changes.outputs.checkall }} - steps: - - name: Clone - uses: actions/checkout@v4 - - - name: Detect Changes - uses: dorny/paths-filter@v3 - id: changes - with: - filters: ".github/file-filter.yml" - - run: - name: Coverage Test on CodeCov - if: needs.file-changes.outputs.checkall == 'true' - needs: file-changes - runs-on: "ubuntu-latest" - steps: - - name: Checkouts - uses: actions/checkout@v4 - - - name: Setup Ubuntu - run: | - sudo apt update -y - sudo apt install -y tar wget make cmake gcc g++ python3 python3-dev "openmpi-*" libopenmpi-dev - - - name: Build - run: /bin/bash mfc.sh build -j $(nproc) --gcov - - - name: Test - run: /bin/bash mfc.sh test -a -j $(nproc) - - - name: Upload coverage reports to Codecov - uses: codecov/codecov-action@v4 - with: - fail_ci_if_error: false - verbose: true - env: - CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} - diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml deleted file mode 100644 index d161d80342..0000000000 --- a/.github/workflows/docs.yml +++ /dev/null @@ -1,76 +0,0 @@ -name: Documentation - -on: - schedule: - - cron: '0 0 * * *' # This runs every day at midnight UTC - workflow_dispatch: - push: - pull_request: - -jobs: - docs: - name: Build & Publish - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@v4 - - # We build doxygen from source because of - # https://github.com/doxygen/doxygen/issues/9016 - - name: Build Doxygen - run: | - sudo apt update -y - sudo apt install -y cmake ninja-build graphviz graphviz - git clone https://github.com/doxygen/doxygen.git ../doxygen - cd ../doxygen - git checkout 26b5403 - cd - - cmake -S ../doxygen -B ../doxygen/build -G Ninja - sudo ninja -C ../doxygen/build install - - - name: Build Documentation - run: | - pip3 install fypp - cmake -S . -B build -G Ninja --install-prefix=$(pwd)/build/install -D MFC_DOCUMENTATION=ON - ninja -C build install - - # From here https://github.com/cicirello/generate-sitemap - - name: Generate the sitemap - id: sitemap - uses: cicirello/generate-sitemap@v1 - with: - base-url-path: https://mflowcode.github.io/ - path-to-root: build/install/docs/mfc - include-pdf: false - sitemap-format: txt - - - name: Output stats - run: | - echo "sitemap-path = ${{ steps.sitemap.outputs.sitemap-path }}" - echo "url-count = ${{ steps.sitemap.outputs.url-count }}" - echo "excluded-count = ${{ steps.sitemap.outputs.excluded-count }}" - - - name: Linkcheck - Lychee - uses: lycheeverse/lychee-action@v2 - with: - args: -c .lychee.toml build/install/docs/mfc/ - fail: false - - - name: Publish Documentation - if: github.repository == 'MFlowCode/MFC' && github.ref == 'refs/heads/master' && (github.event_name == 'schedule' || github.event_name == 'workflow_dispatch' ) - run: | - set +e - git ls-remote "${{ secrets.DOC_PUSH_URL }}" -q - if [ "$?" -ne "0" ]; then exit 0; fi - set -e - git config --global user.name 'MFC Action' - git config --global user.email '<>' - git clone "${{ secrets.DOC_PUSH_URL }}" ../www - rm -rf ../www/* - mv build/install/docs/mfc/* ../www/ - git -C ../www add -A - git -C ../www commit -m "Docs @ ${GITHUB_SHA::7}" || true - git -C ../www push - -# DOC_PUSH_URL should be of the format: -# --> https://:@github.com// diff --git a/.github/workflows/formatting.yml b/.github/workflows/formatting.yml deleted file mode 100644 index 16043daa95..0000000000 --- a/.github/workflows/formatting.yml +++ /dev/null @@ -1,19 +0,0 @@ -name: Pretty - -on: [push, pull_request, workflow_dispatch] - -jobs: - docs: - name: Formatting - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@v4 - - - name: MFC Python setup - run: ./mfc.sh init - - - name: Check formatting - run: | - ./mfc.sh format -j $(nproc) - git diff --exit-code diff --git a/.github/workflows/frontier/build.sh b/.github/workflows/frontier/build.sh deleted file mode 100644 index 4aa0ffe64e..0000000000 --- a/.github/workflows/frontier/build.sh +++ /dev/null @@ -1,9 +0,0 @@ -#!/bin/bash - -build_opts="" -if [ "$1" == "gpu" ]; then - build_opts="--gpu" -fi - -. ./mfc.sh load -c f -m g -./mfc.sh test --dry-run -j 8 $build_opts diff --git a/.github/workflows/frontier/submit.sh b/.github/workflows/frontier/submit.sh deleted file mode 100644 index 831b6d46e0..0000000000 --- a/.github/workflows/frontier/submit.sh +++ /dev/null @@ -1,56 +0,0 @@ -#!/bin/bash - -set -e - -usage() { - echo "Usage: $0 [script.sh] [cpu|gpu]" -} - -if [ ! -z "$1" ]; then - sbatch_script_contents=`cat $1` -else - usage - exit 1 -fi - -if [ "$2" == "cpu" ]; then - sbatch_device_opts="\ -#SBATCH -n 32 # Number of cores required" -elif [ "$2" == "gpu" ]; then - sbatch_device_opts="\ -#SBATCH -n 8 # Number of cores required" -else - usage - exit 1 -fi - - -job_slug="`basename "$1" | sed 's/\.sh$//' | sed 's/[^a-zA-Z0-9]/-/g'`-$2" - -sbatch < +gpus_minimum_capability = 7.0 +gpus_minimum_memory = 40000 + +queue 1 \ No newline at end of file diff --git a/.github/workflows/images/mfc_gpu_bench.sub b/.github/workflows/images/mfc_gpu_bench.sub new file mode 100644 index 0000000000..7187b965b6 --- /dev/null +++ b/.github/workflows/images/mfc_gpu_bench.sub @@ -0,0 +1,21 @@ +# mfc_gpu_bench.sub + +executable = mfc_test.sh 'mfc_cpu.sif' 'cd /opt/MFC && ./mfc.sh test -a --gpu' +arguments = $(Process) + +log = mfc_gpu_bench_$(Cluster)_$(Process).log +error = mfc_gpu_bench_$(Cluster)_$(Process).err +output = mfc_gpu_bench_$(Cluster)_$(Process).out + ++JobDurationCategory = "Medium" + +requirements = (OSGVO_OS_STRING == "Ubuntu 22") +request_cpus = 4 +request_gpus = 4 +request_memory = 16GB +request_disk = 32GB +gpus_minimum_memory = +gpus_minimum_capability = 7.0 +gpus_minimum_memory = 40000 + +queue 1 \ No newline at end of file diff --git a/.github/workflows/images/mfc_test.sh b/.github/workflows/images/mfc_test.sh new file mode 100644 index 0000000000..f1a778d914 --- /dev/null +++ b/.github/workflows/images/mfc_test.sh @@ -0,0 +1,24 @@ +#!/bin/bash + +# Exit on any error +set -ex + +# apptainer run --fakeroot MFC/mfc_cpu.sif test -a --no-build + +CONTAINER_IMAGE="$1" +EXEC_COMMAND="$2" + +if [[ ! -f "$CONTAINER_IMAGE" ]]; then + echo "Error: Container image '$CONTAINER_IMAGE' not found!" >&2 + exit 1 +fi + +echo "Container: $CONTAINER_IMAGE" +echo "Command: $EXEC_COMMAND" + +if apptainer exec --fakeroot --writable-tmpfs "$CONTAINER_IMAGE" /bin/bash -c "$EXEC_COMMAND"; then + echo "Tests completed successfully!" +else + echo "Tests failed with exit code $?" >&2 + exit 1 +fi \ No newline at end of file diff --git a/.github/workflows/line-count.yml b/.github/workflows/line-count.yml deleted file mode 100644 index 4cc6014e08..0000000000 --- a/.github/workflows/line-count.yml +++ /dev/null @@ -1,54 +0,0 @@ -name: Lines of Code - -on: [push, pull_request, workflow_dispatch] - -jobs: - file-changes: - name: Detect File Changes - runs-on: 'ubuntu-latest' - outputs: - checkall: ${{ steps.changes.outputs.checkall }} - steps: - - name: Clone - uses: actions/checkout@v4 - - - name: Detect Changes - uses: dorny/paths-filter@v3 - id: changes - with: - filters: ".github/file-filter.yml" - - sz: - name: Core MFC Line Difference - if: needs.file-changes.outputs.checkall == 'true' - needs: file-changes - permissions: - contents: read - pull-requests: write - runs-on: ubuntu-latest - steps: - - name: Checkout code from PR branch - uses: actions/checkout@v4 - with: - path: pr - - - name: Checkout code from MFC master - uses: actions/checkout@v4 - with: - repository: ${{ github.event.pull_request.repository }} - ref: ${{ github.event.pull_request.base.ref }} - path: base - # repository: MFlowCode/MFC - # ref: master - # path: base - - - name: Get Line Diff - run: | - BASE="$GITHUB_WORKSPACE/base" - PR="$GITHUB_WORKSPACE/pr" - cd $BASE - export MFC_PR=$PR - pwd - ./mfc.sh init &> tmp.txt - ./mfc.sh count_diff - diff --git a/.github/workflows/lint-source.yml b/.github/workflows/lint-source.yml deleted file mode 100644 index f9f88228e7..0000000000 --- a/.github/workflows/lint-source.yml +++ /dev/null @@ -1,51 +0,0 @@ -name: Lint Source - -on: [push, pull_request, workflow_dispatch] - -jobs: - file-changes: - name: Detect File Changes - runs-on: 'ubuntu-latest' - outputs: - checkall: ${{ steps.changes.outputs.checkall }} - steps: - - name: Clone - uses: actions/checkout@v4 - - - name: Detect Changes - uses: dorny/paths-filter@v3 - id: changes - with: - filters: ".github/file-filter.yml" - - lint-source: - name: Lint Source - runs-on: 'ubuntu-latest' - - steps: - - uses: actions/checkout@v4 - - - name: Initialize MFC - run: ./mfc.sh init - - - name: Lint the full source - run: | - source build/venv/bin/activate - find ./src -type f -not -name '*nvtx*' -exec sh -c 'fortitude check "$1" | grep -v E001' _ {} \; - find ./src -type f -not -name '*nvtx*' -exec sh -c 'fortitude check "$1" | grep -v E001' _ {} \; | wc -l | xargs -I{} sh -c '[ {} -gt 0 ] && exit 1 || exit 0' - - - name: No double precision intrinsics - run: | - ! grep -iR 'double_precision\|dsqrt\|dexp\|dlog\|dble\|dabs\|double\ precision\|real(8)\|real(4)\|dprod\|dmin\|dmax\|dfloat\|dreal\|dcos\|dsin\|dtan\|dsign\|dtanh\|dsinh\|dcosh\|d0' --exclude-dir=syscheck --exclude="*nvtx*" --exclude="*precision_select*" ./src/* - - - name: Looking for junk code - run: | - ! grep -iR -e '\.\.\.' -e '\-\-\-' -e '===' ./src/* - - - name: Looking for junk comments in examples - run: | - ! grep -R '# ===' ./benchmarks **/*.py - ! grep -R '# ===' ./examples/**/*.py - ! grep -R '===' ./benchmarks/**/*.py - ! grep -R '===' ./examples/**/*.py - diff --git a/.github/workflows/lint-toolchain.yml b/.github/workflows/lint-toolchain.yml deleted file mode 100644 index 45b3604ed1..0000000000 --- a/.github/workflows/lint-toolchain.yml +++ /dev/null @@ -1,17 +0,0 @@ -name: Lint Toolchain - -on: [push, pull_request, workflow_dispatch] - -jobs: - lint-toolchain: - name: Lint Toolchain - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@v4 - - - name: MFC Python setup - run: ./mfc.sh init - - - name: Lint the toolchain - run: ./mfc.sh lint diff --git a/.github/workflows/phoenix/bench.sh b/.github/workflows/phoenix/bench.sh deleted file mode 100644 index 8812e00e3b..0000000000 --- a/.github/workflows/phoenix/bench.sh +++ /dev/null @@ -1,20 +0,0 @@ -#!/bin/bash - -n_ranks=12 - -if [ "$job_device" == "gpu" ]; then - n_ranks=$(nvidia-smi -L | wc -l) # number of GPUs on node - gpu_ids=$(seq -s ' ' 0 $(($n_ranks-1))) # 0,1,2,...,gpu_count-1 - device_opts="--gpu -g $gpu_ids" -fi - -mkdir -p /storage/scratch1/6/sbryngelson3/mytmp_build -export TMPDIR=/storage/scratch1/6/sbryngelson3/mytmp_build - -if ["$job_device" == "gpu"]; then - ./mfc.sh bench --mem 12 -j $(nproc) -o "$job_slug.yaml" -- -c phoenix-bench $device_opts -n $n_ranks -else - ./mfc.sh bench --mem 1 -j $(nproc) -o "$job_slug.yaml" -- -c phoenix-bench $device_opts -n $n_ranks -fi - -unset TMPDIR diff --git a/.github/workflows/phoenix/submit-bench.sh b/.github/workflows/phoenix/submit-bench.sh deleted file mode 100644 index 6fba086b6e..0000000000 --- a/.github/workflows/phoenix/submit-bench.sh +++ /dev/null @@ -1,64 +0,0 @@ -#!/bin/bash - -set -e - -usage() { - echo "Usage: $0 [script.sh] [cpu|gpu]" -} - -if [ ! -z "$1" ]; then - sbatch_script_contents=`cat $1` -else - usage - exit 1 -fi - -sbatch_cpu_opts="\ -#SBATCH -p cpu-small # partition -#SBATCH --ntasks-per-node=24 # Number of cores per node required -#SBATCH --mem-per-cpu=2G # Memory per core\ -" - -sbatch_gpu_opts="\ -#SBATCH -CL40S -#SBATCH --ntasks-per-node=4 # Number of cores per node required -#SBATCH -G2\ -" - -if [ "$2" == "cpu" ]; then - sbatch_device_opts="$sbatch_cpu_opts" -elif [ "$2" == "gpu" ]; then - sbatch_device_opts="$sbatch_gpu_opts" -else - usage - exit 1 -fi - -job_slug="`basename "$1" | sed 's/\.sh$//' | sed 's/[^a-zA-Z0-9]/-/g'`-$2" - -sbatch <> $GITHUB_ENV - echo "BOOST_INCLUDE=/opt/homebrew/include/" >> $GITHUB_ENV - - - name: Setup Ubuntu - if: matrix.os == 'ubuntu' && matrix.intel == false - run: | - sudo apt update -y - sudo apt install -y cmake gcc g++ python3 python3-dev hdf5-tools \ - libfftw3-dev libhdf5-dev openmpi-bin libopenmpi-dev - - - name: Setup Ubuntu (Intel) - if: matrix.os == 'ubuntu' && matrix.intel == true - run: | - wget https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB - sudo apt-key add GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB - sudo add-apt-repository "deb https://apt.repos.intel.com/oneapi all main" - sudo apt-get update - sudo apt-get install -y intel-oneapi-compiler-fortran intel-oneapi-mpi intel-oneapi-mpi-devel - source /opt/intel/oneapi/setvars.sh - printenv >> $GITHUB_ENV - - - - name: Build - run: | - /bin/bash mfc.sh test --dry-run -j $(nproc) --${{ matrix.debug }} --${{ matrix.mpi }} --${{ matrix.precision }} - - - name: Test - run: | - /bin/bash mfc.sh test --max-attempts 3 -j $(nproc) $OPT1 $OPT2 - env: - OPT1: ${{ matrix.mpi == 'mpi' && '--test-all' || '' }} - OPT2: ${{ matrix.debug == 'debug' && '-% 20' || '' }} - - self: - name: Self Hosted - if: github.repository == 'MFlowCode/MFC' && needs.file-changes.outputs.checkall == 'true' - needs: file-changes - continue-on-error: false - timeout-minutes: 1400 - strategy: - matrix: - device: ['cpu', 'gpu'] - lbl: ['gt', 'frontier'] - runs-on: - group: phoenix - labels: ${{ matrix.lbl }} - env: - ACTIONS_RUNNER_FORCE_ACTIONS_NODE_VERSION: node16 - ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION: true - steps: - - name: Clone - uses: actions/checkout@v4 - - - name: Build & Test - if: matrix.lbl == 'gt' - run: bash .github/workflows/phoenix/submit.sh .github/workflows/phoenix/test.sh ${{ matrix.device }} - - - name: Build - if: matrix.lbl == 'frontier' - run: bash .github/workflows/frontier/build.sh ${{ matrix.device }} - - - name: Test - if: matrix.lbl == 'frontier' - run: bash .github/workflows/frontier/submit.sh .github/workflows/frontier/test.sh ${{matrix.device}} - - - name: Print Logs - if: always() - run: cat test-${{ matrix.device }}.out - - - name: Archive Logs - uses: actions/upload-artifact@v4 - if: always() - with: - name: logs-${{ strategy.job-index }}-${{ matrix.device }} - path: test-${{ matrix.device }}.out