From f16dc6f9f1bbe78a30722978961520997e3c4ea2 Mon Sep 17 00:00:00 2001 From: Daniel Shawul Date: Thu, 15 Oct 2020 09:23:08 -0600 Subject: [PATCH] Major update. --- Dockerfiles/gnu/Dockerfile-gfs | 4 +- Dockerfiles/gnu/Dockerfile-gsi | 18 +++++++ Dockerfiles/gnu/Dockerfile-ufs-utils | 15 ++++++ Dockerfiles/intel/Dockerfile-gfs | 2 +- Dockerfiles/intel/Dockerfile-gsi | 18 +++++++ Dockerfiles/intel/Dockerfile-nceplibs | 1 + Dockerfiles/intel/Dockerfile-ufs-utils | 15 ++++++ build_gnu_images.sh | 9 ++++ build_intel_images.sh | 11 ++++ patch_fv3.sh | 1 - patch_gfs.sh | 1 - patches/fv3gfs/FV3.diff | 72 -------------------------- scripts/build_esmf.sh | 4 +- scripts/build_mpi.sh | 2 +- scripts/build_nceplibs.sh | 2 +- scripts/build_netcdf.sh | 4 +- 16 files changed, 93 insertions(+), 86 deletions(-) create mode 100644 Dockerfiles/gnu/Dockerfile-gsi create mode 100644 Dockerfiles/gnu/Dockerfile-ufs-utils create mode 100644 Dockerfiles/intel/Dockerfile-gsi create mode 100644 Dockerfiles/intel/Dockerfile-ufs-utils diff --git a/Dockerfiles/gnu/Dockerfile-gfs b/Dockerfiles/gnu/Dockerfile-gfs index 374717a..8d85efe 100644 --- a/Dockerfiles/gnu/Dockerfile-gfs +++ b/Dockerfiles/gnu/Dockerfile-gfs @@ -20,13 +20,11 @@ RUN mkdir -p -m 0600 ~/.ssh && ssh-keyscan -p 29418 -t rsa vlab.ncep.noaa.gov > # mount ssh and secret ssh config file ARG GERRIT_ID RUN --mount=type=ssh,id=default \ - --mount=type=secret,id=${GERRIT_ID},dst=/root/.ssh/config \ + --mount=type=secret,id=gerrit,dst=/root/.ssh/config \ cat /root/.ssh/config \ && ssh-add -L \ && cd /opt && ./checkout_gfs.sh -COPY ./patches/workflow/GSI.diff /opt/patches/workflow/GSI.diff - # clone and build gfs RUN cd /opt && ./patch_gfs.sh && \ cd global-workflow/sorc && bash ./build_all.sh && bash ./link_fv3gfs.sh emc linux.gnu diff --git a/Dockerfiles/gnu/Dockerfile-gsi b/Dockerfiles/gnu/Dockerfile-gsi new file mode 100644 index 0000000..288a2f7 --- /dev/null +++ b/Dockerfiles/gnu/Dockerfile-gsi @@ -0,0 +1,18 @@ +# stage-1 +ARG REPO +FROM ${REPO}/gfs-gnu:latest +MAINTAINER Daniel Abdi + +# stage-2 +FROM ${REPO}/esmf-gnu:latest +MAINTAINER Daniel Abdi + +RUN apt-get update -y && \ + DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \ + libblas-dev \ + liblapack-dev \ + && rm -rf /var/lib/apt/lists/* + +RUN mkdir -p /opt/exec +COPY --from=0 /etc/bashrc /etc/bashrc +COPY --from=0 /opt/global-workflow/sorc/gsi.fd/exec /opt/exec diff --git a/Dockerfiles/gnu/Dockerfile-ufs-utils b/Dockerfiles/gnu/Dockerfile-ufs-utils new file mode 100644 index 0000000..3e8b140 --- /dev/null +++ b/Dockerfiles/gnu/Dockerfile-ufs-utils @@ -0,0 +1,15 @@ +# stage-1 +ARG REPO +FROM ${REPO}/gfs-gnu:latest +MAINTAINER Daniel Abdi + +# stage-2 +FROM ${REPO}/esmf-gnu:latest +MAINTAINER Daniel Abdi + +RUN mkdir -p /opt/exec +COPY --from=0 /etc/bashrc /etc/bashrc +COPY --from=0 /opt/global-workflow/sorc/ufs_utils.fd/exec /opt/exec +COPY --from=0 /usr/local/lib/libjasper.so /usr/local/lib/libjasper.so +COPY --from=0 /usr/local/lib/libjasper.so.4 /usr/local/lib/libjasper.so.4 +COPY --from=0 /usr/local/lib/libjasper.so.4.0.0 /usr/local/lib/libjasper.so.4.0.0 diff --git a/Dockerfiles/intel/Dockerfile-gfs b/Dockerfiles/intel/Dockerfile-gfs index 6f9cc94..9cacb50 100644 --- a/Dockerfiles/intel/Dockerfile-gfs +++ b/Dockerfiles/intel/Dockerfile-gfs @@ -20,7 +20,7 @@ RUN mkdir -p -m 0600 ~/.ssh && ssh-keyscan -p 29418 -t rsa vlab.ncep.noaa.gov > # mount ssh and secret ssh config file ARG GERRIT_ID RUN --mount=type=ssh,id=default \ - --mount=type=secret,id=${GERRIT_ID},dst=/root/.ssh/config \ + --mount=type=secret,id=gerrit,dst=/root/.ssh/config \ cat /root/.ssh/config \ && ssh-add -L \ && cd /opt && ./checkout_gfs.sh diff --git a/Dockerfiles/intel/Dockerfile-gsi b/Dockerfiles/intel/Dockerfile-gsi new file mode 100644 index 0000000..d0db11c --- /dev/null +++ b/Dockerfiles/intel/Dockerfile-gsi @@ -0,0 +1,18 @@ +# stage-1 +ARG REPO +FROM ${REPO}/gfs-intel:latest +MAINTAINER Daniel Abdi + +# stage-2 +FROM ${REPO}/esmf-intel:latest +MAINTAINER Daniel Abdi + +RUN dnf update -y && \ + dnf install -y --enablerepo=PowerTools \ + lapack-devel \ + blas-devel \ + && rm -rf /var/lib/apt/lists/* + +RUN mkdir -p /opt/exec +COPY --from=0 /etc/bashrc /etc/bashrc +COPY --from=0 /opt/global-workflow/sorc/gsi.fd/exec /opt/exec diff --git a/Dockerfiles/intel/Dockerfile-nceplibs b/Dockerfiles/intel/Dockerfile-nceplibs index 12cfa06..e76a6cf 100644 --- a/Dockerfiles/intel/Dockerfile-nceplibs +++ b/Dockerfiles/intel/Dockerfile-nceplibs @@ -6,6 +6,7 @@ RUN dnf update -y && \ dnf install -y --enablerepo=PowerTools \ redhat-lsb-core \ curl-devel \ + lapack-devel \ blas-devel \ libpng-devel \ bzip2-devel \ diff --git a/Dockerfiles/intel/Dockerfile-ufs-utils b/Dockerfiles/intel/Dockerfile-ufs-utils new file mode 100644 index 0000000..e62bc18 --- /dev/null +++ b/Dockerfiles/intel/Dockerfile-ufs-utils @@ -0,0 +1,15 @@ +# stage-1 +ARG REPO +FROM ${REPO}/gfs-intel:latest +MAINTAINER Daniel Abdi + +# stage-2 +FROM ${REPO}/esmf-intel:latest +MAINTAINER Daniel Abdi + +RUN mkdir -p /opt/exec +COPY --from=0 /etc/bashrc /etc/bashrc +COPY --from=0 /opt/global-workflow/sorc/ufs_utils.fd/exec /opt/exec +COPY --from=0 /usr/local/lib/libjasper.so /usr/local/lib/libjasper.so +COPY --from=0 /usr/local/lib/libjasper.so.4 /usr/local/lib/libjasper.so.4 +COPY --from=0 /usr/local/lib/libjasper.so.4.0.0 /usr/local/lib/libjasper.so.4.0.0 diff --git a/build_gnu_images.sh b/build_gnu_images.sh index acd0b7e..79aaec9 100755 --- a/build_gnu_images.sh +++ b/build_gnu_images.sh @@ -44,3 +44,12 @@ IMAGE_NAME=${REPO}/fv3-gnu DOCKER_FILE=Dockerfiles/gnu/Dockerfile-fv3 build_image ${IMAGE_NAME} ${DOCKER_FILE} +#ufs-utils +IMAGE_NAME=${REPO}/ufs-utils-gnu +DOCKER_FILE=Dockerfiles/gnu/Dockerfile-ufs-utils +build_image ${IMAGE_NAME} ${DOCKER_FILE} + +#gsi +IMAGE_NAME=${REPO}/gsi-gnu +DOCKER_FILE=Dockerfiles/gnu/Dockerfile-gsi +build_image ${IMAGE_NAME} ${DOCKER_FILE} diff --git a/build_intel_images.sh b/build_intel_images.sh index 365badd..f89d29c 100755 --- a/build_intel_images.sh +++ b/build_intel_images.sh @@ -60,3 +60,14 @@ DOCKER_FILE=Dockerfiles/intel/Dockerfile-fv3 COMMAND="cd /opt; source intel_comp.sh; ./copy_deps.sh" build_image ${IMAGE_NAME} ${DOCKER_FILE} "${COMMAND}" +#ufs-utils +IMAGE_NAME=${REPO}/ufs-utils-intel +DOCKER_FILE=Dockerfiles/intel/Dockerfile-ufs-utils +COMMAND="cd /opt; source intel_comp.sh; ./copy_deps.sh" +build_image ${IMAGE_NAME} ${DOCKER_FILE} "${COMMAND}" + +#gsi +IMAGE_NAME=${REPO}/gsi-intel +DOCKER_FILE=Dockerfiles/intel/Dockerfile-gsi +COMMAND="cd /opt; source intel_comp.sh; ./copy_deps.sh" +build_image ${IMAGE_NAME} ${DOCKER_FILE} "${COMMAND}" diff --git a/patch_fv3.sh b/patch_fv3.sh index a2a4735..cd12169 100755 --- a/patch_fv3.sh +++ b/patch_fv3.sh @@ -1,5 +1,4 @@ #!/bin/bash -set -exo pipefail FV3DIR=${FV3DIR:-NEMSfv3gfs} diff --git a/patch_gfs.sh b/patch_gfs.sh index 7f33db7..4639f96 100755 --- a/patch_gfs.sh +++ b/patch_gfs.sh @@ -1,5 +1,4 @@ #!/bin/bash -set -exo pipefail GFSDIR=${GFSDIR:-global-workflow} diff --git a/patches/fv3gfs/FV3.diff b/patches/fv3gfs/FV3.diff index df1ab58..c351660 100644 --- a/patches/fv3gfs/FV3.diff +++ b/patches/fv3gfs/FV3.diff @@ -38,75 +38,3 @@ index b9162a8..30bd783 100644 if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, line=__LINE__, file=__FILE__)) return if (mype == 0 .or. mype == lead_wrttask(n_group)) print *,'aft fieldbundleregrid,na=',na, & ' time=', timerh- timerhi -diff --git gfsphysics/GFS_layer/GFS_driver.F90 gfsphysics/GFS_layer/GFS_driver.F90 -index 28695eb..e0e98c2 100644 ---- gfsphysics/GFS_layer/GFS_driver.F90 -+++ gfsphysics/GFS_layer/GFS_driver.F90 -@@ -717,15 +717,15 @@ module GFS_driver - type(GFS_radtend_type), intent(inout) :: Radtend - type(GFS_diag_type), intent(inout) :: Diag - #else -- type(GFS_control_type), intent(in ) :: Model -- type(GFS_statein_type), intent(in ) :: Statein -- type(GFS_stateout_type), intent(in ) :: Stateout -- type(GFS_sfcprop_type), intent(in ) :: Sfcprop -+ type(GFS_control_type), intent(inout ) :: Model -+ type(GFS_statein_type), intent(inout ) :: Statein -+ type(GFS_stateout_type), intent(inout ) :: Stateout -+ type(GFS_sfcprop_type), intent(inout ) :: Sfcprop - type(GFS_coupling_type), intent(inout) :: Coupling -- type(GFS_grid_type), intent(in ) :: Grid -- type(GFS_tbd_type), intent(in ) :: Tbd -- type(GFS_cldprop_type), intent(in ) :: Cldprop -- type(GFS_radtend_type), intent(in ) :: Radtend -+ type(GFS_grid_type), intent(inout ) :: Grid -+ type(GFS_tbd_type), intent(inout ) :: Tbd -+ type(GFS_cldprop_type), intent(inout ) :: Cldprop -+ type(GFS_radtend_type), intent(inout ) :: Radtend - type(GFS_diag_type), intent(inout) :: Diag - #endif - !--- local variables -diff --git gfsphysics/GFS_layer/GFS_physics_driver.F90 gfsphysics/GFS_layer/GFS_physics_driver.F90 -index 06c710f..76bcaed 100644 ---- gfsphysics/GFS_layer/GFS_physics_driver.F90 -+++ gfsphysics/GFS_layer/GFS_physics_driver.F90 -@@ -462,12 +462,12 @@ module module_physics_driver - type(GFS_radtend_type), intent(inout) :: Radtend - type(GFS_diag_type), intent(inout) :: Diag - #else -- type(GFS_control_type), intent(in) :: Model -+ type(GFS_control_type), intent(inout) :: Model - type(GFS_statein_type), intent(inout) :: Statein - type(GFS_stateout_type), intent(inout) :: Stateout - type(GFS_sfcprop_type), intent(inout) :: Sfcprop - type(GFS_coupling_type), intent(inout) :: Coupling -- type(GFS_grid_type), intent(in) :: Grid -+ type(GFS_grid_type), intent(inout) :: Grid - type(GFS_tbd_type), intent(inout) :: Tbd - type(GFS_cldprop_type), intent(inout) :: Cldprop - type(GFS_radtend_type), intent(inout) :: Radtend -diff --git gfsphysics/GFS_layer/GFS_radiation_driver.F90 gfsphysics/GFS_layer/GFS_radiation_driver.F90 -index 8df0142..799808f 100644 ---- gfsphysics/GFS_layer/GFS_radiation_driver.F90 -+++ gfsphysics/GFS_layer/GFS_radiation_driver.F90 -@@ -1045,14 +1045,14 @@ - type(GFS_radtend_type), intent(inout) :: Radtend - type(GFS_diag_type), intent(inout) :: Diag - #else -- type(GFS_control_type), intent(in) :: Model -- type(GFS_statein_type), intent(in) :: Statein -+ type(GFS_control_type), intent(inout) :: Model -+ type(GFS_statein_type), intent(inout) :: Statein - type(GFS_stateout_type), intent(inout) :: Stateout -- type(GFS_sfcprop_type), intent(in) :: Sfcprop -+ type(GFS_sfcprop_type), intent(inout) :: Sfcprop - type(GFS_coupling_type), intent(inout) :: Coupling -- type(GFS_grid_type), intent(in) :: Grid -- type(GFS_tbd_type), intent(in) :: Tbd -- type(GFS_cldprop_type), intent(in) :: Cldprop -+ type(GFS_grid_type), intent(inout) :: Grid -+ type(GFS_tbd_type), intent(inout) :: Tbd -+ type(GFS_cldprop_type), intent(inout) :: Cldprop - type(GFS_radtend_type), intent(inout) :: Radtend - type(GFS_diag_type), intent(inout) :: Diag - #endif diff --git a/scripts/build_esmf.sh b/scripts/build_esmf.sh index 3cf5d69..e6e525a 100755 --- a/scripts/build_esmf.sh +++ b/scripts/build_esmf.sh @@ -1,11 +1,9 @@ #!/bin/bash -set -exo pipefail +set -ex export COMP=${COMP:-gnu} -NPROCS=`nproc` -export MAKEFLAGS="-j ${NPROCS}" #install directory and compiler flag INSTALL_DIR=${INSTALL_DIR:-/usr/local} SRC_DIR=${SRC_DIR:-/opt} diff --git a/scripts/build_mpi.sh b/scripts/build_mpi.sh index c227dfd..329450e 100755 --- a/scripts/build_mpi.sh +++ b/scripts/build_mpi.sh @@ -1,6 +1,6 @@ #!/bin/bash -set -exo pipefail +set -ex #install directory and compiler flag INSTALL_DIR=${INSTALL_DIR:-/usr/local} diff --git a/scripts/build_nceplibs.sh b/scripts/build_nceplibs.sh index cab2ee5..36a992f 100755 --- a/scripts/build_nceplibs.sh +++ b/scripts/build_nceplibs.sh @@ -1,5 +1,5 @@ #!/bin/bash -set -exo pipefail +set -ex export COMP=${COMP:-gnu} diff --git a/scripts/build_netcdf.sh b/scripts/build_netcdf.sh index f7c6be7..0f44d2b 100755 --- a/scripts/build_netcdf.sh +++ b/scripts/build_netcdf.sh @@ -1,11 +1,9 @@ #!/bin/bash -set -exo pipefail +set -ex export COMP=${COMP:-gnu} -NPROCS=`nproc` -export MAKEFLAGS="-j ${NPROCS}" #install directory and compiler flag INSTALL_DIR=${INSTALL_DIR:-/usr/local} SRC_DIR=${SRC_DIR:-/opt}