From 9d78746f6abb0dbbbdacf6750a9c8b7c9f7114a3 Mon Sep 17 00:00:00 2001
From: Chuck Atkins <chuck.atkins@kitware.com>
Date: Fri, 24 Jan 2020 09:06:52 -0500
Subject: [PATCH] ci: restructure docker images with common layers

---
 cmake/FindPythonFull.cmake                    |  13 +--
 cmake/FindPythonModule.cmake                  |   2 +
 .../ci-el7-gnu8-openmpi-ohpc-static.cmake     |   7 +-
 .../ci/cmake/ci-el7-gnu8-openmpi-ohpc.cmake   |   7 +-
 .../cmake/ci-el7-intel18-openmpi-ohpc.cmake   |   7 +-
 scripts/ci/images/el7-base/Dockerfile         |  25 +++++
 .../ci/images/el7-gnu8-ohpc-base/Dockerfile   |  42 +++++++
 scripts/ci/images/el7-gnu8-ohpc/Dockerfile    |  68 +----------
 .../images/el7-gnu8-openmpi-ohpc/Dockerfile   |  87 +-------------
 .../images/el7-intel18-ohpc-base/Dockerfile   |  55 +++++++++
 .../silent-custom.cfg                         |   0
 scripts/ci/images/el7-intel18-ohpc/Dockerfile |  87 +-------------
 .../el7-intel18-openmpi-ohpc/Dockerfile       | 106 ++----------------
 .../silent-custom.cfg                         |   9 --
 scripts/ci/images/el7/Dockerfile              |  31 +----
 scripts/ci/images/suse-pgi-base/Dockerfile    |  77 +++++++++++++
 scripts/ci/images/suse-pgi-openmpi/Dockerfile |  85 +-------------
 scripts/ci/images/suse-pgi/Dockerfile         |  93 ++++-----------
 18 files changed, 261 insertions(+), 540 deletions(-)
 create mode 100644 scripts/ci/images/el7-base/Dockerfile
 create mode 100644 scripts/ci/images/el7-gnu8-ohpc-base/Dockerfile
 create mode 100644 scripts/ci/images/el7-intel18-ohpc-base/Dockerfile
 rename scripts/ci/images/{el7-intel18-ohpc => el7-intel18-ohpc-base}/silent-custom.cfg (100%)
 delete mode 100644 scripts/ci/images/el7-intel18-openmpi-ohpc/silent-custom.cfg
 create mode 100644 scripts/ci/images/suse-pgi-base/Dockerfile

diff --git a/cmake/FindPythonFull.cmake b/cmake/FindPythonFull.cmake
index b4fe66263..80af3df6e 100644
--- a/cmake/FindPythonFull.cmake
+++ b/cmake/FindPythonFull.cmake
@@ -34,18 +34,7 @@ foreach(comp IN LISTS PythonFull_FIND_COMPONENTS)
     set(PythonFull_${comp}_FOUND ${PYTHONINTERP_FOUND})
     list(APPEND _req_vars PYTHON_EXECUTABLE)
   elseif(comp STREQUAL Libs)
-    if(PYTHONINTERP_FOUND AND Python_ADDITIONAL_VERSIONS)
-      set(_Python_ADDITIONAL_VERSIONS "${Python_ADDITIONAL_VERSIONS}")
-      unset(Python_ADDITIONAL_VERSIONS)
-      unset(Python_ADDITIONAL_VERSIONS CACHE)
-      find_package(PythonLibs)
-      set(Python_ADDITIONAL_VERSIONS "${_Python_ADDITIONAL_VERSIONS}"
-        CACHE STRING "Python versions to search for"
-      )
-      unset(_Python_ADDITIONAL_VERSIONS)
-    else()
-      find_package(PythonLibs)
-    endif()
+    find_package(PythonLibs ${PYTHON_VERSION_STRING})
     set(PythonFull_${comp}_FOUND ${PYTHONLIBS_FOUND})
     list(APPEND _req_vars PYTHON_LIBRARIES)
   else()
