diff --git a/.github/workflows/book_stable.yml b/.github/workflows/book_stable.yml index 01ff9c5a..e45a3223 100644 --- a/.github/workflows/book_stable.yml +++ b/.github/workflows/book_stable.yml @@ -9,7 +9,6 @@ on: branches: ["release"] env: HDF5_MPI: "ON" - HDF5_DIR: "/usr/local/" H5PY_SETUP_REQUIRES: 0 DEB_PYTHON_INSTALL_LAYOUT: deb_system LIBGL_ALWAYS_SOFTWARE: 1 @@ -29,6 +28,12 @@ jobs: - name: Install common packages uses: ./.github/actions/install-dependencies + - name: Configure HDF5 MPI Environment + run: | + # Evaluate architecture dynamically and write to GITHUB_ENV + ARCH_TRIPLET=$(gcc -print-multiarch) + echo "HDF5_LIBDIR=/usr/lib/${ARCH_TRIPLET}/hdf5/openmpi" >> $GITHUB_ENV + - name: Install book deps run: | python3 -m pip install --break-system-packages -U pip setuptools pkgconfig poetry-core poetry_dynamic_versioning diff --git a/.github/workflows/test_nightly.yml b/.github/workflows/test_nightly.yml index 864baf09..90027ee4 100644 --- a/.github/workflows/test_nightly.yml +++ b/.github/workflows/test_nightly.yml @@ -20,12 +20,16 @@ jobs: container: ghcr.io/fenics/dolfinx/lab:nightly env: - HDF5_MPI: "ON" - H5PY_SETUP_REQUIRES: 0 - HDF5_DIR: "/usr/local/" PYVISTA_OFF_SCREEN: true PYVISTA_JUPYTER_BACKEND: html LIBGL_ALWAYS_SOFTWARE: 1 + CC: "mpicc" + HDF5_MPI: "ON" + HDF5_INCLUDEDIR: "/usr/include/hdf5/openmpi" + H5PY_SETUP_REQUIRES: 0 + OMPI_ALLOW_RUN_AS_ROOT: 1 + OMPI_ALLOW_RUN_AS_ROOT_CONFIRM: 1 + PRTE_MCA_rmaps_default_mapping_policy: :oversubscribe steps: - uses: actions/checkout@v7 @@ -33,6 +37,12 @@ jobs: - name: Special handling of some installation uses: ./.github/actions/install-dependencies + - name: Configure HDF5 MPI Environment + run: | + # Evaluate architecture dynamically and write to GITHUB_ENV + ARCH_TRIPLET=$(gcc -print-multiarch) + echo "HDF5_LIBDIR=/usr/lib/${ARCH_TRIPLET}/hdf5/openmpi" >> $GITHUB_ENV + - name: Install requirements run: | python3 -m pip install --break-system-packages -U pip setuptools pkgconfig poetry-core poetry-core poetry-dynamic-versioning @@ -46,7 +56,7 @@ jobs: run: | export PKG_CONFIG_PATH=/usr/local/dolfinx-complex/lib/pkgconfig:$PKG_CONFIG_PATH export PETSC_ARCH=linux-gnu-complex128-32 - export PYTHONPATH=/usr/local/dolfinx-complex/lib/python3.12/dist-packages:$PYTHONPATH + export PYTHONPATH=/usr/local/dolfinx-complex/lib/python/dist-packages:$PYTHONPATH export LD_LIBRARY_PATH=/usr/local/dolfinx-complex/lib:$LD_LIBRARY_PATH python3 complex_mode.py mpirun -n 2 python3 complex_mode.py diff --git a/.github/workflows/test_stable.yml b/.github/workflows/test_stable.yml index 828d26eb..fed2c402 100644 --- a/.github/workflows/test_stable.yml +++ b/.github/workflows/test_stable.yml @@ -11,13 +11,18 @@ jobs: runs-on: ubuntu-latest container: ghcr.io/fenics/dolfinx/lab:stable env: - HDF5_MPI: "ON" - HDF5_DIR: "/usr/local/" - H5PY_SETUP_REQUIRES: "0" + DEB_PYTHON_INSTALL_LAYOUT: deb_system PYVISTA_OFF_SCREEN: true PYVISTA_JUPYTER_BACKEND: html LIBGL_ALWAYS_SOFTWARE: 1 + CC: "mpicc" + HDF5_MPI: "ON" + HDF5_INCLUDEDIR: "/usr/include/hdf5/openmpi" + H5PY_SETUP_REQUIRES: 0 + OMPI_ALLOW_RUN_AS_ROOT: 1 + OMPI_ALLOW_RUN_AS_ROOT_CONFIRM: 1 + PRTE_MCA_rmaps_default_mapping_policy: :oversubscribe # Steps represent a sequence of tasks that will be executed as part of the job steps: diff --git a/docker/Dockerfile b/docker/Dockerfile index 2d77c530..da1f4a9b 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -7,14 +7,14 @@ ARG TARGETPLATFORM ENV DEB_PYTHON_INSTALL_LAYOUT=deb_system ENV HDF5_MPI="ON" -ENV HDF5_DIR="/usr/local" +ENV OMPI_ALLOW_RUN_AS_ROOT=1 +ENV OMPI_ALLOW_RUN_AS_ROOT_CONFIRM=1 +ENV PRTE_MCA_rmaps_default_mapping_policy=:oversubscribe WORKDIR /tmp/ # Requirements for pyvista (gl1 and render1) and jupyterlab (nodejs and curl) RUN apt-get update && apt-get install -y libgl1-mesa-dev mesa-utils curl -# RUN curl -sL https://deb.nodesource.com/setup_18.x -o nodesource_setup.sh && \ -# bash nodesource_setup.sh && \ -# apt -y install nodejs + # Install netgen from source RUN apt-get update && \ @@ -36,6 +36,13 @@ ENV PYTHONPATH=$NETGENDIR/../lib/python3.12/site-packages:${PYTHONPATH}:${PYTHON # Install vtk RUN python3 -m pip install vtk +RUN ARCH_TRIPLET=$(gcc -print-multiarch) && \ + export CC="mpicc" && \ + export HDF5_MPI="ON" && \ + export HDF5_INCLUDEDIR="/usr/include/hdf5/openmpi" && \ + export HDF5_LIBDIR="/usr/lib/${ARCH_TRIPLET}/hdf5/openmpi" && \ + pip install --no-binary=h5py h5py --no-build-isolation --no-cache-dir + ADD pyproject.toml /tmp/pyproject.toml WORKDIR /tmp # As we install netgen from source we don't need the netgen deps here