Skip to content

About

Docker images with MD packages that support streaming with IMD v3.

Resources

Stars

1 star

Watchers

1 watching

Forks

Latest commit

 

History

149 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 

Repository files navigation

Containers for IMD streaming

The following builds a container containing LAMMPS and GROMACS ready for use with the IMD v3 streaming interface. (We also have a version of NAMD with IMDv3 streaming but NAMD's license does not allow us to include it here.)

Building

The "common" directory contains a Dockerfile which will contain both LAMMPS and GROMACS.

The following arguments are required to build the container from source for a CPU-only build:

docker buildx build -t streaming_md_docker_local \
    --build-arg GMX_OPTS="" \
    --build-arg LMP_OPTS="" \
    --build-arg CUDA_VER=12.4.1 \
    --build-arg DISTRO_ARCH=amd64 \
    --build-arg DISTRO_VER=22.04 \
    --build-arg DISTRO_NAME=ubuntu \
    ./docker/common

These are the values passed in the CI which are tested. Other build argument configurations are not guaranteed to build succesfully.

After building, you can then run the container using:

docker run -it streaming_md_docker_local

For a GPU-build, you can do:

docker buildx build -t streaming_md_docker_local \
    --build-arg GMX_OPTS="-DGMX_GPU=CUDA" \
    --build-arg LMP_OPTS="-DPKG_GPU=on -DGPU_API=cuda" \
    --build-arg CUDA_VER=12.4.1 \
    --build-arg DISTRO_ARCH=amd64 \
    --build-arg DISTRO_VER=22.04 \
    --build-arg DISTRO_NAME=ubuntu \
    ./docker/common

To run with a GPU exposed to your docker container, install the nvidia container toolkit and use the following:

docker run -it --runtime=nvidia --gpus=all streaming_md_docker_local

Included builds (IMDv2 and IMDv3)

Each image contains four builds, one per code and IMD version:

Build Source branch Install dir Command
gromacs-imdv2 vanilla-benchmarking (GitLab) /opt/gromacs-imdv2 gmx-imdv2
gromacs-imdv3 imdv3-benchmarking (GitLab) /opt/gromacs-imdv3 gmx-imdv3
lammps-imdv2 vanilla-benchmarking (GitHub) /opt/lammps-imdv2 lmp-imdv2
lammps-imdv3 imdv3-benchmarking (GitHub) /opt/lammps-imdv3 lmp-imdv3

The plain gmx and lmp commands point to the IMDv3 builds by default. The branches are build arguments (GMX_IMDV2_BRANCH, GMX_IMDV3_BRANCH, LMP_IMDV2_BRANCH, LMP_IMDV3_BRANCH) and the default can be changed with --build-arg DEFAULT_IMD_VERSION=imdv2. The branches used are recorded as image labels (e.g. gromacs-imdv2.branch).

Example: call a specific version by using its suffixed command (these are just examples, any of the four commands in the table can be used the same way):

docker run -it streaming_md_docker_local gmx-imdv2 --version
docker run -it streaming_md_docker_local gmx-imdv3 --version
docker run -it streaming_md_docker_local lmp-imdv2 -h
docker run -it streaming_md_docker_local lmp-imdv3 -h

NAMD (private image)

The NAMD image (docker/namd, not published publicly) follows the same pattern, built from tcbgUIUC/namd with the NAMD_ACCESS_TOKEN secret:

Build Source branch Install dir Command
namd-imdv2 vanilla-benchmarking /opt/namd-imdv2 namd3-imdv2
namd-imdv3 imdv3-benchmarking /opt/namd-imdv3 namd3-imdv3

Plain namd3 points to the IMDv3 build (DEFAULT_IMD_VERSION). The branches are the build arguments NAMD_IMDV2_BRANCH and NAMD_IMDV3_BRANCH.

Using a prebuilt image

We publish prebuilt images using CI at ghcr.io. Pull the latest image using:

docker pull ghcr.io/becksteinlab/streaming-md-docker:main-common-gpu
docker run -it --runtime=nvidia --gpus=all ghcr.io/becksteinlab/streaming-md-docker:main-common-gpu

About

Docker images with MD packages that support streaming with IMD v3.

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages