Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
61 commits
Select commit Hold shift + click to select a range
9585270
GitHub CI: mpiexec -n 4 --oversubscribe
jonasschwab Jan 7, 2026
e0aa5b3
test
jonasschwab Jan 7, 2026
02ea0cb
Enable mpi oversubscribe via environment variable.
jonasschwab Jan 7, 2026
fe29833
test
jonasschwab Jan 8, 2026
89db50f
Do not run containers as root
jonasschwab Jan 8, 2026
347033e
test
jonasschwab Jan 8, 2026
09b0624
test
jonasschwab Jan 8, 2026
925f4e4
test
jonasschwab Jan 8, 2026
a768048
Mac runner: Use MPICH instead of Open-MPI
jonasschwab Jan 8, 2026
666d858
CI: OpenMPI: --use-hwthread-cpus
jonasschwab Jan 8, 2026
e6f0752
Simpify CI config
jonasschwab Jan 8, 2026
c985083
CI: No tumbleweed for now
jonasschwab Jan 8, 2026
32b4ee1
CI: OpenMPI: --use-hwthread-cpus, catch more
jonasschwab Jan 8, 2026
6c37474
CI: Handle MacOS warnings
jonasschwab Jan 8, 2026
60814f6
CI: Add tumbleweed and PGI images
jonasschwab Jan 8, 2026
57ed632
CI: Add tumbleweed
jonasschwab Jan 8, 2026
9ab3ec7
CI: No Tumbleweed
jonasschwab Jan 9, 2026
bdb4890
CI: Try ubuntu-slim
jonasschwab Jan 12, 2026
c2a262e
CI: ubuntu-slim only without custom container image
jonasschwab Jan 13, 2026
dfbd03c
Documentation/: add Makefile create-hash.sh doc.hash
jonasschwab Jan 13, 2026
161681b
First steps towards adapting test-branch to GitHub CI
jonasschwab Jan 13, 2026
7b0262a
CI: Work on test-branch
jonasschwab Jan 13, 2026
d3f1be8
testsuite/test_branch_generate_config.py: use argparse
jonasschwab Jan 13, 2026
01e405b
CI: Work on test-branch
jonasschwab Jan 13, 2026
74b892c
CI: Work on test-branch
jonasschwab Jan 13, 2026
dbf593f
CI: Work on test-branch
jonasschwab Jan 13, 2026
1e3a06b
CI: Work on test-branch
jonasschwab Jan 13, 2026
be55c76
CI: Work on test-branch
jonasschwab Jan 13, 2026
a69694c
CI: Work on test-branch
jonasschwab Jan 13, 2026
b619765
CI: Work on test-branch
jonasschwab Jan 13, 2026
b1b6ebc
CI: Work on test-branch
jonasschwab Jan 14, 2026
4ea2063
CI: Work on test-branch
jonasschwab Jan 14, 2026
a2823c3
CI: Work on test-branch
jonasschwab Jan 14, 2026
5aa81ea
CI: Work on test-branch
jonasschwab Jan 14, 2026
12aea33
CI: Work on test-branch
jonasschwab Jan 14, 2026
3349011
CI: Work on test-branch
jonasschwab Jan 14, 2026
0cecf7a
CI: Work on test-branch
jonasschwab Jan 14, 2026
099f3eb
CI: Work on test-branch
jonasschwab Jan 14, 2026
cffec1b
CI: Work on test-branch
jonasschwab Jan 14, 2026
fce7001
CI: Work on test-branch
jonasschwab Jan 14, 2026
9796b3e
CI: Work on test-branch
jonasschwab Jan 14, 2026
bd509dd
CI: Work on test-branch
jonasschwab Jan 14, 2026
0f62d13
CI: cache HDF5 for MacOS
jonasschwab Jan 14, 2026
82cac4e
CI: use HDF5 for MacOS
jonasschwab Jan 14, 2026
9701163
CI: Work on test-branch
jonasschwab Jan 14, 2026
387c0c7
add .github/workflows/test-vs-ed.yaml
jonasschwab Jan 15, 2026
9ba6522
Work on .github/workflows/test-vs-ed.yaml
jonasschwab Jan 16, 2026
67a9bb5
Work on .github/workflows/test-vs-ed.yaml
jonasschwab Jan 16, 2026
a8b1236
Work on .github/workflows/test-vs-ed.yaml
jonasschwab Jan 16, 2026
02aaac8
Work on .github/workflows/test-vs-ed.yaml
jonasschwab Jan 16, 2026
08dd4f4
Work on .github/workflows/test-vs-ed.yaml
jonasschwab Jan 16, 2026
eda47d7
Work on .github/workflows/test-vs-ed.yaml
jonasschwab Jan 16, 2026
0ddeb93
Work on .github/workflows/test-vs-ed.yaml
jonasschwab Jan 16, 2026
28851fb
Work on .github/workflows/test-vs-ed.yaml
jonasschwab Jan 16, 2026
611fda3
Work on .github/workflows/test-vs-ed.yaml
jonasschwab Jan 16, 2026
ae1cce0
Work on .github/workflows/test-vs-ed.yaml
jonasschwab Jan 16, 2026
b799a22
Work on .github/workflows/test-vs-ed.yaml
jonasschwab Jan 16, 2026
96caea7
Work on .github/workflows/test-vs-ed.yaml
jonasschwab Jan 16, 2026
5be1f49
Work on .github/workflows/test-vs-ed.yaml
jonasschwab Jan 16, 2026
a0f98ee
Work on .github/workflows/test-vs-ed.yaml
jonasschwab Jan 16, 2026
b177ac9
Work on .github/workflows/test-vs-ed.yaml
jonasschwab Jan 17, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
38 changes: 31 additions & 7 deletions .github/actions/alf_test/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,25 +9,40 @@ runs:
using: "composite"
steps:
- name: macOS Toolchain install