diff --git a/cmake/FindPythonModule.cmake b/cmake/FindPythonModule.cmake
index c47f71dbc..53719b139 100644
--- a/cmake/FindPythonModule.cmake
+++ b/cmake/FindPythonModule.cmake
@@ -119,10 +119,12 @@ set( PythonModule_${module_NAME}_PATH
   endif()
 
   include(FindPackageHandleStandardArgs)
+  set(FPHSA_NAME_MISMATCHED TRUE)
   find_package_handle_standard_args(PythonModule_${module_NAME}
     FOUND_VAR PythonModule_${module_NAME}_FOUND
     REQUIRED_VARS ${required_vars}
   )
+  unset(FPHSA_NAME_MISMATCHED)
 endif()
 
 if(PythonModule_${module_NAME}_FOUND AND
diff --git a/scripts/ci/cmake/ci-el7-gnu8-openmpi-ohpc-static.cmake b/scripts/ci/cmake/ci-el7-gnu8-openmpi-ohpc-static.cmake
index 75fc46d82..96d0b4079 100644
--- a/scripts/ci/cmake/ci-el7-gnu8-openmpi-ohpc-static.cmake
+++ b/scripts/ci/cmake/ci-el7-gnu8-openmpi-ohpc-static.cmake
@@ -8,9 +8,10 @@ find_package(EnvModules REQUIRED)
 
 env_module(purge)
 env_module(load gnu8)
-env_module(load py3-numpy)
+env_module(load py2-numpy)
 env_module(load openmpi3)
-env_module(load py3-mpi4py)
+env_module(load phdf5)
+env_module(load py2-mpi4py)
 
 set(ENV{CC}  gcc)
 set(ENV{CXX} g++)
@@ -36,7 +37,7 @@ ADIOS2_USE_ZFP:BOOL=ON
 
 MPIEXEC_EXTRA_FLAGS:STRING=--allow-run-as-root --oversubscribe
 MPIEXEC_MAX_NUMPROCS:STRING=${N2CPUS}
-PYTHON_EXECUTABLE:FILEPATH=/usr/bin/python3.4
+PYTHON_EXECUTABLE:FILEPATH=/usr/bin/python2.7
 ")
 
 set(CTEST_TEST_ARGS PARALLEL_LEVEL 1)
diff --git a/scripts/ci/cmake/ci-el7-gnu8-openmpi-ohpc.cmake b/scripts/ci/cmake/ci-el7-gnu8-openmpi-ohpc.cmake
index 1d2d1fb72..e78dd52fe 100644
--- a/scripts/ci/cmake/ci-el7-gnu8-openmpi-ohpc.cmake
+++ b/scripts/ci/cmake/ci-el7-gnu8-openmpi-ohpc.cmake
@@ -8,9 +8,10 @@ find_package(EnvModules REQUIRED)
 
 env_module(purge)
 env_module(load gnu8)
-env_module(load py3-numpy)
+env_module(load py2-numpy)
 env_module(load openmpi3)
-env_module(load py3-mpi4py)
+env_module(load phdf5)
+env_module(load py2-mpi4py)
 
 set(ENV{CC}  gcc)
 set(ENV{CXX} g++)
@@ -33,7 +34,7 @@ ADIOS2_USE_ZFP:BOOL=ON
 
 MPIEXEC_EXTRA_FLAGS:STRING=--allow-run-as-root --oversubscribe
 MPIEXEC_MAX_NUMPROCS:STRING=${N2CPUS}
-PYTHON_EXECUTABLE:FILEPATH=/usr/bin/python3.4
+PYTHON_EXECUTABLE:FILEPATH=/usr/bin/python2.7
 ")
 
 set(CTEST_TEST_ARGS PARALLEL_LEVEL 1)
diff --git a/scripts/ci/cmake/ci-el7-intel18-openmpi-ohpc.cmake b/scripts/ci/cmake/ci-el7-intel18-openmpi-ohpc.cmake
index c6362f842..0eeef5c7d 100644
--- a/scripts/ci/cmake/ci-el7-intel18-openmpi-ohpc.cmake
+++ b/scripts/ci/cmake/ci-el7-intel18-openmpi-ohpc.cmake
@@ -8,9 +8,10 @@ find_package(EnvModules REQUIRED)
 
 env_module(purge)
 env_module(load intel)
-env_module(load py2-numpy)
+env_module(load py3-numpy)
 env_module(load openmpi3)
-env_module(load py2-mpi4py)
+env_module(load phdf5)
+env_module(load py3-mpi4py)
 
 set(ENV{CC}  icc)
 set(ENV{CXX} icpc)
@@ -33,7 +34,7 @@ ADIOS2_USE_ZFP:STRING=ON
 
 MPIEXEC_EXTRA_FLAGS:STRING=--allow-run-as-root --oversubscribe
 MPIEXEC_MAX_NUMPROCS:STRING=${N2CPUS}
-PYTHON_EXECUTABLE:FILEPATH=/usr/bin/python2.7
+PYTHON_EXECUTABLE:FILEPATH=/usr/bin/python3.4
 ")
 
 set(CTEST_TEST_ARGS PARALLEL_LEVEL 1)
diff --git a/scripts/ci/images/el7-base/Dockerfile b/scripts/ci/images/el7-base/Dockerfile
new file mode 100644
index 000000000..abf806aae
--- /dev/null
+++ b/scripts/ci/images/el7-base/Dockerfile
@@ -0,0 +1,25 @@
+FROM centos:centos7
+
+# Install core dev packages
+RUN yum -y install make curl file git valgrind vim bison flex sudo gdb \
+        pkgconfig bison flex pkgconfig gcc gcc-c++ gcc-gfortran \
+        zlib zlib-devel bzip2 bzip2-libs bzip2-devel libpng-devel \
+        libfabric-devel libffi-devel
+RUN yum -y install epel-release && \
+    yum -y install zeromq-devel blosc-devel libzstd-devel
+
+# Install and setup newer version of git from the
+# Red Hat Software Collections Library
+RUN yum -y install centos-release-scl-rh && \
+    yum -y install rh-git218
+ENV LD_LIBRARY_PATH=/opt/rh/httpd24/root/usr/lib64:${LD_LIBRARY_PATH} \
+    PATH=/opt/rh/rh-git218/root/usr/bin:${PATH}
+
+# Install the most recent CMake nightly binary
+WORKDIR /opt/cmake
+RUN curl -L https://cmake.org/files/dev/$(curl https://cmake.org/files/dev/ | sed -n '/Linux-x86_64.tar.gz/s/.*>\(cmake[^<]*\)<.*/\1/p' | sort | tail -1) | tar --strip-components=1 -xzv
+ENV PATH=/opt/cmake/bin:${PATH}
+
+# Misc cleanup of unneeded files
+RUN yum clean all && \
+    rm -rfv /tmp/* /var/cache/yum
diff --git a/scripts/ci/images/el7-gnu8-ohpc-base/Dockerfile b/scripts/ci/images/el7-gnu8-ohpc-base/Dockerfile
new file mode 100644
index 000000000..3e3ede94c
--- /dev/null
+++ b/scripts/ci/images/el7-gnu8-ohpc-base/Dockerfile
@@ -0,0 +1,42 @@
+FROM ornladios/adios2:el7-base
+
+# Install OpenHPC packages
+RUN yum -y install https://github.com/openhpc/ohpc/releases/download/v1.3.GA/ohpc-release-1.3-1.el7.x86_64.rpm && \
+    yum -y install lmod-ohpc gnu8-compilers-ohpc
+
+# Install ZFP
+WORKDIR /opt/zfp
+RUN curl -L https://github.com/LLNL/zfp/releases/download/0.5.5/zfp-0.5.5.tar.gz | tar -xvz && \
+    mkdir build && \
+    cd build && \
+    source /etc/profile && \
+    module load gnu8 && \
+    export CC=gcc CXX=g++ FC=gfortran && \
+    cmake -DBUILD_SHARED_LIBS=ON -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/opt/zfp/0.5.5 ../zfp-0.5.5 && \
+    make -j$(grep -c '^processor' /proc/cpuinfo) install && \
+    cd .. && \
+    rm -rf zfp-0.5.5 build
+ENV PATH=/opt/zfp/0.5.5/bin:${PATH} \
+    LD_LIBRARY_PATH=/opt/zfp/0.5.5/lib64:${LD_LIBRARY_PATH} \
+    CMAKE_PREFIX_PATH=/opt/zfp/0.5.5:${CMAKE_PREFIX_PATH}
+
+# Install SZ
+WORKDIR /opt/sz
+RUN curl -L https://github.com/disheng222/SZ/archive/v2.1.8.0.tar.gz | tar -xvz && \
+    mkdir build && \
+    cd build && \
+    source /etc/profile && \
+    module load gnu8 && \
+    export CC=gcc CXX=g++ FC=gfortran && \
+    cmake -DBUILD_SHARED_LIBS=ON -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/opt/sz/2.1.8.0 ../SZ-2.1.8.0 && \
+    make -j$(grep -c '^processor' /proc/cpuinfo) install && \
+    cd .. && \
+    rm -rf SZ-2.1.8.0 build
+ENV PATH=/opt/sz/2.1.8.0/bin:${PATH} \
+    LD_LIBRARY_PATH=/opt/sz/2.1.8.0/lib64:${LD_LIBRARY_PATH} \
+    CMAKE_PREFIX_PATH=/opt/sz/2.1.8.0:${CMAKE_PREFIX_PATH}
+
+# Misc cleanup of unneeded files
+RUN rm -rfv \
+        /tmp/* \
+        /var/cache/yum
diff --git a/scripts/ci/images/el7-gnu8-ohpc/Dockerfile b/scripts/ci/images/el7-gnu8-ohpc/Dockerfile
index e4aff371c..5a26e8619 100644
--- a/scripts/ci/images/el7-gnu8-ohpc/Dockerfile
+++ b/scripts/ci/images/el7-gnu8-ohpc/Dockerfile
@@ -1,71 +1,7 @@
-FROM centos:centos7
-
-# Install core dev packages
-RUN yum -y install make curl file git valgrind vim bison flex sudo gdb \
-        pkgconfig bison flex pkgconfig gcc gcc-c++ \
-        zlib-devel bzip2-devel libpng-devel libfabric-devel libffi-devel
-RUN yum -y install epel-release && \
-    yum -y install zeromq-devel blosc-devel python34-devel libzstd libzstd-devel
-
-# Install and setup  newer version of git from the
-# Red Hat Software Collections Library
-RUN yum -y install centos-release-scl-rh && \
-    yum -y install rh-git218
-ENV LD_LIBRARY_PATH=/opt/rh/httpd24/root/usr/lib64:${LD_LIBRARY_PATH} \
-    PATH=/opt/rh/rh-git218/root/usr/bin:${PATH}
+FROM ornladios/adios2:el7-gnu8-ohpc-base
 
 # Install OpenHPC packages
-RUN yum -y install https://github.com/openhpc/ohpc/releases/download/v1.3.GA/ohpc-release-1.3-1.el7.x86_64.rpm
-RUN yum -y install lmod-ohpc \
-        gnu8-compilers-ohpc python34-numpy-gnu8-ohpc hdf5-gnu8-ohpc
-
-# Install the CMake
-WORKDIR /opt/cmake
-RUN yum install -y openssl-devel && \
-    git clone https://gitlab.kitware.com/cmake/cmake.git source && \
-    mkdir build && \
-    cd build && \
-    ../source/bootstrap --prefix=/opt/cmake --parallel=$(grep -c '^processor' /proc/cpuinfo) && \
-    make -j$(grep -c '^processor' /proc/cpuinfo) install && \
-    cd .. && \
-    rm -rf source build
-ENV PATH=/opt/cmake/bin:${PATH}
-
-# Install ZFP
-WORKDIR /opt/zfp
-RUN curl -L https://github.com/LLNL/zfp/releases/download/0.5.5/zfp-0.5.5.tar.gz | tar -xvz && \
-    mkdir build && \
-    cd build && \
-    source /etc/profile && \
-    module load gnu8 && \
-    export CC=gcc CXX=g++ FC=gfortran && \
-    cmake -DBUILD_SHARED_LIBS=ON -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/opt/zfp/0.5.5 ../zfp-0.5.5 && \
-    make -j$(grep -c '^processor' /proc/cpuinfo) install && \
-    cd .. && \
-    rm -rf zfp-0.5.5 build
-ENV PATH=/opt/zfp/0.5.5/bin:${PATH} \
-    LD_LIBRARY_PATH=/opt/zfp/0.5.5/lib64:${LD_LIBRARY_PATH} \
-    CMAKE_PREFIX_PATH=/opt/zfp/0.5.5:${CMAKE_PREFIX_PATH}
-
-# Install SZ
-WORKDIR /opt/sz
-RUN curl -L https://github.com/disheng222/SZ/archive/v2.1.8.0.tar.gz | tar -xvz && \
-    mkdir build && \
-    cd build && \
-    source /etc/profile && \
-    module load gnu8 && \
-    export CC=gcc CXX=g++ FC=gfortran && \
-    cmake -DBUILD_SHARED_LIBS=ON -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/opt/sz/2.1.8.0 ../SZ-2.1.8.0 && \
-    make -j$(grep -c '^processor' /proc/cpuinfo) install && \
-    cd .. && \
-    rm -rf SZ-2.1.8.0 build
-ENV PATH=/opt/sz/2.1.8.0/bin:${PATH} \
-    LD_LIBRARY_PATH=/opt/sz/2.1.8.0/lib64:${LD_LIBRARY_PATH} \
-    CMAKE_PREFIX_PATH=/opt/sz/2.1.8.0:${CMAKE_PREFIX_PATH}
-
-# Install git-lfs
-RUN curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.rpm.sh | bash && \
-    yum install -y git-lfs
+RUN yum -y install python34-devel python34-numpy-gnu8-ohpc hdf5-gnu8-ohpc
 
 # Misc cleanup of unneeded files
 RUN yum clean all && \
diff --git a/scripts/ci/images/el7-gnu8-openmpi-ohpc/Dockerfile b/scripts/ci/images/el7-gnu8-openmpi-ohpc/Dockerfile
index 1f98b3d47..7d538a505 100644
--- a/scripts/ci/images/el7-gnu8-openmpi-ohpc/Dockerfile
+++ b/scripts/ci/images/el7-gnu8-openmpi-ohpc/Dockerfile
@@ -1,89 +1,8 @@
-FROM centos:centos7
-
-# Install core dev packages
-RUN yum -y install make curl file git valgrind vim bison flex sudo gdb \
-        pkgconfig bison flex pkgconfig bzip2 bzip2-libs gcc gcc-c++ \
-        zlib-devel bzip2-devel libpng-devel libfabric-devel libffi-devel
-RUN yum -y install epel-release && \
-    yum -y install zeromq-devel blosc-devel python34-devel libzstd libzstd-devel
-
-# Install and setup  newer version of git from the
-# Red Hat Software Collections Library
-RUN yum -y install centos-release-scl-rh && \
-    yum -y install rh-git218
-ENV LD_LIBRARY_PATH=/opt/rh/httpd24/root/usr/lib64:${LD_LIBRARY_PATH} \
-    PATH=/opt/rh/rh-git218/root/usr/bin:${PATH}
+FROM ornladios/adios2:el7-gnu8-ohpc-base
 
 # Install OpenHPC packages
-RUN yum -y install https://github.com/openhpc/ohpc/releases/download/v1.3.GA/ohpc-release-1.3-1.el7.x86_64.rpm
-RUN yum -y install lmod-ohpc \
-        gnu8-compilers-ohpc openmpi3-gnu8-ohpc \
-        python34-numpy-gnu8-ohpc python34-mpi4py-gnu8-openmpi3-ohpc
-
-# Install the CMake
-WORKDIR /opt/cmake
-RUN yum install -y openssl-devel && \
-    git clone https://gitlab.kitware.com/cmake/cmake.git source && \
-    mkdir build && \
-    cd build && \
-    ../source/bootstrap --prefix=/opt/cmake --parallel=$(grep -c '^processor' /proc/cpuinfo) && \
-    make -j$(grep -c '^processor' /proc/cpuinfo) install && \
-    cd .. && \
-    rm -rf source build
-ENV PATH=/opt/cmake/bin:${PATH}
-
-# Install HDF5 1.10.4 (the current 1.10.5 has a parallel close bug affecting
-# the tests
-WORKDIR /opt/hdf5
-RUN curl -L https://support.hdfgroup.org/ftp/HDF5/releases/hdf5-1.10/hdf5-1.10.4/src/hdf5-1.10.4.tar.bz2 | \
-        tar -xvj && \
-    cd hdf5-1.10.4 && \
-    source /etc/profile && \
-    module load gnu8 openmpi3 && \
-    export CC=mpicc CXX=mpicxx FC=mpif90 && \
-    ./configure --prefix=/opt/hdf5/1.10.4 --enable-shared --disable-static --enable-parallel && \
-    make -j$(grep -c '^processor' /proc/cpuinfo) install && \
-    cd .. && \
-    rm -rf hdf5-1.10.4
-ENV PATH=/opt/hdf5/1.10.4/bin:${PATH} \
-    LD_LIBRARY_PATH=/opt/hdf5/1.10.4/lib:${LD_LIBRARY_PATH} \
-    CMAKE_PREFIX_PATH=/opt/hdf5/1.10.4:${CMAKE_PREFIX_PATH}
-
-# Install ZFP
-WORKDIR /opt/zfp
-RUN curl -L https://github.com/LLNL/zfp/releases/download/0.5.5/zfp-0.5.5.tar.gz | tar -xvz && \
-    mkdir build && \
-    cd build && \
-    source /etc/profile && \
-    module load gnu8 && \
-    export CC=gcc CXX=g++ FC=gfortran && \
-    cmake -DBUILD_SHARED_LIBS=ON -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/opt/zfp/0.5.5 ../zfp-0.5.5 && \
-    make -j$(grep -c '^processor' /proc/cpuinfo) install && \
-    cd .. && \
-    rm -rf zfp-0.5.5 build
-ENV PATH=/opt/zfp/0.5.5/bin:${PATH} \
-    LD_LIBRARY_PATH=/opt/zfp/0.5.5/lib64:${LD_LIBRARY_PATH} \
-    CMAKE_PREFIX_PATH=/opt/zfp/0.5.5:${CMAKE_PREFIX_PATH}
-
-# Install SZ
-WORKDIR /opt/sz
-RUN curl -L https://github.com/disheng222/SZ/archive/v2.1.8.0.tar.gz | tar -xvz && \
-    mkdir build && \
-    cd build && \
-    source /etc/profile && \
-    module load gnu8 && \
-    export CC=gcc CXX=g++ FC=gfortran && \
-    cmake -DBUILD_SHARED_LIBS=ON -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/opt/sz/2.1.8.0 ../SZ-2.1.8.0 && \
-    make -j$(grep -c '^processor' /proc/cpuinfo) install && \
-    cd .. && \
-    rm -rf SZ-2.1.8.0 build
-ENV PATH=/opt/sz/2.1.8.0/bin:${PATH} \
-    LD_LIBRARY_PATH=/opt/sz/2.1.8.0/lib64:${LD_LIBRARY_PATH} \
-    CMAKE_PREFIX_PATH=/opt/sz/2.1.8.0:${CMAKE_PREFIX_PATH}
-
-# Install git-lfs
-RUN curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.rpm.sh | bash && \
-    yum install -y git-lfs
+RUN yum -y install python-devel python-numpy-gnu8-ohpc openmpi3-gnu8-ohpc \
+        phdf5-gnu8-openmpi3-ohpc python-mpi4py-gnu8-openmpi3-ohpc
 
 # Misc cleanup of unneeded files
 RUN yum clean all && \
diff --git a/scripts/ci/images/el7-intel18-ohpc-base/Dockerfile b/scripts/ci/images/el7-intel18-ohpc-base/Dockerfile
new file mode 100644
index 000000000..5bd9b3b42
--- /dev/null
+++ b/scripts/ci/images/el7-intel18-ohpc-base/Dockerfile
@@ -0,0 +1,55 @@
+FROM ornladios/adios2:el7-base
+
+# Install Intel C++ compiler
+WORKDIR /tmp
+COPY silent-custom.cfg /tmp
+RUN curl -L 'https://data.kitware.com/api/v1/file/5c1a96318d777f072bdbff4b/download' | tar -xz && \
+    ./parallel_studio_xe_2018_update4_cluster_edition/install.sh -s ./silent-custom.cfg && \
+     rm -rf parallel_studio_xe_2018* silent*
+
+# Install OpenHPC packages
+RUN yum -y install https://github.com/openhpc/ohpc/releases/download/v1.3.GA/ohpc-release-1.3-1.el7.x86_64.rpm && \
+    yum -y install lmod-ohpc intel-compilers-devel-ohpc
+
+# Install ZFP
+WORKDIR /opt/zfp
+RUN curl -L https://github.com/LLNL/zfp/releases/download/0.5.5/zfp-0.5.5.tar.gz | tar -xvz && \
+    mkdir build && \
+    cd build && \
+    source /etc/profile && \
+    module load intel && \
+    export CC=icc CXX=icpc FC=ifort && \
+    cmake -DBUILD_SHARED_LIBS=ON -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/opt/zfp/0.5.5 ../zfp-0.5.5 && \
+    make -j$(grep -c '^processor' /proc/cpuinfo) install && \
+    cd .. && \
+    rm -rf zfp-0.5.5 build
+ENV PATH=/opt/zfp/0.5.5/bin:${PATH} \
+    LD_LIBRARY_PATH=/opt/zfp/0.5.5/lib64:${LD_LIBRARY_PATH} \
+    CMAKE_PREFIX_PATH=/opt/zfp/0.5.5:${CMAKE_PREFIX_PATH}
+
+# Install SZ
+WORKDIR /opt/sz
+RUN curl -L https://github.com/disheng222/SZ/archive/v2.1.8.0.tar.gz | tar -xvz && \
+    mkdir build && \
+    cd build && \
+    source /etc/profile && \
+    module load intel && \
+    export CC=icc CXX=icpc FC=ifort && \
+    cmake -DBUILD_SHARED_LIBS=ON -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/opt/sz/2.1.8.0 ../SZ-2.1.8.0 && \
+    make -j$(grep -c '^processor' /proc/cpuinfo) install && \
+    cd .. && \
+    rm -rf SZ-2.1.8.0 build
+ENV PATH=/opt/sz/2.1.8.0/bin:${PATH} \
+    LD_LIBRARY_PATH=/opt/sz/2.1.8.0/lib64:${LD_LIBRARY_PATH} \
+    CMAKE_PREFIX_PATH=/opt/sz/2.1.8.0:${CMAKE_PREFIX_PATH}
+
+# Misc cleanup of unneeded files
+RUN rm -rfv \
+        /tmp/* \
+        /opt/intel/man \
+        /opt/intel/documentation_2018 \
+        /opt/intel/ide_support_2018 \
+        /opt/intel/samples_2018 \
+        /opt/intel/compilers_and_libraries_2018.2.199/linux/mkl/benchmarks \
+        /opt/intel/compilers_and_libraries_2018.2.199/linux/mkl/examples \
+        /var/cache/yum
diff --git a/scripts/ci/images/el7-intel18-ohpc/silent-custom.cfg b/scripts/ci/images/el7-intel18-ohpc-base/silent-custom.cfg
similarity index 100%
rename from scripts/ci/images/el7-intel18-ohpc/silent-custom.cfg
rename to scripts/ci/images/el7-intel18-ohpc-base/silent-custom.cfg
diff --git a/scripts/ci/images/el7-intel18-ohpc/Dockerfile b/scripts/ci/images/el7-intel18-ohpc/Dockerfile
index 001ca7ab4..d39bf0ba0 100644
--- a/scripts/ci/images/el7-intel18-ohpc/Dockerfile
+++ b/scripts/ci/images/el7-intel18-ohpc/Dockerfile
@@ -1,85 +1,8 @@
-FROM centos:centos7
+FROM ornladios/adios2:el7-intel18-ohpc-base
 
-# Install core dev packages
-RUN yum -y install make curl file git gcc gcc-g++ valgrind vim \
-        gdb zlib zlib-devel bzip2 bzip2-libs bzip2-devel python-devel \
-        libfabric libfabric-devel
-RUN yum -y install epel-release && \
-    yum -y install blosc-devel zeromq-devel libzstd libzstd-devel
-
-# Install and setup  newer version of git from the
-# Red Hat Software Collections Library
-RUN yum -y install centos-release-scl-rh && \
-    yum -y install rh-git218
-ENV LD_LIBRARY_PATH=/opt/rh/httpd24/root/usr/lib64:${LD_LIBRARY_PATH} \
-    PATH=/opt/rh/rh-git218/root/usr/bin:${PATH}
-
-# Install Intel C++ compiler
-WORKDIR /tmp
-COPY silent-custom.cfg /tmp
-RUN curl -L 'https://data.kitware.com/api/v1/file/5c1a96318d777f072bdbff4b/download' | tar -xz \
-  && ./parallel_studio_xe_2018_update4_cluster_edition/install.sh -s ./silent-custom.cfg \
-  && rm -rf parallel_studio_xe_2018* silent*
-
-# Install extra repos
-RUN yum -y install epel-release https://github.com/openhpc/ohpc/releases/download/v1.3.GA/ohpc-release-1.3-1.el7.x86_64.rpm
-
-# Install intel OpenHPC packages
-RUN yum -y install \
-  lmod-ohpc intel-compilers-devel-ohpc \
-  python-numpy-intel-ohpc hdf5-intel-ohpc
-
-# Install the CMake binary
-WORKDIR /opt/cmake
-RUN yum install -y openssl-devel && \
-    git clone https://gitlab.kitware.com/cmake/cmake.git source && \
-    mkdir build && \
-    cd build && \
-    ../source/bootstrap --prefix=/opt/cmake --parallel=$(grep -c '^processor' /proc/cpuinfo) && \
-    make -j$(grep -c '^processor' /proc/cpuinfo) install && \
-    cd .. && \
-    rm -rf source build
-ENV PATH=/opt/cmake/bin:${PATH}
-
-# Install ZFP
-WORKDIR /opt/zfp
-RUN curl -L https://github.com/LLNL/zfp/releases/download/0.5.5/zfp-0.5.5.tar.gz | tar -xvz && \
-    mkdir build && \
-    cd build && \
-    source /etc/profile && \
-    module load intel && \
-    export CC=icc CXX=icpc FC=ifort && \
-    cmake -DBUILD_SHARED_LIBS=ON -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/opt/zfp/0.5.5 ../zfp-0.5.5 && \
-    make -j$(grep -c '^processor' /proc/cpuinfo) install && \
-    cd .. && \
-    rm -rf zfp-0.5.5 build
-ENV PATH=/opt/zfp/0.5.5/bin:${PATH} \
-    LD_LIBRARY_PATH=/opt/zfp/0.5.5/lib64:${LD_LIBRARY_PATH} \
-    CMAKE_PREFIX_PATH=/opt/zfp/0.5.5:${CMAKE_PREFIX_PATH}
-
-# Install SZ
-WORKDIR /opt/sz
-RUN curl -L https://github.com/disheng222/SZ/archive/v2.1.8.0.tar.gz | tar -xvz && \
-    mkdir build && \
-    cd build && \
-    source /etc/profile && \
-    module load intel && \
-    export CC=icc CXX=icpc FC=ifort && \
-    cmake -DBUILD_SHARED_LIBS=ON -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/opt/sz/2.1.8.0 ../SZ-2.1.8.0 && \
-    make -j$(grep -c '^processor' /proc/cpuinfo) install && \
-    cd .. && \
-    rm -rf SZ-2.1.8.0 build
-ENV PATH=/opt/sz/2.1.8.0/bin:${PATH} \
-    LD_LIBRARY_PATH=/opt/sz/2.1.8.0/lib64:${LD_LIBRARY_PATH} \
-    CMAKE_PREFIX_PATH=/opt/sz/2.1.8.0:${CMAKE_PREFIX_PATH}
+# Install OpenHPC packages
+RUN yum -y install python-devel python-numpy-intel-ohpc hdf5-intel-ohpc
 
 # Misc cleanup of unneeded files
-RUN rm -rfv \
-        /tmp/* \
-        /opt/intel/man \
-        /opt/intel/documentation_2018 \
-        /opt/intel/ide_support_2018 \
-        /opt/intel/samples_2018 \
-        /opt/intel/compilers_and_libraries_2018.2.199/linux/mkl/benchmarks \
-        /opt/intel/compilers_and_libraries_2018.2.199/linux/mkl/examples \
-        /var/cache/yum
+RUN yum clean all && \
+    rm -rfv /tmp/* /var/cache/yum
diff --git a/scripts/ci/images/el7-intel18-openmpi-ohpc/Dockerfile b/scripts/ci/images/el7-intel18-openmpi-ohpc/Dockerfile
index 03f70578c..cfc49b1dc 100644
--- a/scripts/ci/images/el7-intel18-openmpi-ohpc/Dockerfile
+++ b/scripts/ci/images/el7-intel18-openmpi-ohpc/Dockerfile
@@ -1,102 +1,10 @@
-FROM centos:centos7
+FROM ornladios/adios2:el7-intel18-ohpc-base
 
-# Install core dev packages
-RUN yum -y install make curl file git gcc gcc-g++ pkg-config valgrind vim \
-        gdb zlib zlib-devel bzip2 bzip2-libs bzip2-devel python-devel \
-        libfabric libfabric-devel
-RUN yum -y install epel-release && \
-    yum -y install blosc-devel zeromq-devel libzstd libzstd-devel
-
-# Install and setup  newer version of git from the
-# Red Hat Software Collections Library
-RUN yum -y install centos-release-scl-rh && \
-    yum -y install rh-git218
-ENV LD_LIBRARY_PATH=/opt/rh/httpd24/root/usr/lib64:${LD_LIBRARY_PATH} \
-    PATH=/opt/rh/rh-git218/root/usr/bin:${PATH}
-
-# Install Intel C++ compiler
-WORKDIR /tmp
-COPY silent-custom.cfg /tmp
-RUN curl -L 'https://data.kitware.com/api/v1/file/5c1a96318d777f072bdbff4b/download' | tar -xz \
-  && ./parallel_studio_xe_2018_update4_cluster_edition/install.sh -s ./silent-custom.cfg \
-  && rm -rf parallel_studio_xe_2018* silent*
-
-# Install extra repos
-RUN yum -y install epel-release https://github.com/openhpc/ohpc/releases/download/v1.3.GA/ohpc-release-1.3-1.el7.x86_64.rpm
-
-# Install intel OpenHPC packages
-RUN yum -y install \
-  lmod-ohpc intel-compilers-devel-ohpc python-numpy-intel-ohpc \
-  openmpi3-intel-ohpc python-mpi4py-intel-openmpi3-ohpc
-
-# Install the CMake binary
-WORKDIR /opt/cmake
-RUN yum install -y openssl-devel && \
-    git clone https://gitlab.kitware.com/cmake/cmake.git source && \
-    mkdir build && \
-    cd build && \
-    ../source/bootstrap --prefix=/opt/cmake --parallel=$(grep -c '^processor' /proc/cpuinfo) && \
-    make -j$(grep -c '^processor' /proc/cpuinfo) install && \
-    cd .. && \
-    rm -rf source build
-ENV PATH=/opt/cmake/bin:${PATH}
-
-# Install HDF5 1.10.4 (the current 1.10.5 has a parallel close bug affecting
-# the tests
-WORKDIR /opt/hdf5
-RUN curl -L https://support.hdfgroup.org/ftp/HDF5/releases/hdf5-1.10/hdf5-1.10.4/src/hdf5-1.10.4.tar.bz2 | \
-        tar -xvj && \
-    cd hdf5-1.10.4 && \
-    source /etc/profile && \
-    module load intel openmpi3 && \
-    export CC=mpicc CXX=mpicxx FC=mpif90 && \
-    ./configure --prefix=/opt/hdf5/1.10.4 --enable-shared --disable-static --enable-parallel && \
-    make -j$(grep -c '^processor' /proc/cpuinfo) install && \
-    cd .. && \
-    rm -rf hdf5-1.10.4
-ENV PATH=/opt/hdf5/1.10.4/bin:${PATH} \
-    LD_LIBRARY_PATH=/opt/hdf5/1.10.4/lib:${LD_LIBRARY_PATH} \
-    CMAKE_PREFIX_PATH=/opt/hdf5/1.10.4:${CMAKE_PREFIX_PATH}
-
-# Install ZFP
-WORKDIR /opt/zfp
-RUN curl -L https://github.com/LLNL/zfp/releases/download/0.5.5/zfp-0.5.5.tar.gz | tar -xvz && \
-    mkdir build && \
-    cd build && \
-    source /etc/profile && \
-    module load intel && \
-    export CC=icc CXX=icpc FC=ifort && \
-    cmake -DBUILD_SHARED_LIBS=ON -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/opt/zfp/0.5.5 ../zfp-0.5.5 && \
-    make -j$(grep -c '^processor' /proc/cpuinfo) install && \
-    cd .. && \
-    rm -rf zfp-0.5.5 build
-ENV PATH=/opt/zfp/0.5.5/bin:${PATH} \
-    LD_LIBRARY_PATH=/opt/zfp/0.5.5/lib64:${LD_LIBRARY_PATH} \
-    CMAKE_PREFIX_PATH=/opt/zfp/0.5.5:${CMAKE_PREFIX_PATH}
-
-# Install SZ
-WORKDIR /opt/sz
-RUN curl -L https://github.com/disheng222/SZ/archive/v2.1.8.0.tar.gz | tar -xvz && \
-    mkdir build && \
-    cd build && \
-    source /etc/profile && \
-    module load intel && \
-    export CC=icc CXX=icpc FC=ifort && \
-    cmake -DBUILD_SHARED_LIBS=ON -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/opt/sz/2.1.8.0 ../SZ-2.1.8.0 && \
-    make -j$(grep -c '^processor' /proc/cpuinfo) install && \
-    cd .. && \
-    rm -rf SZ-2.1.8.0 build
-ENV PATH=/opt/sz/2.1.8.0/bin:${PATH} \
-    LD_LIBRARY_PATH=/opt/sz/2.1.8.0/lib64:${LD_LIBRARY_PATH} \
-    CMAKE_PREFIX_PATH=/opt/sz/2.1.8.0:${CMAKE_PREFIX_PATH}
+# Install OpenHPC packages
+RUN yum -y install python34-devel python34-numpy-intel-ohpc \
+        openmpi3-intel-ohpc phdf5-intel-openmpi3-ohpc \
+        python34-mpi4py-intel-openmpi3-ohpc
 
 # Misc cleanup of unneeded files
-RUN rm -rfv \
-        /tmp/* \
-        /opt/intel/man \
-        /opt/intel/documentation_2018 \
-        /opt/intel/ide_support_2018 \
-        /opt/intel/samples_2018 \
-        /opt/intel/compilers_and_libraries_2018.2.199/linux/mkl/benchmarks \
-        /opt/intel/compilers_and_libraries_2018.2.199/linux/mkl/examples \
-        /var/cache/yum
+RUN yum clean all && \
+    rm -rfv /tmp/* /var/cache/yum
diff --git a/scripts/ci/images/el7-intel18-openmpi-ohpc/silent-custom.cfg b/scripts/ci/images/el7-intel18-openmpi-ohpc/silent-custom.cfg
deleted file mode 100644
index a3176cd9c..000000000
--- a/scripts/ci/images/el7-intel18-openmpi-ohpc/silent-custom.cfg
+++ /dev/null
@@ -1,9 +0,0 @@
-ACCEPT_EULA=accept
-CONTINUE_WITH_OPTIONAL_ERROR=yes
-PSET_INSTALL_DIR=/opt/intel
-CONTINUE_WITH_INSTALLDIR_OVERWRITE=yes
-PSET_MODE=install
-ACTIVATION_TYPE=trial_lic
-INTEL_SW_IMPROVEMENT_PROGRAM_CONSENT=no
-ARCH_SELECTED=INTEL64
-COMPONENTS=;intel-comp__x86_64;intel-comp-doc__noarch;intel-comp-l-all-common__noarch;intel-comp-l-all-vars__noarch;intel-comp-nomcu-vars__noarch;intel-comp-ps__x86_64;intel-comp-ps-ss__x86_64;intel-comp-ps-ss-bec__x86_64;intel-openmp__x86_64;intel-openmp-common__noarch;intel-openmp-common-icc__noarch;intel-openmp-common-ifort__noarch;intel-openmp-ifort__x86_64;intel-tbb-libs__x86_64;intel-idesupport-icc-common-ps__noarch;intel-icc__x86_64;intel-c-comp-common__noarch;intel-icc-common__noarch;intel-icc-common-ps__noarch;intel-icc-common-ps-ss-bec__noarch;intel-icc-doc__noarch;intel-icc-doc-ps__noarch;intel-icc-ps__x86_64;intel-icc-ps-ss__x86_64;intel-icc-ps-ss-bec__x86_64;intel-ifort__x86_64;intel-ifort-common__noarch;intel-ifort-doc__noarch;intel-mkl-common__noarch;intel-mkl-core__x86_64;intel-mkl-core-rt__x86_64;intel-mkl-doc__noarch;intel-mkl-doc-ps__noarch;intel-mkl-cluster__x86_64;intel-mkl-cluster-common__noarch;intel-mkl-cluster-rt__x86_64;intel-mkl-common-ps__noarch;intel-mkl-core-ps__x86_64;intel-mkl-common-c__noarch;intel-mkl-core-c__x86_64;intel-mkl-common-c-ps__noarch;intel-mkl-cluster-c__noarch;intel-mkl-common-f__noarch;intel-mkl-core-f__x86_64;intel-mkl-cluster-f__noarch;intel-mkl-f95-common__noarch;intel-mkl-f__x86_64;intel-tbb-devel__x86_64;intel-tbb-common__noarch;intel-tbb-doc__noarch;intel-ism__noarch;intel-icsxe__noarch;intel-psxe-common__noarch;intel-psxe-doc__noarch;intel-psxe-common-doc__noarch;intel-icsxe-doc__noarch;intel-psxe-licensing__noarch;intel-psxe-licensing-doc__noarch;intel-icsxe-pset
diff --git a/scripts/ci/images/el7/Dockerfile b/scripts/ci/images/el7/Dockerfile
index 082b875eb..8750a3739 100644
--- a/scripts/ci/images/el7/Dockerfile
+++ b/scripts/ci/images/el7/Dockerfile
@@ -1,31 +1,7 @@
-FROM centos:centos7
+FROM ornladios/adios2:el7-base
 
-# Install core dev packages
-RUN yum -y install sudo gcc gcc-c++ gcc-gfortran make curl file valgrind \
-        vim gdb bison flex pkgconfig \
-        zlib-devel bzip2-devel libpng-devel libfabric-devel libffi-devel \
-        python-devel numpy
-RUN yum -y install epel-release && \
-    yum -y install zeromq-devel hdf5 hdf5-devel blosc-devel
-
-# Install and setup  newer version of git from the
-# Red Hat Software Collections Library
-RUN yum -y install centos-release-scl-rh && \
-    yum -y install rh-git218
-ENV LD_LIBRARY_PATH=/opt/rh/httpd24/root/usr/lib64:${LD_LIBRARY_PATH} \
-    PATH=/opt/rh/rh-git218/root/usr/bin:${PATH}
-
-# Install the CMake binary
-WORKDIR /opt/cmake
-RUN yum install -y openssl-devel && \
-    git clone https://gitlab.kitware.com/cmake/cmake.git source && \
-    mkdir build && \
-    cd build && \
-    ../source/bootstrap --prefix=/opt/cmake --parallel=$(grep -c '^processor' /proc/cpuinfo) && \
-    make -j$(grep -c '^processor' /proc/cpuinfo) install && \
-    cd .. && \
-    rm -rf source build
-ENV PATH=/opt/cmake/bin:${PATH}
+# Install extra system dev packages
+RUN yum -y install hdf5-devel python-devel numpy
 
 # Install ZFP
 WORKDIR /opt/zfp
@@ -56,4 +32,3 @@ ENV CMAKE_PREFIX_PATH /opt/sz/2.1.8.0:${CMAKE_PREFIX_PATH}
 # Misc cleanup of unneeded files
 RUN yum clean all && \
     rm -rfv /tmp/* /var/cache/yum
-
diff --git a/scripts/ci/images/suse-pgi-base/Dockerfile b/scripts/ci/images/suse-pgi-base/Dockerfile
new file mode 100644
index 000000000..3fae6328e
--- /dev/null
+++ b/scripts/ci/images/suse-pgi-base/Dockerfile
@@ -0,0 +1,77 @@
+FROM opensuse/leap:15.2
+
+# Install core dev packages
+RUN zypper addrepo -fc https://download.opensuse.org/repositories/devel:/tools:/scm/openSUSE_Leap_15.2/devel:tools:scm.repo
+RUN zypper --gpg-auto-import-keys ref
+RUN zypper in -y gcc gcc-c++ gcc-fortran git make curl tar f2c glibc-locale \
+  glibc-devel libbz2-devel pkg-config libzmq-devel zlib-devel gdb vim valgrind \
+  bzip2 gzip blosc-devel libzstd-devel openssl-devel environment-modules
+
+# Workaround so pgi can find g77
+WORKDIR /usr/bin
+RUN ln -s gfortran g77
+
+# Install PGI compiler
+WORKDIR /tmp/pgi-install
+RUN curl -L https://data.kitware.com/api/v1/file/5defe4f7af2e2eed35763524/download | tar -xz
+RUN export \
+      PGI_SILENT=true \
+      PGI_ACCEPT_EULA=accept \
+      PGI_INSTALL_DIR=/opt/pgi \
+      PGI_INSTALL_NVIDIA=false \
+      PGI_INSTALL_JAVA=false \
+      PGI_INSTALL_MPI=false \
+      PGI_MPI_GPU_SUPPORT=false \
+  && ./install
+
+RUN  echo 'export MODULEPATH=/opt/pgi/modulefiles:${MODULEPATH}' > /etc/profile.d/pgi-modules.sh \
+  && echo 'setenv MODULEPATH /opt/pgi/modulefiles:${MODULEPATH}' > /etc/profile.d/pgi-modules.csh
+
+# Install the most recent CMake nightly binary
+WORKDIR /opt/cmake
+RUN curl -L https://cmake.org/files/dev/$(curl https://cmake.org/files/dev/ | sed -n '/Linux-x86_64.tar.gz/s/.*>\(cmake[^<]*\)<.*/\1/p' | sort | tail -1) | tar --strip-components=1 -xzv
+ENV PATH=/opt/cmake/bin:${PATH}
+
+# Install ZFP
+WORKDIR /opt/zfp
+RUN curl -L https://github.com/LLNL/zfp/releases/download/0.5.5/zfp-0.5.5.tar.gz | tar -xvz && \
+    mkdir build && \
+    cd build && \
+    source /etc/profile && \
+    module load pgi && \
+    export CC=pgcc CXX=pgc++ FC=pgffort && \
+    /opt/cmake/bin/cmake \
+        -DBUILD_SHARED_LIBS=ON \
+        -DCMAKE_BUILD_TYPE=Release \
+        -DCMAKE_INSTALL_PREFIX=/opt/zfp/0.5.5 \
+        ../zfp-0.5.5 && \
+    make -j$(grep -c '^processor' /proc/cpuinfo) install && \
+    cd .. && \
+    rm -rf zfp-0.5.5 build
+ENV PATH=/opt/zfp/0.5.5/bin:${PATH} \
+    LD_LIBRARY_PATH=/opt/zfp/0.5.5/lib64:${LD_LIBRARY_PATH} \
+    CMAKE_PREFIX_PATH=/opt/zfp/0.5.5:${CMAKE_PREFIX_PATH}
+
+# Install SZ
+WORKDIR /opt/sz
+RUN curl -L https://github.com/disheng222/SZ/archive/v2.1.8.0.tar.gz | tar -xvz && \
+    mkdir build && \
+    cd build && \
+    source /etc/profile && \
+    module load pgi && \
+    export CC=pgcc CXX=pgc++ FC=pgffort && \
+    /opt/cmake/bin/cmake \
+        -DBUILD_SHARED_LIBS=ON \
+        -DCMAKE_BUILD_TYPE=Release \
+        -DCMAKE_INSTALL_PREFIX=/opt/sz/2.1.8.0 \
+         ../SZ-2.1.8.0 && \
+    make -j$(grep -c '^processor' /proc/cpuinfo) install && \
+    cd .. && \
+    rm -rf SZ-2.1.8.0 build
+ENV PATH=/opt/sz/2.1.8.0/bin:${PATH} \
+    LD_LIBRARY_PATH=/opt/sz/2.1.8.0/lib64:${LD_LIBRARY_PATH} \
+    CMAKE_PREFIX_PATH=/opt/sz/2.1.8.0:${CMAKE_PREFIX_PATH}
+
+# Misc cleanup of unneeded files
+RUN rm -rf /tmp/* && \
+    zypper clean
diff --git a/scripts/ci/images/suse-pgi-openmpi/Dockerfile b/scripts/ci/images/suse-pgi-openmpi/Dockerfile
index c94188542..8556e7d7d 100644
--- a/scripts/ci/images/suse-pgi-openmpi/Dockerfile
+++ b/scripts/ci/images/suse-pgi-openmpi/Dockerfile
@@ -1,43 +1,4 @@
-FROM opensuse/leap:15.2
-
-# Install core dev packages
-RUN zypper addrepo -fc https://download.opensuse.org/repositories/devel:/tools:/scm/openSUSE_Leap_15.2/devel:tools:scm.repo
-RUN zypper --gpg-auto-import-keys ref
-RUN zypper in -y gcc gcc-c++ gcc-fortran git make curl tar f2c glibc-locale \
-  glibc-devel libbz2-devel pkg-config libzmq-devel zlib-devel gdb vim valgrind \
-  bzip2 gzip blosc-devel libzstd-devel openssl-devel environment-modules
-
-# Workaround so pgi can find g77
-WORKDIR /usr/bin
-RUN ln -s gfortran g77
-
-# Install PGI compiler
-WORKDIR /tmp/pgi-install
-RUN curl -L https://data.kitware.com/api/v1/file/5defe4f7af2e2eed35763524/download | tar -xz
-RUN export \
-      PGI_SILENT=true \
-      PGI_ACCEPT_EULA=accept \
-      PGI_INSTALL_DIR=/opt/pgi \
-      PGI_INSTALL_NVIDIA=false \
-      PGI_INSTALL_JAVA=false \
-      PGI_INSTALL_MPI=false \
-      PGI_MPI_GPU_SUPPORT=false \
-  && ./install
-
-RUN  echo 'export MODULEPATH=/opt/pgi/modulefiles:${MODULEPATH}' > /etc/profile.d/pgi-modules.sh \
-  && echo 'setenv MODULEPATH /opt/pgi/modulefiles:${MODULEPATH}' > /etc/profile.d/pgi-modules.csh
-
-# Install CMake
-WORKDIR /opt/cmake
-RUN git clone https://gitlab.kitware.com/cmake/cmake.git source && \
-    mkdir build && \
-    cd build && \
-    ../source/bootstrap --prefix=/opt/cmake --parallel=$(grep -c '^processor' /proc/cpuinfo) && \
-    make -j$(grep -c '^processor' /proc/cpuinfo) all && \
-    make install && \
-    cd .. && \
-    rm -rf source build
-ENV PATH=/opt/cmake/bin:${PATH}
+FROM ornladios/adios2:suse-pgi-base
 
 # Install OpenMPI
 WORKDIR /opt/openmpi
@@ -87,46 +48,6 @@ ENV PATH=/opt/hdf5/1.10.4/bin:${PATH} \
     LD_LIBRARY_PATH=/opt/hdf5/1.10.4/lib:${LD_LIBRARY_PATH} \
     CMAKE_PREFIX_PATH=/opt/hdf5/1.10.4:${CMAKE_PREFIX_PATH}
 
-# Install ZFP
-WORKDIR /opt/zfp
-RUN curl -L https://github.com/LLNL/zfp/releases/download/0.5.5/zfp-0.5.5.tar.gz | tar -xvz && \
-    mkdir build && \
-    cd build && \
-    source /etc/profile && \
-    module load pgi && \
-    export CC=pgcc CXX=pgc++ FC=pgffort && \
-    /opt/cmake/bin/cmake \
-        -DBUILD_SHARED_LIBS=ON \
-        -DCMAKE_BUILD_TYPE=Release \
-        -DCMAKE_INSTALL_PREFIX=/opt/zfp/0.5.5 \
-        ../zfp-0.5.5 && \
-    make -j$(grep -c '^processor' /proc/cpuinfo) install && \
-    cd .. && \
-    rm -rf zfp-0.5.5 build
-ENV PATH=/opt/zfp/0.5.5/bin:${PATH} \
-    LD_LIBRARY_PATH=/opt/zfp/0.5.5/lib64:${LD_LIBRARY_PATH} \
-    CMAKE_PREFIX_PATH=/opt/zfp/0.5.5:${CMAKE_PREFIX_PATH}
-
-# Install SZ
-WORKDIR /opt/sz
-RUN curl -L https://github.com/disheng222/SZ/archive/v2.1.8.0.tar.gz | tar -xvz && \
-    mkdir build && \
-    cd build && \
-    source /etc/profile && \
-    module load pgi && \
-    export CC=pgcc CXX=pgc++ FC=pgffort && \
-    /opt/cmake/bin/cmake \
-        -DBUILD_SHARED_LIBS=ON \
-        -DCMAKE_BUILD_TYPE=Release \
-        -DCMAKE_INSTALL_PREFIX=/opt/sz/2.1.8.0 \
-         ../SZ-2.1.8.0 && \
-    make -j$(grep -c '^processor' /proc/cpuinfo) install && \
-    cd .. && \
-    rm -rf SZ-2.1.8.0 build
-ENV PATH=/opt/sz/2.1.8.0/bin:${PATH} \
-    LD_LIBRARY_PATH=/opt/sz/2.1.8.0/lib64:${LD_LIBRARY_PATH} \
-    CMAKE_PREFIX_PATH=/opt/sz/2.1.8.0:${CMAKE_PREFIX_PATH}
-
 # Misc cleanup of unneeded files
-RUN rm -rf /tmp/* \
-  && zypper clean
+RUN rm -rf /tmp/* && \
+    zypper clean
diff --git a/scripts/ci/images/suse-pgi/Dockerfile b/scripts/ci/images/suse-pgi/Dockerfile
index d6e56da4b..0ea8b209d 100644
--- a/scripts/ci/images/suse-pgi/Dockerfile
+++ b/scripts/ci/images/suse-pgi/Dockerfile
@@ -1,77 +1,32 @@
-FROM opensuse/leap:15.2
+FROM ornladios/adios2:suse-pgi-base
 
-# Install core dev packages
-RUN zypper addrepo -fc https://download.opensuse.org/repositories/devel:/tools:/scm/openSUSE_Leap_15.2/devel:tools:scm.repo
-RUN zypper --gpg-auto-import-keys ref
-RUN zypper in -y gcc gcc-c++ gcc-fortran git make curl tar f2c glibc-locale \
-  glibc-devel libbz2-devel python-devel python-numpy pkg-config libzmq-devel \
-  hdf5-devel gzip zlib-devel vim valgrind gdb blosc-devel libzstd-devel
-
-# Workaround so pgi can find g77
-WORKDIR /usr/bin
-RUN ln -s gfortran g77
-
-# Install PGI compiler
-WORKDIR /tmp/pgi-install
-RUN curl -L https://data.kitware.com/api/v1/file/5defe4f7af2e2eed35763524/download | tar -xz
-RUN export \
-      PGI_SILENT=true \
-      PGI_ACCEPT_EULA=accept \
-      PGI_INSTALL_DIR=/opt/pgi \
-      PGI_INSTALL_NVIDIA=false \
-      PGI_INSTALL_JAVA=false \
-      PGI_INSTALL_MPI=false \
-      PGI_MPI_GPU_SUPPORT=false \
-  && ./install
-
-RUN zypper ref && zypper in -y environment-modules \
-  && echo 'export MODULEPATH=/opt/pgi/modulefiles:${MODULEPATH}' > /etc/profile.d/pgi-modules.sh \
-  && echo 'setenv MODULEPATH /opt/pgi/modulefiles:${MODULEPATH}' > /etc/profile.d/pgi-modules.csh
-
-# Install the CMake binary
-WORKDIR /opt/cmake
-RUN zypper in -y libopenssl-devel && \
-    git clone https://gitlab.kitware.com/cmake/cmake.git source && \
-    mkdir build && \
-    cd build && \
-    ../source/bootstrap --prefix=/opt/cmake --parallel=$(grep -c '^processor' /proc/cpuinfo) && \
-    make -j$(grep -c '^processor' /proc/cpuinfo) install && \
-    cd .. && \
-    rm -rf source build
-ENV PATH=/opt/cmake/bin:${PATH}
-
-# Install ZFP
-WORKDIR /opt/zfp
-RUN curl -L https://github.com/LLNL/zfp/releases/download/0.5.5/zfp-0.5.5.tar.gz | tar -xvz && \
-    mkdir build && \
-    cd build && \
-    source /etc/profile && \
-    module load pgi && \
-    export CC=pgcc CXX=pgc++ FC=pgffort && \
-    /opt/cmake/bin/cmake -DBUILD_SHARED_LIBS=ON -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/opt/zfp/0.5.5 ../zfp-0.5.5 && \
-    make -j$(grep -c '^processor' /proc/cpuinfo) install && \
-    cd .. && \
-    rm -rf zfp-0.5.5 build
-ENV PATH=/opt/zfp/0.5.5/bin:${PATH} \
-    LD_LIBRARY_PATH=/opt/zfp/0.5.5/lib64:${LD_LIBRARY_PATH} \
-    CMAKE_PREFIX_PATH=/opt/zfp/0.5.5:${CMAKE_PREFIX_PATH}
-
-# Install SZ
-WORKDIR /opt/sz
-RUN curl -L https://github.com/disheng222/SZ/archive/v2.1.8.0.tar.gz | tar -xvz && \
+# Install HDF5 1.10.4 (the current 1.10.5 has a parallel close bug affecting
+# the tests
+WORKDIR /opt/hdf5
+RUN curl -L https://support.hdfgroup.org/ftp/HDF5/releases/hdf5-1.10/hdf5-1.10.4/src/hdf5-1.10.4.tar.bz2 | \
+        tar -xvj && \
     mkdir build && \
     cd build && \
     source /etc/profile && \
-    module load pgi && \
-    export CC=pgcc CXX=pgc++ FC=pgffort && \
-    /opt/cmake/bin/cmake -DBUILD_SHARED_LIBS=ON -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/opt/sz/2.1.8.0 ../SZ-2.1.8.0 && \
+    module load pgi openmpi && \
+    export CC=pgcc CXX=pgc++ FC=pgfortran && \
+    /opt/cmake/bin/cmake \
+        -DCMAKE_INSTALL_PREFIX=/opt/hdf5/1.10.4 \
+        -DBUILD_SHARED_LIBS=ON \
+        -DCMAKE_BUILD_TYPE=Release \
+        -DHDF5_ENABLE_PARALLEL=OFF \
+        -DHDF5_BUILD_CPP_LIB=OFF\
+        -DHDF5_BUILD_EXAMPLES=OFF \ 
+        -DBUILD_TESTING=OFF \
+        -DHDF5_BUILD_TOOLS=OFF \
+        ../hdf5-1.10.4 && \
     make -j$(grep -c '^processor' /proc/cpuinfo) install && \
     cd .. && \
-    rm -rf SZ-2.1.8.0 build
-ENV PATH=/opt/sz/2.1.8.0/bin:${PATH} \
-    LD_LIBRARY_PATH=/opt/sz/2.1.8.0/lib64:${LD_LIBRARY_PATH} \
-    CMAKE_PREFIX_PATH=/opt/sz/2.1.8.0:${CMAKE_PREFIX_PATH}
+    rm -rf hdf5-1.10.4 build
+ENV PATH=/opt/hdf5/1.10.4/bin:${PATH} \
+    LD_LIBRARY_PATH=/opt/hdf5/1.10.4/lib:${LD_LIBRARY_PATH} \
+    CMAKE_PREFIX_PATH=/opt/hdf5/1.10.4:${CMAKE_PREFIX_PATH}
 
 # Misc cleanup of unneeded files
-RUN rm -rf /tmp/* \
-  && zypper clean
+RUN rm -rf /tmp/* && \
+    zypper clean
-- 
GitLab