Add SuperLU_dist variant #301
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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/ |