if: runner.os == 'macOS'
id: mac_toolchain
shell: bash
run: |
brew update
brew install gcc cmake open-mpi
brew install mpich
gcc_version=$(brew list --versions gcc | grep -o '[0-9]\+' | head -1)
bindir=$(brew --prefix)/bin
ln -fs ${bindir}/gfortran-${gcc_version} /usr/local/bin/gfortran
ln -fs ${bindir}/gcc-${gcc_version} /usr/local/bin/gcc
ln -fs ${bindir}/g++-${gcc_version} /usr/local/bin/g++
echo "gcc_version=$gcc_version" >> $GITHUB_OUTPUT

- name: Build & Test
- name: Get number of processors
shell: bash
run: |
if [[ $(uname) == "Darwin" ]]; then
NPROC=$(sysctl -n hw.ncpu)
else
NPROC=$(nproc)
fi
echo "There are $NPROC processors available."

- name: Restore HDF5 cache
if: runner.os == 'macOS'
uses: actions/cache@v5
with:
key: macos-HDF5-${{ steps.mac_toolchain.outputs.gcc_version }}
path: HDF5/*/

- name: Build & Test
shell: bash
env:
ARGS: ${{ inputs.args }}
OMPI_ALLOW_RUN_AS_ROOT: 1 # needed for mpi runnig as root, needed by github runner
OMPI_ALLOW_RUN_AS_ROOT_CONFIRM: 1
run: |
. ./configure.sh $ARGS
echo $ALF_FC
Expand All @@ -42,18 +57,27 @@ runs:
if echo "$MODE" | grep -iq -e "serial" -e "noMPI"; then
"$ALF_DIR/Prog/ALF.out"
else
mpiexec -n 2 "$ALF_DIR/Prog/ALF.out" # only 2 cores available in githubs runners
MPI_OPTS="-n 4"
mpiexec --version | grep -iq -e 'Open MPI' -e 'OpenRTE' && MPI_OPTS="$MPI_OPTS --use-hwthread-cpus"
mpiexec $MPI_OPTS "$ALF_DIR/Prog/ALF.out"
fi
if echo "$MODE" | grep -iq -e "TEMPERING" -e "PARALLEL_PARAMS"; then cd Temp_0; fi
if echo "$CONFIG_ARGS" | grep -iq "HDF5"; then
"$ALF_DIR/Analysis/ana_hdf5.out"
else
"$ALF_DIR/Analysis/ana.out" *
fi

- name: Run unit tests
shell: bash
env:
ARGS: ${{ inputs.args }}
run: |
. ./configure.sh $ARGS
mkdir -p "$ALF_DIR/testsuite/tests"
cd "$ALF_DIR/testsuite/tests"
if echo "$ALF_FC" | grep -q "mpiifort -fc=ifx"; then exit 0; fi
cmake ..
cmake --build . --target all --config Release
ctest -VV -O log.txt
grep "tests passed" log.txt | cut -d " " -f 1
grep "tests passed" log.txt | cut -d " " -f 1
112 changes: 24 additions & 88 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
name: CI

on:
push:
branches: ["**"]
pull_request:
branches: ["**"]
workflow_dispatch:
# push:
# branches: ["**"]
# pull_request:
# branches: ["**"]

permissions:
contents: read
Expand All @@ -20,7 +21,7 @@ concurrency:
jobs:
lint_stopcommands:
name: Lint Fortran STOP statements
runs-on: ubuntu-latest
runs-on: ubuntu-slim
steps:
- uses: actions/checkout@v4
- name: Check for forbidden STOP/ERROR STOP
Expand Down Expand Up @@ -62,7 +63,7 @@ jobs:

create_doxygen:
name: Generate Doxygen HTML
runs-on: ubuntu-latest
runs-on: ubuntu-slim
needs: [lint_stopcommands]
steps:
- uses: actions/checkout@v4
Expand All @@ -82,7 +83,7 @@ jobs:

deploy_pages:
name: Deploy GitHub Pages (master only)
runs-on: ubuntu-latest
runs-on: ubuntu-slim
needs: [create_doc, create_doxygen]
if: github.ref == 'refs/heads/master'
environment:
Expand Down Expand Up @@ -116,97 +117,33 @@ jobs:
# Linux tests
# ======================

test_linux_gnu:
name: ${{ matrix.image_minor }} · ${{ matrix.mode }} · ${{ matrix.devel }} · ${{ matrix.config }}
test_linux:
name: ${{ matrix.image_minor[0] }} · ${{ matrix.mode }} · ${{ matrix.devel }} · ${{ matrix.config }}
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
image_minor: [bullseye, bookworm, trixie]
image_minor:
- [bullseye, GNU]
- [bookworm, GNU]
- [trixie, GNU]
- [bullseye-openblas, GNU]
# - [tumbleweed, GNU]
- [bullseye-pgi-21-03, PGI]
- [bookworm-pgi-24-09, PGI]
- [bullseye-intel, INTEL]
- [bookworm-intel-2024.2, INTEL]
- [bookworm-intel, INTELLLVM]
mode: [noMPI, MPI, TEMPERING, PARALLEL_PARAMS]
devel: ["", "Devel"]
config: ["", "HDF5"]
container:
image: ghcr.io/alf-qmc/alf-container/alf-requirements/${{ matrix.image_minor }}
options: --user 0
image: ghcr.io/alf-qmc/alf-container/alf-requirements/${{ matrix.image_minor[0] }}
steps:
- uses: actions/checkout@v4
- uses: ./.github/actions/alf_test
with:
args: GNU ${{ matrix.mode }} ${{ matrix.devel }} ${{ matrix.config }}

test_linux_gnu_openblas:
name: bullseye-openblas · ${{ matrix.devel }} · ${{ matrix.config }}
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
devel: ["", "Devel"]
config: ["", "HDF5"]
container:
image: ghcr.io/alf-qmc/alf-container/alf-requirements/bullseye-openblas
options: --user 0
steps:
- uses: actions/checkout@v4
- uses: ./.github/actions/alf_test
with:
args: GNU ${{ matrix.mode }} ${{ matrix.devel }} ${{ matrix.config }}

test_linux_pgi:
name: bullseye-pgi-21-03 · ${{ matrix.mode }} · ${{ matrix.devel }} · ${{ matrix.config }}
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
mode: [noMPI, MPI, TEMPERING, PARALLEL_PARAMS]
devel: ["", "Devel"]
config: ["", "HDF5"]
container:
image: ghcr.io/alf-qmc/alf-container/alf-requirements/bullseye-pgi-21-03
options: --user 0
steps:
- uses: actions/checkout@v4
- uses: ./.github/actions/alf_test
with:
with:
args: PGI ${{ matrix.mode }} ${{ matrix.devel }} ${{ matrix.config }}

test_linux_intel:
name: ${{ matrix.image_minor }} · ${{ matrix.mode }} · ${{ matrix.devel }} · ${{ matrix.config }}
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
image_minor: [bullseye-intel, bookworm-intel-2024.2]
mode: [noMPI, MPI, TEMPERING, PARALLEL_PARAMS]
devel: ["", "Devel"]
config: ["", "HDF5"]
container:
image: ghcr.io/alf-qmc/alf-container/alf-requirements/${{ matrix.image_minor }}
options: --user 0
steps:
- uses: actions/checkout@v4
- uses: ./.github/actions/alf_test
with:
args: INTEL ${{ matrix.mode }} ${{ matrix.devel }} ${{ matrix.config }}

test_linux_intelllvm:
name: bookworm-intel · ${{ matrix.mode }} · ${{ matrix.devel }} · ${{ matrix.config }}
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
mode: [noMPI, MPI, TEMPERING, PARALLEL_PARAMS]
devel: ["", "Devel"]
config: ["", "HDF5"]
container:
image: ghcr.io/alf-qmc/alf-container/alf-requirements/bookworm-intel
options: --user 0
steps:
- uses: actions/checkout@v4
- uses: ./.github/actions/alf_test
with:
args: INTELLLVM ${{ matrix.mode }} ${{ matrix.devel }} ${{ matrix.config }}
args: ${{ matrix.image_minor[1] }} ${{ matrix.mode }} ${{ matrix.devel }} ${{ matrix.config }}

test_macos:
name: macOS · ${{ matrix.mode }} · ${{ matrix.devel }}
Expand All @@ -216,6 +153,7 @@ jobs:
matrix:
mode: [noMPI, MPI, TEMPERING, PARALLEL_PARAMS]
devel: ["", "Devel"]
config: ["", "HDF5"]
steps:
- uses: actions/checkout@v4
- uses: ./.github/actions/alf_test
Expand All @@ -230,13 +168,11 @@ jobs:
runs-on: ubuntu-latest
container:
image: ghcr.io/alf-qmc/alf-container/alf-requirements/bullseye
options: --user 0
steps:
- uses: actions/checkout@v4
- name: Run Valgrind
shell: bash
run: |
apt-get update && apt-get install -y valgrind
. ./configure.sh GNU devel serial
gfortran -v
make lib
Expand Down
110 changes: 110 additions & 0 deletions .github/workflows/test-branch.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,110 @@
name: Test vs main branch

on: workflow_dispatch

jobs:
test_branch:
# needs: prepare
runs-on: ubuntu-latest
container:
image: ghcr.io/alf-qmc/alf-container/pyalf-requirements/${{ matrix.image[0] }}
strategy:
fail-fast: false
matrix:
image:
- [bullseye, GNU]
- [bookworm, GNU]
- [trixie, GNU]
# - [bullseye-openblas, GNU]
# - [tumbleweed, GNU]
- [bullseye-pgi-21-03, PGI]
- [bookworm-pgi-24-09, PGI]
- [bullseye-intel, INTEL]
- [bookworm-intel-2024.2, INTEL]
- [bookworm-intel, INTELLLVM]
steps:
- name: Install pyALF
run: pip install --no-deps pyALF
- uses: actions/checkout@v6
with:
ref: master
- uses: actions/checkout@v6
with:
ref: ${{ github.event.inputs.test_branch || github.ref_name }}
- name: Check if mpiexec supports --use-hwthread-cpus
id: mpi_flag_check
run: mpiexec --version | grep -iq -e 'Open MPI' -e 'OpenRTE' &&
echo "value='--mpiexec_args=--use-hwthread-cpus'" >> $GITHUB_OUTPUT ||
echo "No Open MPI, so --use-hwthread-cpus not needed"
- name: Run ALF test vs main branch
run: alf_test_branch
--alfdir $PWD
--sim_pars $PWD/testsuite/test_branch_parameters.json
--machine ${{ matrix.image[1] }}
--mpi
--n_mpi 4
--branch_T ${{ github.event.inputs.test_branch || github.ref_name }}
--branch_R master
--devel
${{ steps.mpi_flag_check.outputs.value }}
- name: Upload test branch results
if: always()
uses: actions/upload-artifact@v6
with:
name: test-branch-results-${{ matrix.image[0] }}-${{ matrix.image[1] }}
path:
test.txt

test_branch_macos:
runs-on: macos-latest
strategy:
fail-fast: false
matrix:
compiler: [GNU]
steps:
- name: Install pyALF
run: pipx install pyALF

- name: macOS Toolchain install
id: mac_toolchain
run: |
brew update
brew install mpich
gcc_version=$(brew list --versions gcc | grep -o '[0-9]\+' | head -1)
bindir=$(brew --prefix)/bin
ln -fs ${bindir}/gfortran-${gcc_version} /usr/local/bin/gfortran
ln -fs ${bindir}/gcc-${gcc_version} /usr/local/bin/gcc
ln -fs ${bindir}/g++-${gcc_version} /usr/local/bin/g++
echo "gcc_version=$gcc_version" >> $GITHUB_OUTPUT

- uses: actions/checkout@v6
with:
ref: master
- uses: actions/checkout@v6
with:
ref: ${{ github.event.inputs.test_branch || github.ref_name }}

- name: Restore HDF5 cache
uses: actions/cache@v5
with:
key: macos-HDF5-${{ steps.mac_toolchain.outputs.gcc_version }}
path: HDF5/*/

- name: Run ALF test vs main branch on macOS
run: alf_test_branch
--alfdir $PWD
--sim_pars $PWD/testsuite/test_branch_parameters.json
--machine ${{ matrix.compiler }}
--mpi
--n_mpi 4
--branch_T ${{ github.event.inputs.test_branch || github.ref_name }}
--branch_R master
--devel

- name: Upload test branch results macOS
if: always()
uses: actions/upload-artifact@v6
with:
name: test-branch-results-macos-${{ matrix.compiler }}
path:
test.txt
Loading