From d46bec6186f90b241b1a71e991c83a73c1bade86 Mon Sep 17 00:00:00 2001 From: David Minton Date: Fri, 26 May 2023 12:41:37 -0400 Subject: [PATCH 1/2] Restructured Docker and Singularity scripts. Added new GNU version of the Docker container that is smaller than the Intel one (but also slower). --- docker/.gitignore | 13 ++++++-- docker/bin/.gitignore | 1 - docker/gnu/Dockerfile | 44 ++++++++++++++++++++++++++++ docker/gnu/bin/.gitignore | 0 docker/{ => gnu}/bin/swiftest_driver | 2 +- docker/install.sh | 5 ++++ docker/{ => intel}/Dockerfile | 0 docker/pull | 2 -- singularity/.gitignore | 5 ++-- singularity/bin/.gitignore | 1 - singularity/install.sh | 9 ++++++ singularity/pull | 2 -- singularity/setenv.sh | 7 +++-- singularity/swiftest.def | 2 -- 14 files changed, 76 insertions(+), 17 deletions(-) delete mode 100644 docker/bin/.gitignore create mode 100644 docker/gnu/Dockerfile create mode 100644 docker/gnu/bin/.gitignore rename docker/{ => gnu}/bin/swiftest_driver (62%) create mode 100755 docker/install.sh rename docker/{ => intel}/Dockerfile (100%) delete mode 100755 docker/pull delete mode 100644 singularity/bin/.gitignore create mode 100755 singularity/install.sh delete mode 100755 singularity/pull delete mode 100644 singularity/swiftest.def diff --git a/docker/.gitignore b/docker/.gitignore index 825a38873..215dd3f04 100644 --- a/docker/.gitignore +++ b/docker/.gitignore @@ -1,3 +1,10 @@ -!Dockerfile -!bin/ -!pull +* +!.gitignore +!install.sh +!gnu/ +!gnu/Dockerfile +!/gnu/bin/ +!/gnu/bin/swiftest_driver +!intel/ +!intel/Dockerfile +!/intel/bin/swiftest_driver diff --git a/docker/bin/.gitignore b/docker/bin/.gitignore deleted file mode 100644 index c1d7ed39d..000000000 --- a/docker/bin/.gitignore +++ /dev/null @@ -1 +0,0 @@ -!swiftest_driver diff --git a/docker/gnu/Dockerfile b/docker/gnu/Dockerfile new file mode 100644 index 000000000..ec64211bd --- /dev/null +++ b/docker/gnu/Dockerfile @@ -0,0 +1,44 @@ +FROM debian:stable-slim as build + +# kick everything off +RUN apt-get update && apt-get upgrade -y && \ + DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \ + ca-certificates curl git build-essential gfortran && \ + apt-get update && apt-get upgrade -y && \ + rm -rf /var/lib/apt/lists/* + +# Get CMAKE and install it +RUN mkdir -p /opt/cmake/build && \ + cd /opt/cmake/build && \ + curl -LO https://github.com/Kitware/CMake/releases/download/v3.26.2/cmake-3.26.2-linux-x86_64.sh && \ + /bin/bash cmake-3.26.2-linux-x86_64.sh --prefix=/usr/local --skip-license + +# Get dependencies +RUN apt-get update && apt-get upgrade -y && \ + DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \ + libnetcdf-dev libnetcdff-dev libcoarrays-dev libcoarrays-mpich-dev&& \ + rm -rf /var/lib/apt/lists/* + +ENV NETCDF_HOME="/usr" +ENV NETCDF_FORTRAN_HOME="/usr" +ENV INDIR="/opt/dist//usr/local" + +# Get Swiftest source code +RUN cd /opt/ && \ + git clone -b debug https://github.com/carlislewishard/swiftest.git && \ + cd swiftest && \ + mkdir build && \ + cd build && \ + cmake .. -DCMAKE_PREFIX_PATH="${INDIR}" -DCMAKE_INSTALL_PREFIX="${INDIR}" -DCONTAINERIZE=ON -DCMAKE_BUILD_TYPE=release && \ + make && \ + make install + +#Production container +FROM debian:stable-slim +COPY --from=build /opt/dist / +RUN apt-get update && apt-get upgrade -y && \ + DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \ + ca-certificates gfortran libnetcdf-dev libnetcdff-dev && \ + rm -rf /var/lib/apt/lists/* + +ENTRYPOINT ["/usr/local/bin/swiftest_driver"] \ No newline at end of file diff --git a/docker/gnu/bin/.gitignore b/docker/gnu/bin/.gitignore new file mode 100644 index 000000000..e69de29bb diff --git a/docker/bin/swiftest_driver b/docker/gnu/bin/swiftest_driver similarity index 62% rename from docker/bin/swiftest_driver rename to docker/gnu/bin/swiftest_driver index d2cb42a90..f0a3638dd 100755 --- a/docker/bin/swiftest_driver +++ b/docker/gnu/bin/swiftest_driver @@ -1,2 +1,2 @@ #!/bin/sh -- -docker run -v $(pwd):$(pwd) -w $(pwd) -t -e OMP_NUM_THREADS -e FOR_COARRAY_NUM_IMAGES swiftest:latest "$@" +docker run -v $(pwd):$(pwd) -w $(pwd) -t -e OMP_NUM_THREADS -e FOR_COARRAY_NUM_IMAGES swiftest_driver:gnu "$@" diff --git a/docker/install.sh b/docker/install.sh new file mode 100755 index 000000000..82e97d58f --- /dev/null +++ b/docker/install.sh @@ -0,0 +1,5 @@ +#!/bin/sh -- +tag=${1:-intel} +echo "Installing swiftest_driver:${tag} container and executable script" +docker pull daminton/swiftest_driver:${tag} +cp -rf ${tag}/bin/swiftest_driver ../bin/ \ No newline at end of file diff --git a/docker/Dockerfile b/docker/intel/Dockerfile similarity index 100% rename from docker/Dockerfile rename to docker/intel/Dockerfile diff --git a/docker/pull b/docker/pull deleted file mode 100755 index 2367ba639..000000000 --- a/docker/pull +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/sh -- -docker pull daminton/swiftest:latest \ No newline at end of file diff --git a/singularity/.gitignore b/singularity/.gitignore index abc0e7f03..2a259d270 100644 --- a/singularity/.gitignore +++ b/singularity/.gitignore @@ -1,3 +1,4 @@ -!swiftest.def !bin/ -!pull +!bin/swiftest_driver +!install.sh +!setenv.sh diff --git a/singularity/bin/.gitignore b/singularity/bin/.gitignore deleted file mode 100644 index c1d7ed39d..000000000 --- a/singularity/bin/.gitignore +++ /dev/null @@ -1 +0,0 @@ -!swiftest_driver diff --git a/singularity/install.sh b/singularity/install.sh new file mode 100755 index 000000000..ef3eb1b9e --- /dev/null +++ b/singularity/install.sh @@ -0,0 +1,9 @@ +#!/bin/sh -- +# This will install the Singularity container version of the swiftest_driver in place of the native compiled version into ../bin. +# In order to use the executable script, the SWIFTEST_SIF environment variable must be set to point to the location of swiftest_driver.sif, which requires this script to be called via source: +# $ . ./install.sh +# +tag=${1:-intel} +singularity pull --force swiftest_driver.sif docker://daminton/swiftest_driver:${tag} +cp -rf bin/swiftest_driver ../bin/ +source ./setenv.sh \ No newline at end of file diff --git a/singularity/pull b/singularity/pull deleted file mode 100755 index a62acaf6e..000000000 --- a/singularity/pull +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/sh -- -singularity pull --force swiftest.sif docker://daminton/swiftest:latest diff --git a/singularity/setenv.sh b/singularity/setenv.sh index 79931a298..308d49151 100755 --- a/singularity/setenv.sh +++ b/singularity/setenv.sh @@ -1,3 +1,4 @@ -#!/bin/sh -# source this file to set the path to the swiftest.sif file -export SWIFTEST_SIF="${PWD}/swiftest.sif" +#!/bin/sh -- +# This will set the SWIFTEST_SIF environment variable as long as it is executed by source. +# $ . ./setenvl.sh +export SWIFTEST_SIF="${PWD}/swiftest_driver.sif" \ No newline at end of file diff --git a/singularity/swiftest.def b/singularity/swiftest.def deleted file mode 100644 index ce6c10f63..000000000 --- a/singularity/swiftest.def +++ /dev/null @@ -1,2 +0,0 @@ -Bootstrap: docker -From: daminton/swiftest:latest \ No newline at end of file From 64d6a304a481dde06a4281c5c76019811a902023 Mon Sep 17 00:00:00 2001 From: David Minton Date: Fri, 26 May 2023 13:13:36 -0400 Subject: [PATCH 2/2] Fixed typos and added some output --- docker/install.sh | 2 +- singularity/install.sh | 1 + singularity/setenv.sh | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/docker/install.sh b/docker/install.sh index 82e97d58f..f81e95e57 100755 --- a/docker/install.sh +++ b/docker/install.sh @@ -1,5 +1,5 @@ #!/bin/sh -- tag=${1:-intel} -echo "Installing swiftest_driver:${tag} container and executable script" +echo "Installing swiftest_driver:${tag} Docker container and executable script" docker pull daminton/swiftest_driver:${tag} cp -rf ${tag}/bin/swiftest_driver ../bin/ \ No newline at end of file diff --git a/singularity/install.sh b/singularity/install.sh index ef3eb1b9e..50d6d56df 100755 --- a/singularity/install.sh +++ b/singularity/install.sh @@ -4,6 +4,7 @@ # $ . ./install.sh # tag=${1:-intel} +echo "Installing swiftest_driver.sif Singularity container and executable script from swiftest_driver:${tag} Docker container" singularity pull --force swiftest_driver.sif docker://daminton/swiftest_driver:${tag} cp -rf bin/swiftest_driver ../bin/ source ./setenv.sh \ No newline at end of file diff --git a/singularity/setenv.sh b/singularity/setenv.sh index 308d49151..cc8905033 100755 --- a/singularity/setenv.sh +++ b/singularity/setenv.sh @@ -1,4 +1,4 @@ #!/bin/sh -- # This will set the SWIFTEST_SIF environment variable as long as it is executed by source. -# $ . ./setenvl.sh +# $ . ./setenv.sh export SWIFTEST_SIF="${PWD}/swiftest_driver.sif" \ No newline at end of file