Peano
Installation with Docker

Here we maintain Dockerfiles for different compilers.

Usage

We have encountered compatibility issues with Apple chips (M2) and Docker. At this point, we would not encourage people to use Docker containers with these chips. You may try out to add following flag to the docker run command: --platform Linux/amd64.

For users, it is recommended to pull the available Docker images from Dockerhub. All Docker images that have the extension gcc, intel, nvidia, llvm, targetdart (a modified version of llvm), or amd provide all commonly the same dependencies that are needed to build, run and visualise Peano applications. All dependencies within the images are installed via Spack. Each image additional provides one of the compilers with MPI that are also configured for GPU offloading. You may choose any image to pull from Dockerhub that fits your needs in a compiler and your hardware configuration.

You may ignore images that have the extension base, or spack. These are only used for development.

To use the prebuilt images, we do recommended that you first clone Peano, then navigate into the Peano checkout and run the Docker container interactively by mapping the Peano directory into the container (here, we use work as our mapping point):

docker run -it -v ${PWD}:/work --rm --privileged peanoframework/<compiler> /bin/bash

With GPU Support

docker run -it -v ${PWD}:/work --rm --gpus=all --privileged peanoframework/<compiler> /bin/bash

With Port Forwarding (JupyterLab)

docker run -it -v ${PWD}:/work -p 53155:53155 --rm --privileged peanoframework/<compiler> /bin/bash

Build (for Developers)

The next part is mostly relevant for developers of the project or if you want to change or add some additionally dependencies to the Docker images yourself. Keep in mind, that building the image takes a significant amount of time and requires root access.

To build the Docker images, make sure to execute the following commands in the Peano root directory.

Building Base Images

docker build -t peanoframework/base -f docker/Dockerfile.base .
docker build -t peanoframework/spack -f docker/Dockerfile.spack .

Building Compiler Images

docker build -t peanoframework/gcc -f docker/Dockerfile.gcc .
docker build -t peanoframework/intel -f docker/Dockerfile.intel .
docker build -t peanoframework/nvidia -f docker/Dockerfile.nvidia .
docker build -t peanoframework/amd -f docker/Dockerfile.amd .
docker build -t peanoframework/llvm -f docker/Dockerfile.llvm .
docker build -t peanoframework/targetdart -f docker/Dockerfile.targetdart .

Building Extension Images

docker build -t peanoframework/exahype2 -f docker/Dockerfile.exahype2 .