• Aucun résultat trouvé

FEniCS in Linux Containers

N/A
N/A
Protected

Academic year: 2021

Partager "FEniCS in Linux Containers"

Copied!
1
0
0

Texte intégral

(1)

FEniCS in Linux Containers

Jack S. Hale (University of Luxembourg), Lizao Larry Li (University of Minnesota), Garth N. Wells (University of Cambridge)

jack.hale@uni.lu, lixx1445@umn.edu, gnw20@cam.ac.uk

Introduction

Docker allows application developers to build, ship and run their application nearly any- where. We have built three Docker images with FEniCS that are suitable for both end- users and developers:

1. fenicsproject/stable-ppa: The latest version from the Ubuntu PPA.

2. fenicsproject/dev-env: An environment for building FEniCS from source.

3. fenicsproject/dev: FEniCS compiled weekly from master.

With one command, you can launch a lightweight container that provides a consistent and performant environment for developing or using FEniCS.

You will like using FEniCS with Docker because you can:

• Run the same image on any platform.

• See precisely how an image is built.

• Add to or modify the image, or use them as a base for your own custom image.

• Tag an image and send it to your colleagues so that they can run your complex applica- tion immediately.

• Push your image to your favourite commercial cloud computing service and run it there.

• Distribute your image with your paper so that others can reproduce your results.

Try it yourself

Docker is available on most platforms, including Linux, Mac OS X and Windows. You can install it by following the instructions for your platform at http://docker.com. You can then launch a FEniCS environment using the command:

d o c k e r r u n - t i f e n i c s p r o j e c t / s t a b l e - p p a : l a t e s t

How do I . . . ?

Share a folder with the container

When you launch the container for the first time you can share any directory on the host into the container:

d o c k e r r u n - t i - v $ ( p w d ) : / s h a r e d \ f e n i c s p r o j e c t / s t a b l e - p p a : l a t e s t

This will share the current working directory into the container.

Launch another terminal in a running container First, check which containers are running

d o c k e r p s

Using the CONTAINER ID field, launch a new bash session using:

d o c k e r e x e c - t i b 8 f 5 1 c s u d o - u f e n i c s / b i n / b a s h

Build FEniCS from source

We provide an image with a ready-to-go development environment for building FEniCS, including an easy-to-modify script to build FEniCS from the master repositories.

Launch a development container using the command:

d o c k e r r u n - t i f e n i c s p r o j e c t / dev -e n v: l a t e s t

Then update the FEniCS build in the container using:

$ u p d a t e _ f e n i c s

FEniCS is built against up-to-date and optimised stable versions of PETSc and SLEPc.

See how you built the images

Our Docker images are automatically built in the cloud on Dockerhub directly from the Dockerfile, the ‘recipe’ that defines every Docker image. The FEniCS Dockerfiles are maintained at https://github.com/FEniCS/docker. Every time we change the Docker- file, a new image is automatically built. If you visit https://registry.hub.docker.com/u/

fenicsproject/stable-ppa/dockerfile/ and click on ‘Dockerfile’ you can see precisely which steps were used to build the image that you are running.

Install more software into the container

You have two options. The first is to manually install the software into the container, stop the container, then commit and tag the a new image. The second way is to learn how to write your own Dockerfile. For brevity, we only cover the first approach here. If you want to learn about writing your own Dockerfile using ours as a base then take a look at http://docker.com.

Begin by launching a container with a name:

d o c k e r r u n - t i - - n a m e = " m y c o n t a i n e r " \ f e n i c s p r o j e c t / s t a b l e - p p a : l a t e s t

Now install the software you want and exit the container:

$ s u d o apt - g e t i n s t a l l p y t h o n - p a n d a s

$ e x i t

Commit the image:

d o c k e r c o m m i t m y c o n t a i n e r

The above command gives you a hash of the commit. You can tag this hash so that it is easy to remember.

d o c k e r t a g f 7 4 9 j h a l e / m y c o n t a i n e r : l a t e s t

Now you can push it to Dockerhub so your colleague can use it too:

d o c k e r p u s h j h a l e / m y c o n t a i n e r : l a t e s t

Your colleague just has to run:

d o c k e r r u n - t i j h a l e / m y c o n t a i n e r : l a t e s t

No performance penalty

We tested our Ubuntu-based Docker image against a bare-metal Ubuntu build, with both compiled against the same system packages on the same Intel Xeon-based machine. For a range of benchmarks that tested assembly, linear solvers and IO, we have found almost no measurable performance difference between the Docker and bare-metal builds, in serial or in parallel using MPI.

IO Poisson elasticity multigrid

benchmark

0

10

20

30

40

50

time (s)

Docker vs native for various FEniCS benchmarks

Docker

native

Because of Docker’s layered filesystem, additional containers take up only a few kilobytes of extra space and launch almost instantly. This means you can happily have hundreds of containers, one for every project if you like, on your development laptop.

Conclusions

We have covered a small number of ways that you can integrate Docker into a powerful workflow for repeatable, easy-to-use and portable scientific computing using FEniCS. For further reading we recommend the Docker documentation at http://docker.com and the Docker cheat sheet at https://github.com/wsargent/docker-cheat-sheet.

Références

Documents relatifs

Démarrons votre container en montant le répertoire apache la ou le serveur Apache dans le container va chercher ses données :. root@osboxes:~# docker run -d -p

Logical inconsistency corresponding to ontologies containing log- ical contradictions for which a model does not exist (because the set of intended models is never empty, an

1 In the different policies that I consider, the changes in mortality risk faced by different age classes remain moderate, so that v i can be interpreted as the Value of

Specifically, we evaluate EVCD [8], a general formulation of the container deployment problem that determines the optimal allocation on virtual machines, acquired on-demand,

We have presented a set of tools that allow users to remotely create Docker containers that can be configured by the user, save and access the changes made to the containers,

Table III compares the container’s deployment time with shared and non-shared storage, measured from the time the docker run command is issued to the moment the container has

Pourtant, elle aussi incarne la frustration, les rêves avortés qui font d’elle une hystérique, brisée et amère, même si elle est émouvante quand elle évoque l’enfant

FlipFlop is a Hedge strategy in the sense that it uses exponential weights defined by (9), but the learning rate η t ff now alternates between infinity, such that the algorithm