From 5300fa57727efb4189d51e0b6522596b014fb5ed Mon Sep 17 00:00:00 2001 From: Chuck Atkins Date: Thu, 24 May 2018 09:28:35 -0400 Subject: [PATCH] Add aditional openmpi images --- .../circle/circle_el7-intel18-openmpi.cmake | 52 +++++++++++++++ .../circle/circle_fedora-openmpi-ubsan.cmake | 40 ++++++++++++ .../el7-intel18-openmpi-ohpc/Dockerfile | 63 +++++++++++++++++++ .../silent-custom.cfg | 9 +++ .../circle/fedora-openmpi-ubsan/Dockerfile | 28 +++++++++ 5 files changed, 192 insertions(+) create mode 100644 scripts/circle/circle_el7-intel18-openmpi.cmake create mode 100644 scripts/circle/circle_fedora-openmpi-ubsan.cmake create mode 100644 scripts/circle/el7-intel18-openmpi-ohpc/Dockerfile create mode 100644 scripts/circle/el7-intel18-openmpi-ohpc/silent-custom.cfg create mode 100644 scripts/circle/fedora-openmpi-ubsan/Dockerfile diff --git a/scripts/circle/circle_el7-intel18-openmpi.cmake b/scripts/circle/circle_el7-intel18-openmpi.cmake new file mode 100644 index 0000000000..25e0c4f50b --- /dev/null +++ b/scripts/circle/circle_el7-intel18-openmpi.cmake @@ -0,0 +1,52 @@ +# Client maintainer: chuck.atkins@kitware.com +set(CTEST_SITE "CircleCI") + +set(CTEST_BUILD_CONFIGURATION Debug) +set(CTEST_CMAKE_GENERATOR "Unix Makefiles") +set(CTEST_BUILD_FLAGS "-k -j4") +set(CTEST_TEST_ARGS PARALLEL_LEVEL 1) + +set(dashboard_model Experimental) +set(dashboard_binary_name "build_$ENV{CIRCLE_JOB}") +set(dashboard_track "Continuous Integration") + +set(CTEST_GIT_COMMAND "/usr/bin/git") +set(CTEST_UPDATE_VERSION_ONLY TRUE) +set(CTEST_SOURCE_DIRECTORY "$ENV{CIRCLE_WORKING_DIRECTORY}/source") +set(CTEST_DASHBOARD_ROOT "$ENV{HOME}") + +include(${CMAKE_CURRENT_LIST_DIR}/EnvironmentModules.cmake) +module(purge) +module(load intel) +module(load py2-numpy) +module(load openmpi3) +module(load py2-mpi4py) +module(load phdf5) +module(load adios) + +set(ENV{CC} icc) +set(ENV{CXX} icpc) +set(ENV{FC} ifort) +set(ENV{CFLAGS} -Werror) +set(ENV{CXXFLAGS} -Werror) +set(ENV{FFLAGS} "-warn errors") + +set(dashboard_cache " +ADIOS2_USE_ADIOS1:STRING=ON +ADIOS2_USE_BZip2:STRING=ON +ADIOS2_USE_DataMan:STRING=ON +ADIOS2_USE_Fortran:STRING=ON +ADIOS2_USE_HDF5:STRING=ON +ADIOS2_USE_MPI:STRING=ON +ADIOS2_USE_Python:STRING=ON +#ADIOS2_USE_ZFP:STRING=ON +ADIOS2_USE_ZeroMQ:STRING=ON +#ZFP_ROOT:PATH=/opt/zfp/install + +MPI_C_COMPILER:FILEPATH=${MPI_C_COMPILER} +MPI_CXX_COMPILER:FILEPATH=${MPI_CXX_COMPILER} +MPI_Fortran_COMPILER:FILEPATH=${MPI_Fortran_COMPILER} +MPIEXEC_MAX_NUMPROCS:STRING=16 +") + +include(${CMAKE_CURRENT_LIST_DIR}/../dashboard/adios_common.cmake) diff --git a/scripts/circle/circle_fedora-openmpi-ubsan.cmake b/scripts/circle/circle_fedora-openmpi-ubsan.cmake new file mode 100644 index 0000000000..03b5075523 --- /dev/null +++ b/scripts/circle/circle_fedora-openmpi-ubsan.cmake @@ -0,0 +1,40 @@ +# Client maintainer: chuck.atkins@kitware.com +set(CTEST_SITE "CircleCI") +set(CTEST_BUILD_CONFIGURATION Debug) +set(CTEST_CMAKE_GENERATOR "Unix Makefiles") +set(CTEST_BUILD_FLAGS "-k -j4") +set(CTEST_TEST_ARGS PARALLEL_LEVEL 4) + +set(dashboard_model Experimental) +set(dashboard_binary_name "build_$ENV{CIRCLE_JOB}") +set(dashboard_track "Analysis") + +set(CTEST_GIT_COMMAND "/usr/bin/git") +set(CTEST_UPDATE_VERSION_ONLY TRUE) +set(CTEST_SOURCE_DIRECTORY "$ENV{CIRCLE_WORKING_DIRECTORY}/source") +set(CTEST_DASHBOARD_ROOT "$ENV{HOME}") + +set(ENV{CC} gcc) +set(ENV{CXX} g++) +set(ENV{FC} gfortran) +set(ENV{CFLAGS} -fsanitize=undefined -fno-sanitize-recover=all -pthread) +set(ENV{CXXFLAGS} -fsanitize=undefined -fno-sanitize-recover=all -pthread) +set(ENV{FFLAGS} -fsanitize=undefined -fno-sanitize-recover=all -pthread) +set(ENV{UBSAN_OPTIONS} "print_stacktrace=1") + +include(${CMAKE_CURRENT_LIST_DIR}/EnvironmentModules.cmake) +module(load mpi) + +set(dashboard_cache " +ADIOS2_USE_ADIOS1:STRING=OFF +ADIOS2_USE_BZip2:STRING=ON +ADIOS2_USE_DataMan:STRING=ON +ADIOS2_USE_Fortran:STRING=ON +ADIOS2_USE_HDF5:STRING=ON +ADIOS2_USE_MPI:STRING=ON +ADIOS2_USE_Python:STRING=ON +ADIOS2_USE_ZFP:STRING=OFF +ADIOS2_USE_ZeroMQ:STRING=ON +") + +include(${CMAKE_CURRENT_LIST_DIR}/../dashboard/adios_common.cmake) diff --git a/scripts/circle/el7-intel18-openmpi-ohpc/Dockerfile b/scripts/circle/el7-intel18-openmpi-ohpc/Dockerfile new file mode 100644 index 0000000000..dff20f1a76 --- /dev/null +++ b/scripts/circle/el7-intel18-openmpi-ohpc/Dockerfile @@ -0,0 +1,63 @@ +FROM centos:centos7 + +# Install core dev packages +RUN yum -y install make curl file git gcc pkg-config \ + gdb zlib zlib-devel bzip2 bzip2-libs bzip2-devel python-devel +RUN yum -y install epel-release +RUN yum -y install zeromq-devel + +# Install Intel C++ compiler +WORKDIR /tmp +COPY silent-custom.cfg /tmp +RUN curl -L http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/12717/parallel_studio_xe_2018_update2_cluster_edition.tgz | tar -xz \ + && ./parallel_studio_xe_2018_update2_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 \ + phdf5-intel-openmpi3-ohpc netcdf-intel-openmpi3-ohpc adios-intel-openmpi3-ohpc + +# Cleanup headers and packages +RUN yum clean all + +# Install libfabric +WORKDIR /opt/libfabric +RUN curl -L https://github.com/ofiwg/libfabric/releases/download/v1.6.0/libfabric-1.6.0.tar.bz2 | tar -xj \ + && pushd libfabric-1.6.0 \ + && ./configure --prefix=/opt/libfabric/1.6.0 --libdir=/opt/libfabric/1.6.0/lib64 \ + && make -j8 install \ + && popd \ + && rm -rf libfabric-1.6.0 + +# Install the CMake binary +WORKDIR /opt/cmake/3.6.3 +RUN curl -L https://cmake.org/files/v3.6/cmake-3.6.3-Linux-x86_64.tar.gz | \ + tar --strip-components=1 -xz + +# Create a non-root user to run the builds/tests +RUN export uid=1001 gid=1001 && \ + mkdir -p /home/adios2 && \ + echo "adios2:x:${uid}:${gid}:adios2,,,:/home/adios2:/bin/bash" >> /etc/passwd && \ + echo "adios2:x:${uid}:" >> /etc/group && \ + chown ${uid}:${gid} -R /home/adios2 + +# Misc cleanup of unneeded files +RUN rm -rfv /tmp/* \ + && rm -rfv \ + /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 \ + && rm -rf /var/cache/yum + +USER adios2 +ENV HOME /home/adios2 +WORKDIR /home/adios2 +CMD /bin/bash diff --git a/scripts/circle/el7-intel18-openmpi-ohpc/silent-custom.cfg b/scripts/circle/el7-intel18-openmpi-ohpc/silent-custom.cfg new file mode 100644 index 0000000000..a3176cd9c3 --- /dev/null +++ b/scripts/circle/el7-intel18-openmpi-ohpc/silent-custom.cfg @@ -0,0 +1,9 @@ +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/circle/fedora-openmpi-ubsan/Dockerfile b/scripts/circle/fedora-openmpi-ubsan/Dockerfile new file mode 100644 index 0000000000..73af8660a5 --- /dev/null +++ b/scripts/circle/fedora-openmpi-ubsan/Dockerfile @@ -0,0 +1,28 @@ +FROM fedora:latest + +# Install core dev packages +RUN dnf -y install gcc gcc-c++ gcc-gfortran cmake git make curl file patch \ + zlib-devel bzip2-devel openmpi-devel hdf5-openmpi-devel \ + python3-devel python3-numpy python3-mpi4py-openmpi zeromq-devel libubsan + +# Patch the installed Lmod to properly deal with a CMake shell +RUN curl https://github.com/TACC/Lmod/commit/516a986322ac462876218ce140214824f47f5887.patch | patch -p 2 /usr/share/lmod/7.5.16/libexec/tcl2lua.tcl + +# Cleanup headers and packages +RUN dnf clean all + +# Create a non-root user to run the builds/tests +RUN export uid=1001 gid=1001 && \ + mkdir -p /home/adios2 && \ + echo "adios2:x:${uid}:${gid}:adios2,,,:/home/adios2:/bin/bash" >> /etc/passwd && \ + echo "adios2:x:${uid}:" >> /etc/group && \ + chown ${uid}:${gid} -R /home/adios2 + +# Misc cleanup of unneeded files +RUN rm -rfv /tmp/* \ + && rm -rf /var/cache/dnf + +USER adios2 +ENV HOME /home/adios2 +WORKDIR /home/adios2 +CMD /bin/bash