Skip to content

Concepts

Philip Maechling edited this page Jul 26, 2022 · 17 revisions

Motivation for Creating UCVM Docker Images

SCEC's UCVM velocity model software is designed to run on Linux computers, and the software must be installed, compiled, and tested on the users system before routine use. We believe we can leverage computer virtualization to help users avoid the difficult UCVM installation process. This github repo contains codes and documents for a prototype version of UCVM distributed as docker images.

We want to build a docker image that will run in a docker container. UCVM has a complex make process, that tries to build codes on linux with gcc compilers, based on configure, autoconf, and automake.

UCVM software framework presents testing, development, and distribution challenges because it is written in multiple computing languages, and it must be compiled before used. Also, it is extensible, so new codes are added frequently. Also it has a lot of added capabilities, which may be configured.

To simplify development, we selected a scientific Linux computing environment as our target computer platform. We develop and test on this environment because that's were our big users, HPC modelers, tend to run. We don't maintain support for multiple computing platforms.

We tried to meet the needs of Mac, Windows users using virtualization, first Virtual Box, then Docker.

Docker is offered by many scientific computing groups and looks to become an alternative to Virtual Box. Some groups can convert their Docker image into singularity images which can run on supercomputers.

Previous use of Virtual Box

In 2017, SCEC created Virtual Box versions of our UCVM and Broadband Platform software. The images we created for thos workshop are posted online. However, Virtual Box has updated, and the older images no longer run. We have not diagnossed the problems.

An important limitation for Virtual Box is defining all needed disk space when you define the image. It is difficult for the users to re-define availalbe disk space.

Also, moving files in and out of the Virtual box was a common issue. ftping them was common. There was filesharing capabilities in virtual box, but they required some extensions and they were difficult to get working in a reliable manner.

Base Docker Image:

We'd like our docker image to be as close to our ucvm development environment as possible. To help future users minimize costs, we based our image on rockylinux (a centos-like distribution), then we added selected software packages including gcc, python, automake and others.

Virtual Machine and Docker Terminology

We call files with executable commands "images". We have posted UCVM images onto dockerhub When we startup an image, and run the image, we call the running image a "container". The container includes SCEC's scientific software (UCVM), as well as the operating system and other files needed to run the software.

Potential Benefits of using Docker

An important benefit of the Docker version of UCVM model is they can be run, using Docker, on most modern computers. UCVM is designed to run on Linux systems, but through the use of Docker, UCVM can run on Mac, and Windows as well.

Challenges using Docker

In order to use the Docker version of UCVM, users must (1) be comfortable using UCVM from the command line. Once the UCVM container is running, Users issues standard command line UCVM queries, such as "ucvm_query".

In addition, users must be comfortable invoking the container on their system. There is an expected directory structure, specifically, there should be a "/target" subdirectory in the location where the command is issued. Also, the Docker invocation includes parameters (--rm and -it) with single and double dashes, environment variable references $(pwd), and operating system level commands (e.g. mount, bind). Although the invocation looks complex, once the container is running, it works much like a standard UCVM installations.

Distribution Format

To help avoid large Docker images, we put one CVM into each image. The idea (for now) is that you can retrieve as many of the images as you like, but you do not get all UCVM models in a single Docker image, because that image would be excessively large. The primary disadvantage of this approach is that users cannot "tile" seismic veloicty models as easily. UCVM Tiling allows users to specify a list of velocity models (e.g. -m cvms5,cvmh,cvms) and UCVM will query them in order until it finds material properties defined for a given point. All models referenced in the -m model list must be installed for this UCVM command to work. If you wish to tile multiple seismic velocity models, users may need to do a full installation on a linux system and install all needed models.

Potential Benefits to Research using UCVM Docker Images

  • Full UCVM software installation is not needed. Downloading UCVM Docker images is simple.
  • UCVM software is now portable to previously unsupported operating systems including Mac and Windows.
  • Docker images with individual models require less disk space on users computers. Users can retreieve, usem remove images easily.

Potential Limitations

  • Users must be comfortable running ucvm from a command line interface. This over means they are creating output files, and extracting selected information for plotting.
  • Users must work within limits of images and local computers. There are some ucvm problems, such as creating simulation meshes, that won't run on laptops. So users need to understand large-scale usage will probably require installation of UCVM on Linux systems with MPI.
  • UCVM is used on supercomputers, for example, to build simulation meshes. The docker version of UCVM may not work for this purpose. There may be a query limit on number of inputs points that an image can query.

Clone this wiki locally