Skip to content

Commit

Permalink
updated installation instructions for arm macos and docker
Browse files Browse the repository at this point in the history
  • Loading branch information
dc-luo committed May 26, 2024
1 parent 1f5f0e8 commit 31288c7
Showing 1 changed file with 40 additions and 1 deletion.
41 changes: 40 additions & 1 deletion INSTALL.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,11 @@
conda create -n soupy -c conda-forge python=3.11 fenics==2019.1.0 petsc4py==3.19 matplotlib scipy jupyter
conda activate soupy
```
**Note**: `FEniCS` is only available on x86 systems. When running on an ARM based mac with the ARM version of conda installed, add the flag `--platform osx-64`, i.e.
```
conda create -n soupy --platform osx64 -c conda-forge python=3.11 fenics==2019.1.0 petsc4py==3.19 matplotlib scipy jupyter
conda activate soupy
```

2. Install `hIPPYlib` via pip
```
Expand All @@ -37,7 +42,7 @@ git clone https://github.com/hippylib/soupy.git
Examples in the `applications` directory can now be run. We refer to the full `FEniCS` [installation instructions](https://hippylib.readthedocs.io/en/3.0.0/installation.html) from `hIPPYlib` for more detail.

### Installation for developers
1. Create an environment with `FEniCS` with appropriate dependencies
1. Create an environment with `FEniCS` with appropriate dependencies (add `--platform osx64` if using ARM conda, see above)
```
conda create -n soupy -c conda-forge python=3.11 fenics==2019.1.0 petsc4py==3.19 matplotlib scipy jupyter
```
Expand Down Expand Up @@ -67,3 +72,37 @@ Documentation for `SOUPy` can be built using `sphinx`, along with extensions
`myst_nb` and `sphinx_rtd_theme`. These can be installed via `pip`.

To build simply run `make html` from `doc` folder.

## Installation with Docker

SOUPy (and hIPPYlib) can be used with a Docker image built with FEniCS/dolfin.
The [FEniCS documentation](https://fenics.readthedocs.io/projects/containers/en/latest/) provides installation instructions for FEniCS's official images (note these are built on older versions of python). Alternatively, a customized docker image built off the FEniCS 2019.1.0 image with hIPPYlib pre-installed is available [here](https://hub.docker.com/r/hippylib/fenics)

More recent builds of the docker images with FEniCS that are compatible with the [Frontera(https://frontera-portal.tacc.utexas.edu/) HPC system] at the Texas Advanced Computing Center can be found under the `hippylib/tacc-containers` [repository](https://github.com/hippylib/tacc-containers). The repository also provides instructions for usage on Frontera using Apptainer. Here, we will summarize the procedure for using the image on local machines with Docker.

1. Pull one the docker images
```
docker pull uvilla/fenics-2019.1-tacc-mvapich2.3-ib:latest
```

2. Under the desired working directory, clone hIPPYlib and SOUPy
```
git clone https://github.com/hippylib/hippylib.git
git clone https://github.com/hippylib/soupy.git
```

3. The images are built for the MPI implementations on TACC systems. When running locally, the environment variables `MV2_SMP_USE_CMA=0` and `MV2_ENABLE_AFFINITY=0` need to be set.
```
docker run -e MV2_SMP_USE_CMA=0 -e MV2_ENABLE_AFFINITY=0 -ti -v $(pwd):/home1/ uvilla/fenics-2019.1-tacc-mvapich2.3-ib:latest /bin/bash
```
This will run the container and bind the current working directory to `/home1`.
The executed container should now have `/home1/hippylib` and `/home1/soupy`.

4. With the container running, first set the path to hippylib `export HIPPYLIB_PATH=/home1/hippylib`. The examples in the SOUPy repository can then be executed as
```
cd /home1/soupy/examples/poisson
python3 driver_poisson_mean.py
```
Compilation can take a while when executing for the first time.

**Note**: benign MPI warning messages may show up when running on ARM machines.

0 comments on commit 31288c7

Please sign in to comment.