Skip to content

Add SuperLU_dist variant #301

Add SuperLU_dist variant

Add SuperLU_dist variant #301

Workflow file for this run

name: 🤖
on:
push:
branches:
- main
pull_request:
workflow_dispatch:
schedule:
- cron: "0 2 * * MON" # weekly, Mondays 0200
jobs:
style-check:
name: ✨
runs-on: ubuntu-latest
steps:
- uses: actions/setup-python@v6
with:
python-version: '3.13'
- uses: actions/checkout@v5
with:
fetch-depth: 2
- name: Fetch Spack CI scripts
uses: actions/checkout@v5
with:
repository: spack/spack
ref: develop
path: spack-core
- run: wget https://raw.githubusercontent.com/spack/spack-packages/refs/heads/develop/.github/workflows/requirements/style/requirements.txt
- run: wget https://raw.githubusercontent.com/spack/spack-packages/refs/heads/develop/.flake8
- run: wget https://raw.githubusercontent.com/spack/spack-packages/refs/heads/develop/pyproject.toml
- run: wget https://raw.githubusercontent.com/spack/spack-packages/refs/heads/develop/.ci/style_check.sh
- run: pip install -r requirements.txt
- run: chmod +x style_check.sh
- run: ./style_check.sh HEAD^
fenics-basix:
needs: style-check
runs-on: ubuntu-latest
container: ubuntu:24.04
strategy:
fail-fast: false
matrix:
version: ["main", "0.10", "0.9", "0.8"]
spec: ["build_type=Developer %gcc@13", "build_type=Developer %clang@18"]
steps:
- uses: actions/checkout@v5
with:
path: spack-fenics
- uses: ./spack-fenics/.github/actions/test-package
with:
spec: fenics-basix@${{ matrix.version }} ${{ matrix.spec }}
fenics-dolfinx:
needs: style-check
runs-on: ubuntu-latest
container: ubuntu:24.04
strategy:
fail-fast: false
matrix:
# NOTE: clang sometimes likes stub or Intel MPI. Force MPI implementations.
version: ["main", "0.10", "0.9", "0.8"]
main_spec: ["build_type=Developer %%c,cxx=clang@18 ^mpich", "build_type=Developer partitioners=kahip,parmetis,scotch +petsc +slepc +adios2 %%gcc@13 ^openmpi"]
env:
OMPI_ALLOW_RUN_AS_ROOT: 1
OMPI_ALLOW_RUN_AS_ROOT_CONFIRM: 1
PRTE_MCA_rmaps_default_mapping_policy: :oversubscribe # Newer OpenMPI
OMPI_MCA_rmaps_base_oversubscribe: true # Older OpenMPI
steps:
- uses: actions/checkout@v5
with:
path: spack-fenics
- uses: ./spack-fenics/.github/actions/test-package
with:
spec: fenics-dolfinx@${{ matrix.version }} ${{ matrix.main_spec }} py-fenics-ffcx catch2 cmake
# FFCx compilation of poisson.py fails in ffcx/codegeneration/C/finite_element.py
- name: Run tests (skip 0.8)
shell: spack-bash {0}
if: ${{ matrix.version != '0.8' }}
run: |
spack env activate ./env
spack load --first catch2 cmake fenics-dolfinx py-fenics-ffcx
spack stage fenics-dolfinx@${{ matrix.version }} ${{ matrix.main_spec }}
spack cd fenics-dolfinx@${{ matrix.version }} ${{ matrix.main_spec }}
spack build-env --dump fenics-dolfinx-build-env.sh fenics-dolfinx
source fenics-dolfinx-build-env.sh
cmake -B build/test/ -S cpp/test/ -DCMAKE_BUILD_TYPE=Developer
cmake --build build/test
cd build/test
ctest -V --output-on-failure -R unittests_np_1
ctest -V --output-on-failure -R unittests_np_3
fenics-ufcx:
needs: style-check
runs-on: ubuntu-latest
container: ubuntu:24.04
strategy:
fail-fast: false
matrix:
version: ["main", "0.10", "0.9", "0.8"]
spec: ["%gcc@13"]
steps:
- uses: actions/checkout@v5
with:
path: spack-fenics
- uses: ./spack-fenics/.github/actions/test-package
with:
spec: fenics-ufcx@${{ matrix.version }} ${{ matrix.spec }}
py-fenics-basix:
needs: style-check
runs-on: ubuntu-latest
container: ubuntu:24.04
strategy:
fail-fast: false
matrix:
version: ["main", "0.10", "0.9", "0.8"]
# Make sure fenics-basix and py-fenics-basix build with same compiler/ABI.
spec: ["+ufl %gcc@13 ^fenics-basix%gcc@13", "+ufl %clang@18 ^fenics-basix%clang@18"]
steps:
- uses: actions/checkout@v5
with:
path: spack-fenics
- uses: ./spack-fenics/.github/actions/test-package
with:
spec: py-fenics-basix@${{ matrix.version }} ${{ matrix.spec }}
- name: Run tests
if: ${{ matrix.version != '0.8' }}
shell: spack-bash {0}
run: |
spack env activate ./env
spack install --add py-pytest py-sympy py-pytest-xdist
spack stage py-fenics-basix@${{ matrix.version }} ${{ matrix.spec }}
spack cd py-fenics-basix@${{ matrix.version }} ${{ matrix.spec }}
python -m pytest -n auto test/
# NOTE: 0.8 has test_all_elements_included broken
- name: Run tests
if: ${{ matrix.version == '0.8' }}
shell: spack-bash {0}
run: |
spack env activate ./env
spack install --add py-pytest py-sympy py-pytest-xdist
spack stage py-fenics-basix@${{ matrix.version }} ${{ matrix.spec }}
spack cd py-fenics-basix@${{ matrix.version }} ${{ matrix.spec }}
python -m pytest -n auto -k "not test_all_elements_included" test/
py-fenics-dolfinx:
needs: style-check
runs-on: ubuntu-latest
container: ubuntu:24.04
strategy:
fail-fast: false
matrix:
version: ["main", "0.10", "0.9", "0.8"]
python-version: ["3.10", "3.13"]
# NOTE: Overspecification of %%clang@18 to fix ABI issues (std::string related?).
# NOTE: clang sometimes likes stub or Intel MPI.
spec: ["build_type=Developer +petsc4py +slepc4py %%gcc@13 ^petsc+mumps ^fenics-dolfinx+adios2 ^mpich",
"build_type=Developer %%clang@18 ^openmpi"]
# Test new superlu-dist variant
include:
- version: "main"
spec: "build_type=Developer %%clang@18 ^mpich ^fenics-dolfinx+superlu-dist"
python-version: "3.12"
env:
OMPI_ALLOW_RUN_AS_ROOT: 1
OMPI_ALLOW_RUN_AS_ROOT_CONFIRM: 1
PRTE_MCA_rmaps_default_mapping_policy: :oversubscribe # Newer OpenMPI
OMPI_MCA_rmaps_base_oversubscribe: true # Older OpenMPI
steps:
- uses: actions/checkout@v5
with:
path: spack-fenics
- uses: ./spack-fenics/.github/actions/test-package
with:
spec: py-fenics-dolfinx@${{ matrix.version }} ${{ matrix.spec }} ^python@${{ matrix.python-version }}
# pytest@8.4 required for collision of [tool.pytest] and [tool.pytest.ini_options] since @9.0
- name: Run tests
if: ${{ matrix.version == '0.8' || matrix.version == '0.9'}}
shell: spack-bash {0}
run: |
spack env activate ./env
spack install --add py-pytest@8.4 py-scipy py-pytest-xdist ^python@${{ matrix.python-version }}
spack stage py-fenics-dolfinx@${{ matrix.version }} ${{ matrix.spec }} ^python@${{ matrix.python-version }}
spack cd py-fenics-dolfinx@${{ matrix.version }} ${{ matrix.spec }} ^python@${{ matrix.python-version }}
python -m pytest -n auto -m "not petsc4py and not adios2" -k "not test_cffi_expression and not test_cube_distance" python/test/unit
mpiexec -n 3 python -m pytest -m "not petsc4py and not adios2" -k "not test_cffi_expression and not test_cube_distance" python/test/unit
- name: Run tests
if: ${{ matrix.version != '0.8' && matrix.version != '0.9'}}
shell: spack-bash {0}
run: |
spack env activate ./env
spack install --add py-pytest py-scipy py-pytest-xdist ^python@${{ matrix.python-version }}
spack stage py-fenics-dolfinx@${{ matrix.version }} ${{ matrix.spec }} ^python@${{ matrix.python-version }}
spack cd py-fenics-dolfinx@${{ matrix.version }} ${{ matrix.spec }} ^python@${{ matrix.python-version }}
python -m pytest -n auto -m "not petsc4py and not adios2" -k "not test_cffi_expression and not test_symmetry_interior_facet_assembly[mesh1]" python/test/unit
mpiexec -n 3 python -m pytest -m "not petsc4py and not adios2" -k "not test_cffi_expression and not test_symmetry_interior_facet_assembly[mesh1]" python/test/unit
py-fenics-ffcx:
needs: style-check
runs-on: ubuntu-latest
container: ubuntu:24.04
strategy:
fail-fast: false
matrix:
version: ["main", "0.10", "0.9", "0.8"]
steps:
- uses: actions/checkout@v5
with:
path: spack-fenics
- uses: ./spack-fenics/.github/actions/test-package
with:
spec: py-fenics-ffcx@${{ matrix.version }}
# NOTE: ffcx version 0.8 currently broken
- name: Run tests
if: ${{ matrix.version != '0.8' }}
shell: spack-bash {0}
run: |
spack env activate ./env
spack install --add py-pytest py-sympy py-pytest-xdist
spack stage py-fenics-ffcx@${{ matrix.version }}
spack cd py-fenics-ffcx@${{ matrix.version }}
python -m pytest -n auto test/
py-fenics-ufl:
needs: style-check
runs-on: ubuntu-latest
container: ubuntu:24.04
strategy:
fail-fast: false
matrix:
version: ["main", "2025.2", "2025.1", "2024.2", "2024.1"]
steps:
- uses: actions/checkout@v5
with:
path: spack-fenics
- uses: ./spack-fenics/.github/actions/test-package
with:
spec: py-fenics-ufl@${{ matrix.version }}
- name: Run tests
shell: spack-bash {0}
run: |
spack env activate ./env
spack install --add py-pytest py-pytest-xdist
spack stage py-fenics-ufl@${{ matrix.version }}
spack cd py-fenics-ufl@${{ matrix.version }}
python -m pytest -n auto test/