Skip to content

Flow Probes

Flow Probes #1462

Workflow file for this run

name: PelePhysics-CI
on:
workflow_dispatch:
push:
branches: [development]
pull_request:
branches: [development]
concurrency:
group: ${{github.ref}}-${{github.head_ref}}-ci
cancel-in-progress: true
jobs:
Formatting:
runs-on: ubuntu-latest
steps:
- name: Clone
uses: actions/checkout@v4
- name: Check formatting
uses: DoozyX/[email protected]
with:
source: './Source ./Testing ./Mechanisms'
exclude: '.'
extensions: 'H,h,cpp'
clangFormatVersion: 18
Codespell:
needs: Formatting
runs-on: ubuntu-latest
steps:
- name: Clone
uses: actions/checkout@v4
with:
submodules: false
- name: Python
uses: actions/setup-python@v5
with:
python-version: '3.11'
- name: Dependencies
run: |
# Install Python packages
python -m pip install --upgrade pip
pip install codespell
- name: Run codespell
run: codespell
CEPTR:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
python-version: ['3.10', '3.11']
poetry-version: ['1.4.2']
defaults:
run:
working-directory: ${{github.workspace}}/Support/ceptr
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: ${{matrix.python-version}}
- name: Run image
uses: abatilo/[email protected]
with:
poetry-version: ${{matrix.poetry-version}}
- name: Install Dependencies using Poetry
run: poetry install
- name: Formatting with black
run: poetry run black --check .
- name: Sort imports with isort
run: poetry run isort --check-only --diff .
- name: Lint with flake8
run: poetry run flake8 .
- name: Run tests
run: poetry run pytest
- name: Convert air mechanism
run: poetry run convert -f ${{github.workspace}}/Mechanisms/air/mechanism.yaml
- name: Convert LiDryer mechanism
run: poetry run convert -f ${{github.workspace}}/Mechanisms/LiDryer/mechanism.yaml
Transport-EOS-Reactions:
needs: Formatting
runs-on: ubuntu-20.04
strategy:
matrix:
comp: [gnu, llvm, cuda, hip, sycl]
python-version: ['3.11']
poetry-version: ['1.4.2']
include:
- comp: gnu
amrex_build_args: 'COMP=gnu'
dependency_cmds:
- comp: llvm
amrex_build_args: 'COMP=llvm'
dependency_cmds:
- comp: cuda
amrex_build_args: 'COMP=gnu USE_CUDA=TRUE'
dependency_cmds: '.github/workflows/dependencies/dependencies_cuda.sh'
- comp: hip
amrex_build_args: 'USE_HIP=TRUE AMD_ARCH=gfx90a LIBRARY_LOCATIONS=/opt/rocm/lib'
dependency_cmds: '.github/workflows/dependencies/dependencies_hip.sh'
- comp: sycl
amrex_build_args: 'USE_SYCL=TRUE'
dependency_cmds: '.github/workflows/dependencies/dependencies_dpcpp.sh'
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: ${{matrix.python-version}}
- name: Run image
uses: abatilo/[email protected]
with:
poetry-version: ${{matrix.poetry-version}}
- name: Clone PelePhysics
uses: actions/checkout@v4
with:
path: PelePhysics-${{matrix.comp}}
submodules: recursive
- name: Set Environment Variables
run: |
echo "PELE_PHYSICS_HOME=${{github.workspace}}/PelePhysics-${{matrix.comp}}" >> $GITHUB_ENV
echo "TRANSPORT_WORKING_DIRECTORY=${{github.workspace}}/PelePhysics-${{matrix.comp}}/Testing/Exec/TranEval" >> $GITHUB_ENV
echo "EOS_WORKING_DIRECTORY=${{github.workspace}}/PelePhysics-${{matrix.comp}}/Testing/Exec/EosEval" >> $GITHUB_ENV
echo "REACT_WORKING_DIRECTORY=${{github.workspace}}/PelePhysics-${{matrix.comp}}/Testing/Exec/ReactEval" >> $GITHUB_ENV
echo "IGNDELAY_WORKING_DIRECTORY=${{github.workspace}}/PelePhysics-${{matrix.comp}}/Testing/Exec/IgnitionDelay" >> $GITHUB_ENV
echo "JAC_WORKING_DIRECTORY=${{github.workspace}}/PelePhysics-${{matrix.comp}}/Testing/Exec/Jacobian" >> $GITHUB_ENV
echo "NPROCS=$(nproc)" >> $GITHUB_ENV
echo "CCACHE_COMPRESS=1" >> $GITHUB_ENV
echo "CCACHE_COMPRESSLEVEL=5" >> $GITHUB_ENV
echo "CCACHE_LOGFILE=${{github.workspace}}/ccache.log.txt" >> $GITHUB_ENV
echo "CCACHE_MAXSIZE=1G" >> $GITHUB_ENV
if [ "${{matrix.comp}}" == 'cuda' ]; then \
echo "CUDA_HOME=/usr/local/cuda-11.2" >> $GITHUB_ENV; \
echo "LD_LIBRARY_PATH=/usr/local/cuda-11.2/lib64:${LD_LIBRARY_PATH}" >> $GITHUB_ENV; \
echo "/usr/local/cuda-11.2/bin" >> $GITHUB_PATH; \
fi
- name: Install Ccache
run: |
wget https://github.com/ccache/ccache/releases/download/v4.8/ccache-4.8-linux-x86_64.tar.xz
tar xvf ccache-4.8-linux-x86_64.tar.xz
sudo cp -f ccache-4.8-linux-x86_64/ccache /usr/local/bin/
- name: Set Up Ccache
uses: actions/cache@v4
with:
path: ~/.cache/ccache
key: ccache-${{github.workflow}}-${{github.job}}-${{matrix.comp}}-git-${{github.sha}}
restore-keys: |
ccache-${{github.workflow}}-${{github.job}}-${{matrix.comp}}-git-
- name: Dependencies
working-directory: ${{env.TRANSPORT_WORKING_DIRECTORY}}
run: |
if [ "${{matrix.comp}}" == 'cuda' ]; then \
${{github.workspace}}/PelePhysics-${{matrix.comp}}/${{matrix.dependency_cmds}}; \
echo "CUDA_HOME=${CUDA_HOME}"; \
ls ${CUDA_HOME} > /dev/null; \
which nvcc || echo "nvcc not in PATH!"; \
fi
if [ "${{matrix.comp}}" == 'hip' ]; then \
${{github.workspace}}/PelePhysics-${{matrix.comp}}/${{matrix.dependency_cmds}}; \
source /etc/profile.d/rocm.sh
which hipcc || echo "hipcc not in PATH!"; \
fi
if [ "${{matrix.comp}}" == 'sycl' ]; then \
${{github.workspace}}/PelePhysics-${{matrix.comp}}/${{matrix.dependency_cmds}}; \
source /opt/intel/oneapi/setvars.sh || true
which icpx || echo "icpx not in PATH!"; \
fi
cmake --version
make TPL ${{matrix.amrex_build_args}};
if [ "${{matrix.comp}}" == 'gnu' ] || [ "${{matrix.comp}}" == 'llvm' ]; then \
make TPL DEBUG=TRUE TINY_PROFILE=TRUE ${{matrix.amrex_build_args}};
cd ${{github.workspace}}/PelePhysics-${{matrix.comp}}/Support/ceptr
poetry install
fi
- name: Test Transport
working-directory: ${{env.TRANSPORT_WORKING_DIRECTORY}}
run: |
echo "::add-matcher::${{github.workspace}}/PelePhysics-${{matrix.comp}}/.github/problem-matchers/gcc.json"
if [ "${{matrix.comp}}" == 'hip' ]; then source /etc/profile.d/rocm.sh; fi;
if [ "${{matrix.comp}}" == 'sycl' ]; then source /opt/intel/oneapi/setvars.sh || true; fi;
ccache -z
for TYPE in Constant Simple Sutherland Manifold; do \
printf "\n-------- ${TYPE} --------\n"; \
if [ "${TYPE}" == 'Manifold' ]; then EOSMODEL=Manifold; else EOSMODEL=Fuego; fi; \
if [ "${TYPE}" == 'Manifold' ]; then CHEMISTRY=Null; else CHEMISTRY=air; fi; \
if [ "${TYPE}" != 'Manifold' ] || [ "${{matrix.comp}}" != 'sycl' ]; then \
make -j ${{env.NPROCS}} Eos_Model=${EOSMODEL} Chemistry_Model=${CHEMISTRY} Transport_Model=${TYPE} TINY_PROFILE=TRUE USE_CCACHE=TRUE ${{matrix.amrex_build_args}}; \
fi; \
if [ "${{matrix.comp}}" == 'gnu' ] || [ "${{matrix.comp}}" == 'llvm' ]; then \
./Pele2d.${{matrix.comp}}.TPROF.ex inputs.2d_${TYPE}; \
if [ "${TYPE}" == 'Manifold' ]; then \
./Pele2d.${{matrix.comp}}.TPROF.ex inputs.2d_Network
fi; \
fi; \
make realclean; \
if [ $? -ne 0 ]; then exit 1; fi; \
done
- name: Transport ccache report
working-directory: ${{env.TRANSPORT_WORKING_DIRECTORY}}
run: |
ccache -s
du -hs ${HOME}/.cache/ccache
- name: Test EOS
working-directory: ${{env.EOS_WORKING_DIRECTORY}}
run: |
echo "::add-matcher::${{github.workspace}}/PelePhysics-${{matrix.comp}}/.github/problem-matchers/gcc.json"
if [ "${{matrix.comp}}" == 'hip' ]; then source /etc/profile.d/rocm.sh; fi;
if [ "${{matrix.comp}}" == 'sycl' ]; then source /opt/intel/oneapi/setvars.sh || true; fi;
ccache -z
for TYPE in Fuego GammaLaw Soave-Redlich-Kwong Manifold; do \
if [ "${TYPE}" == 'Fuego' ] || [ "${TYPE}" == 'Soave-Redlich-Kwong' ]; then CHEMISTRY=LiDryer; else CHEMISTRY=Null; fi; \
if [ "${TYPE}" == 'Soave-Redlich-Kwong' ]; then TRANSPORT=Simple; else TRANSPORT=Constant; fi; \
if [ "${TYPE}" == 'Manifold' ]; then INPUTFILE=inputs.2d.table2d; else INPUTFILE=inputs.2d; fi; \
printf "\n-------- ${TYPE} --------\n"; \
if [ "${TYPE}" != 'Manifold' ] || [ "${{matrix.comp}}" != 'sycl' ]; then \
make -j ${{env.NPROCS}} Eos_Model=${TYPE} Chemistry_Model=${CHEMISTRY} Transport_Model=${TRANSPORT} TINY_PROFILE=TRUE USE_CCACHE=TRUE ${{matrix.amrex_build_args}}; \
fi; \
if [ "${{matrix.comp}}" == 'gnu' ] || [ "${{matrix.comp}}" == 'llvm' ]; then \
./Pele2d.${{matrix.comp}}.TPROF.ex ${INPUTFILE}; \
if [ "${TYPE}" == 'Manifold' ]; then \
./Pele2d.${{matrix.comp}}.TPROF.ex inputs.2d.network
fi; \
fi; \
make realclean; \
if [ $? -ne 0 ]; then exit 1; fi; \
done
- name: EOS ccache report
working-directory: ${{env.EOS_WORKING_DIRECTORY}}
run: |
ccache -s
du -hs ${HOME}/.cache/ccache
- name: Test Integration
working-directory: ${{env.REACT_WORKING_DIRECTORY}}
run: |
echo "::add-matcher::${{github.workspace}}/PelePhysics-${{matrix.comp}}/.github/problem-matchers/gcc.json"
if [ "${{matrix.comp}}" == 'hip' ]; then source /etc/profile.d/rocm.sh; fi;
if [ "${{matrix.comp}}" == 'sycl' ]; then source /opt/intel/oneapi/setvars.sh || true; fi;
ccache -z
make -j ${{env.NPROCS}} Eos_Model=Fuego Chemistry_Model=drm19 TINY_PROFILE=TRUE USE_CCACHE=TRUE ${{matrix.amrex_build_args}}
if [ "${{matrix.comp}}" == 'gnu' ] || [ "${{matrix.comp}}" == 'llvm' ]; then \
for TYPE in Cvode Arkode RK64; do \
printf "\n-------- ${TYPE} --------\n"; \
./Pele3d.${{matrix.comp}}.TPROF.ex inputs.3d_Array4 ode.dt=1.e-05 ode.ndt=100 chem_integrator="Reactor${TYPE}"; \
./Pele3d.${{matrix.comp}}.TPROF.ex inputs.3d_1dArray ode.dt=1.e-05 ode.ndt=100 chem_integrator="Reactor${TYPE}"; \
if [ $? -ne 0 ]; then exit 1; fi; \
done \
fi;
make realclean
make -j ${{env.NPROCS}} Eos_Model=Fuego Chemistry_Model=LiDryer TINY_PROFILE=TRUE USE_CCACHE=TRUE ${{matrix.amrex_build_args}}
if [ "${{matrix.comp}}" == 'gnu' ] || [ "${{matrix.comp}}" == 'llvm' ]; then \
for TYPE in Cvode Arkode RK64; do \
printf "\n-------- ${TYPE} --------\n"; \
./Pele3d.${{matrix.comp}}.TPROF.ex inputs.3d_Array4 fuel_name=H2 ode.dt=1.e-05 ode.ndt=100 chem_integrator="Reactor${TYPE}"; \
./Pele3d.${{matrix.comp}}.TPROF.ex inputs.3d_1dArray fuel_name=H2 ode.dt=1.e-05 ode.ndt=100 chem_integrator="Reactor${TYPE}"; \
if [ $? -ne 0 ]; then exit 1; fi; \
done \
fi
make realclean
- name: Integration ccache report
working-directory: ${{env.REACT_WORKING_DIRECTORY}}
run: |
ccache -s
du -hs ${HOME}/.cache/ccache
- name: Test Ignition delay
working-directory: ${{env.IGNDELAY_WORKING_DIRECTORY}}
run: |
echo "::add-matcher::${{github.workspace}}/PelePhysics-${{matrix.comp}}/.github/problem-matchers/gcc.json"
if [ "${{matrix.comp}}" == 'gnu' ] || [ "${{matrix.comp}}" == 'llvm' ]; then \
python -m pip install --upgrade pip
pip install numpy
ccache -z
make -j ${{env.NPROCS}} Eos_Model=Fuego Chemistry_Model=dodecane_lu TINY_PROFILE=TRUE USE_CCACHE=TRUE ${{matrix.amrex_build_args}}
bash exec_ignDelay.sh firstpass
python check_ignDelay.py
if [ $? -ne 0 ]; then exit 1; fi; \
rm log PPreaction.txt inputs/inputs.0d_refine
make realclean
make -j ${{env.NPROCS}} Eos_Model=Manifold Transport_Model=Manifold Manifold_Dim=1 Chemistry_Model=Null TINY_PROFILE=TRUE USE_CCACHE=TRUE ${{matrix.amrex_build_args}}
bash exec_ignDelay.sh manifold
python check_ignDelay.py 0.0766 10
if [ $? -ne 0 ]; then exit 1; fi; \
fi;
make realclean
- name: Ignition delay ccache report
working-directory: ${{env.IGNDELAY_WORKING_DIRECTORY}}
run: |
ccache -s
du -hs ${HOME}/.cache/ccache
- name: Test Jacobian
working-directory: ${{env.JAC_WORKING_DIRECTORY}}
run: |
echo "::add-matcher::${{github.workspace}}/PelePhysics-${{matrix.comp}}/.github/problem-matchers/gcc.json"
if [ "${{matrix.comp}}" == 'gnu' ] || [ "${{matrix.comp}}" == 'llvm' ]; then \
ccache -z
cd ${{github.workspace}}/PelePhysics-${{matrix.comp}}/Support/ceptr
poetry run qssa -f ${{github.workspace}}/PelePhysics-${{matrix.comp}}/Mechanisms/dodecane_lu_qss/skeletal.yaml -n ${{github.workspace}}/Mechanisms/dodecane_lu_qss/non_qssa_list.yaml
poetry run convert -f ${{github.workspace}}/PelePhysics-${{matrix.comp}}/Mechanisms/dodecane_lu_qss/qssa.yaml --qss_format_input ${{github.workspace}}/PelePhysics-${{matrix.comp}}/Mechanisms/dodecane_lu_qss/qssa_input_non_optimized.toml --qss_symbolic_jacobian
cd ${{env.JAC_WORKING_DIRECTORY}}
make -j ${{env.NPROCS}} Eos_Model=Fuego Chemistry_Model=dodecane_lu_qss DEBUG=TRUE TINY_PROFILE=TRUE USE_CCACHE=TRUE ${{matrix.amrex_build_args}}
./Pele3d.${{matrix.comp}}.DEBUG.TPROF.ex; \
if [ $? -ne 0 ]; then exit 1; fi; \
fi;
make realclean
- name: Jacobian ccache report
working-directory: ${{env.JAC_WORKING_DIRECTORY}}
run: |
ccache -s
du -hs ${HOME}/.cache/ccache