Skip to content

Exodiff changeset modifications #2216

Exodiff changeset modifications

Exodiff changeset modifications #2216

Workflow file for this run

# This is a basic workflow to help you get started with Actions
name: SEACAS Variant builds
# Controls when the action will run. Triggers the workflow on push
on:
push:
branches:
- master
pull_request:
branches:
- master
concurrency:
group: ${{ github.workflow}}-${{ github.head_ref }}
cancel-in-progress: true
permissions:
contents: read
jobs:
build-deps:
runs-on: ubuntu-latest
strategy:
matrix:
compiler: [ gnu, clang, mpi ]
hdf5: [ V114 ]
netcdf: [ 4.9.2 ]
cgns: [ 4.4.0 ]
steps:
- name: Harden Runner
uses: step-security/harden-runner@0080882f6c36860b6ba35c610c98ce87d4e2f26f # v2.10.2
with:
egress-policy: audit
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- name: Install System dependencies
shell: bash -l {0}
run: sudo apt update && sudo apt install -y libaec-dev zlib1g-dev automake autoconf libcurl4-openssl-dev libjpeg-dev wget curl bzip2 m4 flex bison cmake libzip-dev openmpi-bin libopenmpi-dev libboost-all-dev
###
# Installing TPL
###
- name: Cache TPL-${{ matrix.compiler }}-${{ matrix.hdf5 }}-${{ matrix.netcdf }}-${{ matrix.cgns }}
id: cache-TPL-mpi
uses: actions/cache@6849a6489940f00c2f30c0fb92c6274307ccb58a # v4.1.2
with:
path: ~/environments/${{ matrix.compiler }}-${{ matrix.hdf5 }}-${{ matrix.netcdf }}-${{ matrix.cgns }}
key: TPL-v2-${{ runner.os }}-${{ matrix.compiler }}-${{ matrix.hdf5 }}-${{ matrix.netcdf }}-${{ matrix.cgns }}
- name: Build TPL-${{ matrix.compiler }}-${{ matrix.hdf5 }}-${{ matrix.netcdf }}-${{ matrix.cgns }}
if: steps.cache-TPL.outputs.cache-hit != 'true'
run: |
set -x
COMPILER=${{ matrix.compiler }} H5VERSION=${{ matrix.hdf5}} GNU_PARALLEL=OFF INSTALL_PATH=${HOME}/environments/${{ matrix.compiler }}-${{ matrix.hdf5 }}-${{ matrix.netcdf }}-${{ matrix.cgns }} ./install-tpl.sh
ls ${HOME} && ls ${HOME}/environments && ls ${HOME}/environments/${{ matrix.compiler }}-${{ matrix.hdf5 }}-${{ matrix.netcdf }}-${{ matrix.cgns }} && ls ${HOME}/environments/${{ matrix.compiler }}-${{ matrix.hdf5 }}-${{ matrix.netcdf }}-${{ matrix.cgns }}/lib
build:
needs: build-deps
# The type of runner that the job will run on
name: ${{ matrix.config.name }}
runs-on: ${{ matrix.config.os }}
strategy:
fail-fast: false
matrix:
hdf5: [ V114 ]
netcdf: [ 4.9.2 ]
cgns: [ 4.4.0 ]
config:
- {
name: "Debug serial build",
os: ubuntu-latest,
compiler: "gnu",
debug: "YES",
threadsafe: "NO",
fortran: "YES",
use_kokkos: "NO",
use_adios2: "NO",
use_faodel: "NO",
use_metis: "NO",
use_catalyst2: "NO",
gtest: "NO",
extra: "",
extra_args: "",
sanitizer: "NO" # address, integer, thread, memory, undefined
}
- {
name: "Debug parallel build",
os: ubuntu-latest,
compiler: "mpi",
debug: "YES",
threadsafe: "NO",
fortran: "YES",
use_kokkos: "NO",
use_adios2: "NO",
use_faodel: "NO",
use_metis: "NO",
use_catalyst2: "NO",
gtest: "NO",
extra: "",
extra_args: "",
sanitizer: "NO" # address, integer, thread, memory, undefined
}
- {
name: "Threadsafe ON, No Fortran",
os: ubuntu-latest,
compiler: "gnu",
debug: "YES",
threadsafe: "YES",
fortran: "NO",
use_kokkos: "NO",
use_adios2: "NO",
use_faodel: "NO",
use_metis: "NO",
use_catalyst2: "NO",
gtest: "NO",
extra: "",
extra_args: "",
sanitizer: "thread" # address, integer, thread, memory, undefined
}
- {
name: "Threadsafe ON, Parallel, No Fortran",
os: ubuntu-latest,
compiler: "mpi",
debug: "YES",
threadsafe: "YES",
fortran: "NO",
use_kokkos: "NO",
use_adios2: "NO",
use_faodel: "NO",
use_metis: "NO",
use_catalyst2: "NO",
gtest: "NO",
extra: "",
extra_args: "",
sanitizer: "thread" # address, integer, thread, memory, undefined
}
- {
name: "Sanitize address, no fortran",
os: ubuntu-latest,
compiler: "clang",
debug: "YES",
threadsafe: "NO",
fortran: "NO",
use_kokkos: "NO",
use_adios2: "NO",
use_faodel: "NO",
use_metis: "NO",
use_catalyst2: "NO",
gtest: "NO",
extra: "",
extra_args: "",
sanitizer: "address" # address, integer, thread, memory, undefined
}
- {
name: "Sanitize undefined",
os: ubuntu-latest,
compiler: "clang",
debug: "YES",
threadsafe: "NO",
fortran: "YES",
use_kokkos: "NO",
use_adios2: "NO",
use_faodel: "NO",
use_metis: "NO",
use_catalyst2: "NO",
gtest: "NO",
extra: "",
extra_args: "",
sanitizer: "undefined" # address, integer, thread, memory, undefined
}
- {
name: "Sanitize integer",
os: ubuntu-latest,
compiler: "clang",
debug: "YES",
threadsafe: "NO",
fortran: "NO",
use_kokkos: "NO",
use_adios2: "NO",
use_faodel: "NO",
use_metis: "NO",
use_catalyst2: "NO",
gtest: "NO",
extra: "",
extra_args: "",
sanitizer: "integer" # address, integer, thread, memory, undefined
}
- {
name: "GTest Enabled",
os: ubuntu-latest,
compiler: "gnu",
debug: "YES",
threadsafe: "NO",
fortran: "YES",
use_kokkos: "NO",
use_adios2: "NO",
use_faodel: "NO",
use_metis: "NO",
use_catalyst2: "NO",
gtest: "YES",
extra: "",
extra_args: "",
sanitizer: "NO" # address, integer, thread, memory, undefined
}
- {
name: "No applications, legacy, or fortran",
os: ubuntu-latest,
compiler: "clang",
debug: "NO",
threadsafe: "NO",
fortran: "NO",
use_kokkos: "NO",
use_adios2: "NO",
use_faodel: "NO",
use_metis: "NO",
use_catalyst2: "NO",
gtest: "NO",
extra: "APPLICATIONS=NO LEGACY=NO",
extra_args: "",
sanitizer: "NO" # address, integer, thread, memory, undefined
}
- {
name: "CATALYST2, parallel",
os: ubuntu-latest,
compiler: "mpi",
debug: "NO",
threadsafe: "NO",
fortran: "YES",
use_kokkos: "NO",
use_adios2: "NO",
use_faodel: "NO",
use_metis: "NO",
use_catalyst2: "YES",
gtest: "YES",
extra: "",
extra_args: "",
sanitizer: "NO" # address, integer, thread, memory, undefined
}
- {
name: "KOKKOS, parallel",
os: ubuntu-latest,
compiler: "mpi",
debug: "NO",
threadsafe: "NO",
fortran: "YES",
use_kokkos: "YES",
use_adios2: "NO",
use_faodel: "NO",
use_metis: "NO",
use_catalyst2: "NO",
gtest: "NO",
extra: "",
extra_args: "",
sanitizer: "NO" # address, integer, thread, memory, undefined
}
- {
name: "No deprecated exodus functions",
os: ubuntu-latest,
compiler: "mpi",
debug: "NO",
threadsafe: "NO",
fortran: "YES",
use_kokkos: "NO",
use_adios2: "NO",
use_faodel: "NO",
use_metis: "NO",
use_catalyst2: "NO",
gtest: "NO",
extra: "OMIT_DEPRECATED=YES",
extra_args: "",
sanitizer: "NO" # address, integer, thread, memory, undefined
}
- {
name: "Use modern CMake configure of netCDF and HDF5 packages with GTest",
os: ubuntu-latest,
compiler: "mpi",
debug: "NO",
threadsafe: "NO",
fortran: "YES",
use_kokkos: "NO",
use_adios2: "NO",
use_faodel: "NO",
use_metis: "NO",
use_catalyst2: "NO",
gtest: "YES",
extra: "MODERN=YES",
extra_args: "",
sanitizer: "NO" # address, integer, thread, memory, undefined
}
- {
name: "ADIOS2 enabled",
os: ubuntu-latest,
compiler: "mpi",
debug: "NO",
threadsafe: "NO",
fortran: "YES",
use_kokkos: "NO",
use_adios2: "YES",
use_faodel: "NO",
use_metis: "NO",
use_catalyst2: "NO",
gtest: "YES",
extra: "",
extra_args: "",
sanitizer: "NO" # address, integer, thread, memory, undefined
}
- {
name: "FAODEL and METIS enabled",
os: ubuntu-latest,
compiler: "mpi",
debug: "NO",
threadsafe: "NO",
fortran: "YES",
use_kokkos: "NO",
use_adios2: "NO",
use_faodel: "YES",
use_metis: "YES",
use_catalyst2: "NO",
gtest: "YES",
extra: "",
extra_args: "",
sanitizer: "NO" # address, integer, thread, memory, undefined
}
- {
name: "C++20 build serial clang",
os: ubuntu-latest,
compiler: "clang",
debug: "NO",
threadsafe: "NO",
fortran: "YES",
use_kokkos: "NO",
use_adios2: "NO",
use_faodel: "NO",
use_metis: "NO",
use_catalyst2: "NO",
gtest: "NO",
extra: "",
extra_args: "-DCMAKE_CXX_STANDARD:STRING=20",
sanitizer: "NO" # address, integer, thread, memory, undefined
}
- {
name: "C++20 build serial gnu",
os: ubuntu-latest,
compiler: "gnu",
debug: "NO",
threadsafe: "NO",
fortran: "YES",
use_kokkos: "NO",
use_adios2: "NO",
use_faodel: "NO",
use_metis: "NO",
use_catalyst2: "NO",
gtest: "NO",
extra: "",
extra_args: "-DCMAKE_CXX_STANDARD:STRING=20",
sanitizer: "NO" # address, integer, thread, memory, undefined
}
- {
name: "C++20 build parallel",
os: ubuntu-latest,
compiler: "mpi",
debug: "NO",
threadsafe: "NO",
fortran: "YES",
use_kokkos: "NO",
use_adios2: "NO",
use_faodel: "NO",
use_metis: "NO",
use_catalyst2: "NO",
gtest: "NO",
extra: "",
extra_args: "-DCMAKE_CXX_STANDARD:STRING=20",
sanitizer: "NO" # address, integer, thread, memory, undefined
}
steps:
- name: Harden Runner
uses: step-security/harden-runner@0080882f6c36860b6ba35c610c98ce87d4e2f26f # v2.10.2
with:
egress-policy: audit
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- name: Install System dependencies
shell: bash -l {0}
run: sudo apt update && sudo apt install -y libaec-dev zlib1g-dev automake autoconf libcurl4-openssl-dev libjpeg-dev wget curl bzip2 m4 flex bison cmake libzip-dev openmpi-bin libopenmpi-dev libboost-all-dev
- name: Fetch TPL Cache
id: cache-TPL
uses: actions/cache@6849a6489940f00c2f30c0fb92c6274307ccb58a # v4.1.2
with:
path: ~/environments/${{ matrix.config.compiler }}-${{ matrix.hdf5 }}-${{ matrix.netcdf }}-${{ matrix.cgns }}
key: TPL-v2-${{ runner.os }}-${{ matrix.config.compiler }}-${{ matrix.hdf5 }}-${{ matrix.netcdf }}-${{ matrix.cgns }}
- name: Check Cache
shell: bash -l {0}
run: ls ${HOME} && ls ${HOME}/environments && ls ${HOME}/environments/${{ matrix.config.compiler }}-${{ matrix.hdf5 }}-${{ matrix.netcdf }}-${{ matrix.cgns }} && ls ${HOME}/environments/${{ matrix.config.compiler }}-${{ matrix.hdf5 }}-${{ matrix.netcdf }}-${{ matrix.cgns }}/lib
- name: install additional TPL
if: ${{ matrix.config.use_kokkos == 'YES' || matrix.config.use_adios2 == 'YES' || matrix.config.gtest == 'YES' || matrix.config.use_faodel == 'YES' || matrix.config.use_catalyst == 'YES' || matrix.config.use_metis == 'YES' }}
run: |
set -x
COMPILER=${{ matrix.config.compiler }} KOKKOS=${{ matrix.config.use_kokkos }} ADIOS2=${{ matrix.config.use_adios2 }} CATALYST2=${{ matrix.config.use_catalyst2 }} FAODEL=${{ matrix.config.use_faodel }} METIS=${{ matrix.config.use_metis }} GNU_PARALLEL=OFF GTEST=${{ matrix.config.gtest }} INSTALL_PATH=${HOME}/environments/${{ matrix.config.compiler }}-${{ matrix.hdf5 }}-${{ matrix.netcdf }}-${{ matrix.cgns }} ./install-tpl.sh
ls ${HOME} && ls ${HOME}/environments && ls ${HOME}/environments/${{ matrix.config.compiler }}-${{ matrix.hdf5 }}-${{ matrix.netcdf }}-${{ matrix.cgns }} && ls ${HOME}/environments/${{ matrix.config.compiler }}-${{ matrix.hdf5 }}-${{ matrix.netcdf }}-${{ matrix.cgns }}/lib
###
# Configure and build
###
- name: Run cmake
shell: bash -l {0}
run: |
echo $HOME
mkdir build
cd build
NUMPROCS=2 ${{ matrix.config.extra }} THREADSAFE=${{ matrix.config.threadsafe }} DEBUG=${{ matrix.config.debug }} FORTRAN=${{ matrix.config.fortran }} SANITIZER=${{ matrix.config.sanitizer }} COMPILER=${{ matrix.config.compiler }} INSTALL_PATH=${HOME}/environments/${{ matrix.config.compiler }}-${{ matrix.hdf5 }}-${{ matrix.netcdf }}-${{ matrix.cgns }} bash ../cmake-config ${{ matrix.config.extra_args }}
- name: Build
shell: bash -l {0}
run: |
cd build
make -j 4
if: ${{ success() }}
- name: Install
shell: bash -l {0}
run: |
cd build
make -j 4 install
if: ${{ success() }}
- name: Run Non-sanitized Tests
shell: bash -l {0}
run: |
cd build
ctest -j 4 --output-on-failure
if: ${{ success() && matrix.config.sanitizer == 'NO' && matrix.config.threadsafe == 'NO' }}
- name: Run sanitized/threadsafe Tests
shell: bash -l {0}
run: |
cd build
sudo sysctl vm.mmap_rnd_bits=28
ctest -j 4 --output-on-failure --exclude-regex test_exo
if: ${{ success() && (matrix.config.sanitizer != 'NO' || matrix.config.threadsafe != 'NO') }}