From 6d5ad489493cb8de38ad1ceb1ebeedf8c9b6066b Mon Sep 17 00:00:00 2001 From: Caubet Serrabou Marc Date: Tue, 19 May 2020 17:13:57 +0200 Subject: [PATCH 01/27] Added Gromacs 2020.2 --- MPI/gromacs/2020/variants | 2 ++ MPI/gromacs/build | 6 +++++- 2 files changed, 7 insertions(+), 1 deletion(-) create mode 100644 MPI/gromacs/2020/variants diff --git a/MPI/gromacs/2020/variants b/MPI/gromacs/2020/variants new file mode 100644 index 0000000..46e0145 --- /dev/null +++ b/MPI/gromacs/2020/variants @@ -0,0 +1,2 @@ +gromacs/2020_sp unstable gcc/7.4.0 openmpi/3.1.5_merlin6 cuda/10.0.130 Python/3.7.4 b:cmake/3.14.0 +gromacs/2020.2_sp unstable gcc/7.5.0 openmpi/3.1.6_slurm cuda/10.0.130 Python/3.7.4 b:cmake/3.15.5 diff --git a/MPI/gromacs/build b/MPI/gromacs/build index ce115b5..1c5f56b 100755 --- a/MPI/gromacs/build +++ b/MPI/gromacs/build @@ -29,6 +29,10 @@ pbuild::pre_configure() { else pbuild::add_configure_args "-DGMX_GPU=off" fi - # To remove: pbuild::add_configure_args "-DGMX_SIMD=SSE2" + # For GMX_SIMD the lowest instruction number you think might work on all nodes + # |- Available numbers: http://manual.gromacs.org/documentation/2020/install-guide/index.html#simd-support + # |- AVX_512 is only for newest Intel processors (Xeon Scalable Gold, Core i9, etc.) + # AVX_512 will not work on old GPUs, this is why we chood AVX2_256 which are processors from 2013 + pbuild::add_configure_args "-DGMX_SIMD=AVX2_256" pbuild::add_configure_args "-DGMX_BUILD_OWN_FFTW=on" } From f3f3a41111b4f414b982e77279d7672dc16577a7 Mon Sep 17 00:00:00 2001 From: Caubet Serrabou Marc Date: Wed, 20 May 2020 16:54:17 +0200 Subject: [PATCH 02/27] OpenMPI slurm series --- Compiler/openmpi/build | 21 ++++++++++++++++----- Compiler/openmpi/files/variants.merlin6 | 20 ++++++++++++++++++-- Compiler/openmpi/modulefile | 6 ++++-- 3 files changed, 38 insertions(+), 9 deletions(-) diff --git a/Compiler/openmpi/build b/Compiler/openmpi/build index e3e1bb7..44bd6c1 100755 --- a/Compiler/openmpi/build +++ b/Compiler/openmpi/build @@ -23,23 +23,34 @@ pbuild::pre_configure() { pbuild::add_configure_args "--enable-shared" pbuild::add_configure_args "--enable-static" pbuild::add_configure_args "--with-sge=yes" + pbuild::add_configure_args "--with-ucx" + pbuild::add_configure_args "--with-hwloc=internal" pbuild::add_configure_args "--with-slurm=yes" + + if pbuild::use_flag slurm ; then + pbuild::add_configure_args "--with-pmi" + pbuild::add_configure_args "--with-pmi-libdir=/usr/lib64/" + fi + local version (( version = (${V_MAJOR} * 100 + ${V_MINOR}) * 100 + V_PATCHLVL )) - if (( version < 30104 )) ; then + if (( V_MAJOR < 4 )); then pbuild::add_configure_args "--enable-mpi-f90" pbuild::add_configure_args "--enable-mpi-profile" pbuild::add_configure_args "--enable-smp-locks" elif (( V_MAJOR >= 4 )); then pbuild::add_configure_args "--enable-mpi-fortran" + pbuild::add_configure_args "--without-verbs" fi } pbuild::post_install() { mkdir -p "${PREFIX}/lib/fallback" local -r binary=$(ls "${PREFIX}"/lib/libmpi.so.*.*.*) - pbuild::install_shared_libs "${binary}" "${PREFIX}/lib/fallback" '/usr/.*/libuc[mpst].so' - pbuild::install_shared_libs "${binary}" "${PREFIX}/lib/fallback" '/usr/.*/libnuma.so' - pbuild::install_shared_libs "${binary}" "${PREFIX}/lib/fallback" '/usr/.*/libbverbs.so' - pbuild::install_shared_libs "${binary}" "${PREFIX}/lib/fallback" '/usr/.*/librdmacm.so' + pbuild::install_shared_libs "${binary}" "${PREFIX}/lib/fallback" '/libuc[mpst].so' + pbuild::install_shared_libs "${binary}" "${PREFIX}/lib/fallback" '/libnuma.so' + pbuild::install_shared_libs "${binary}" "${PREFIX}/lib/fallback" '/libibverbs.so' + pbuild::install_shared_libs "${binary}" "${PREFIX}/lib/fallback" '/librdmacm.so' + pbuild::install_shared_libs "${binary}" "${PREFIX}/lib/fallback" '/libpmi.so' + pbuild::install_shared_libs "${binary}" "${PREFIX}/lib/fallback" '/libpmi2.so' } diff --git a/Compiler/openmpi/files/variants.merlin6 b/Compiler/openmpi/files/variants.merlin6 index ddbb836..98f3a43 100644 --- a/Compiler/openmpi/files/variants.merlin6 +++ b/Compiler/openmpi/files/variants.merlin6 @@ -1,3 +1,19 @@ -openmpi/3.1.4_merlin6 stable gcc/{7.4.0,8.3.0} -openmpi/3.1.4-1_merlin6 stable gcc/{7.4.0,8.3.0} +openmpi/3.1.4_merlin6 stable gcc/{7.4.0,8.3.0} +openmpi/3.1.5_merlin6 deprecated gcc/{7.3.0,7.4.0,8.3.0,9.2.0} +openmpi/3.1.5_merlin6 deprecated intel/{15.2,17.4,18.4} + +openmpi/3.1.5-1_merlin6 stable gcc/{7.3.0,7.4.0,8.3.0,9.2.0} +openmpi/3.1.5-1_merlin6 stable intel/{15.2,17.4,18.4} + +openmpi/2.1.6_slurm unstable gcc/{4.9.4,5.5.0,6.5.0,7.4.0,8.3.0,9.2.0} +openmpi/2.1.6_slurm unstable intel/{15.2,17.4,18.4} + +openmpi/3.0.5_slurm unstable gcc/{4.9.4,5.5.0,6.5.0,7.4.0,8.3.0,9.2.0} +openmpi/3.0.5_slurm unstable intel/{15.2,17.4,18.4} + +openmpi/3.1.6_slurm stable gcc/{4.9.4,5.5.0,6.5.0,7.5.0,8.4.0,9.3.0} +openmpi/3.1.6_slurm stable intel/{15.2,17.4,18.4,20.1} + +openmpi/4.0.3_slurm unstable gcc/{4.9.4,5.5.0,6.5.0,7.5.0,8.4.0,9.3.0} +openmpi/4.0.3_slurm unstable intel/{15.2,17.4,18.4,20.1} diff --git a/Compiler/openmpi/modulefile b/Compiler/openmpi/modulefile index 68458ac..03c8312 100644 --- a/Compiler/openmpi/modulefile +++ b/Compiler/openmpi/modulefile @@ -28,9 +28,11 @@ setenv MPIRUN $PREFIX/bin/mpirun set libibverbs [glob -nocomplain /usr/lib{64,}/libibverbs.so.1*] set libnuma [glob -nocomplain /usr/lib{64,}/libnuma.so.1*] set librdmacm [glob -nocomplain /usr/lib{64,}/librdmacm.so.1*] -set libucx [glob -nocomplain /usr/lib{64,}/libuc[mpst].so.0*] +set libucx [glob -nocomplain /usr/lib{64,}/libuc\[mpst\].so.0*] +set libpmi [glob -nocomplain /usr/lib{64,}/libpmi.so.0*] +set libpmi2 [glob -nocomplain /usr/lib{64,}/libpmi2.so.0*] -if { $libibverbs eq "" || $libnuma eq "" || $librdmacm eq "" || $libucx eq "" } { +if { $libibverbs eq "" || $libnuma eq "" || $librdmacm eq "" || $libucx eq "" || $libpmi eq "" || $libpmi2 eq "" } { if { [file isdirectory $PREFIX/lib/fallback] } { prepend-path LD_LIBRARY_PATH $PREFIX/lib/fallback } From ea8207cfe75654a17bbc4bb477474b05abd3c13b Mon Sep 17 00:00:00 2001 From: Caubet Serrabou Marc Date: Thu, 16 Jul 2020 14:37:51 +0200 Subject: [PATCH 03/27] Changes in OpenMPI --- Compiler/openmpi/build | 9 ++++++++- Compiler/openmpi/files/variants.merlin6 | 4 ++-- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/Compiler/openmpi/build b/Compiler/openmpi/build index 44bd6c1..a7b0205 100755 --- a/Compiler/openmpi/build +++ b/Compiler/openmpi/build @@ -13,6 +13,8 @@ pbuild::install_docfiles 'AUTHORS' 'LICENSE' 'NEWS' 'README' pbuild::pre_configure() { + INSTALL_LIBPMIX=false + if [[ -n "${CUDA_VERSION}" ]]; then pbuild::add_configure_args "--with-cuda=${CUDA_HOME}" fi @@ -40,7 +42,11 @@ pbuild::pre_configure() { pbuild::add_configure_args "--enable-smp-locks" elif (( V_MAJOR >= 4 )); then pbuild::add_configure_args "--enable-mpi-fortran" - pbuild::add_configure_args "--without-verbs" + pbuild::add_configure_args "--without-verbs" + if ${INSTALL_LIBPMIX} ; then + echo "Enabling Install libpmix" + pbuild::add_configure_args "--enable-install-libpmix" + fi fi } @@ -48,6 +54,7 @@ pbuild::post_install() { mkdir -p "${PREFIX}/lib/fallback" local -r binary=$(ls "${PREFIX}"/lib/libmpi.so.*.*.*) pbuild::install_shared_libs "${binary}" "${PREFIX}/lib/fallback" '/libuc[mpst].so' + pbuild::install_shared_libs "${binary}" "${PREFIX}/lib/fallback" '/libuct_ib.so.0' pbuild::install_shared_libs "${binary}" "${PREFIX}/lib/fallback" '/libnuma.so' pbuild::install_shared_libs "${binary}" "${PREFIX}/lib/fallback" '/libibverbs.so' pbuild::install_shared_libs "${binary}" "${PREFIX}/lib/fallback" '/librdmacm.so' diff --git a/Compiler/openmpi/files/variants.merlin6 b/Compiler/openmpi/files/variants.merlin6 index 98f3a43..4fca9d8 100644 --- a/Compiler/openmpi/files/variants.merlin6 +++ b/Compiler/openmpi/files/variants.merlin6 @@ -15,5 +15,5 @@ openmpi/3.0.5_slurm unstable intel/{15.2,17.4,18.4} openmpi/3.1.6_slurm stable gcc/{4.9.4,5.5.0,6.5.0,7.5.0,8.4.0,9.3.0} openmpi/3.1.6_slurm stable intel/{15.2,17.4,18.4,20.1} -openmpi/4.0.3_slurm unstable gcc/{4.9.4,5.5.0,6.5.0,7.5.0,8.4.0,9.3.0} -openmpi/4.0.3_slurm unstable intel/{15.2,17.4,18.4,20.1} +openmpi/4.0.4_slurm unstable gcc/{4.9.4,5.5.0,6.5.0,7.5.0,8.4.0,9.3.0} +openmpi/4.0.4_slurm unstable intel/{15.2,17.4,18.4,20.1} From b2dc06e2dfc046351a4464f556c271d39f03dad1 Mon Sep 17 00:00:00 2001 From: Caubet Serrabou Marc Date: Thu, 16 Jul 2020 17:05:19 +0200 Subject: [PATCH 04/27] Changes in OpenMPI --- Compiler/openmpi/build | 10 ++++------ Compiler/openmpi/files/variants.merlin6 | 2 ++ 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/Compiler/openmpi/build b/Compiler/openmpi/build index a7b0205..4884f5f 100755 --- a/Compiler/openmpi/build +++ b/Compiler/openmpi/build @@ -13,8 +13,6 @@ pbuild::install_docfiles 'AUTHORS' 'LICENSE' 'NEWS' 'README' pbuild::pre_configure() { - INSTALL_LIBPMIX=false - if [[ -n "${CUDA_VERSION}" ]]; then pbuild::add_configure_args "--with-cuda=${CUDA_HOME}" fi @@ -32,6 +30,10 @@ pbuild::pre_configure() { if pbuild::use_flag slurm ; then pbuild::add_configure_args "--with-pmi" pbuild::add_configure_args "--with-pmi-libdir=/usr/lib64/" + + if pbuild::use_flag "libpmix"; then + pbuild::add_configure_args "--enable-install-libpmix" + fi fi local version @@ -43,10 +45,6 @@ pbuild::pre_configure() { elif (( V_MAJOR >= 4 )); then pbuild::add_configure_args "--enable-mpi-fortran" pbuild::add_configure_args "--without-verbs" - if ${INSTALL_LIBPMIX} ; then - echo "Enabling Install libpmix" - pbuild::add_configure_args "--enable-install-libpmix" - fi fi } diff --git a/Compiler/openmpi/files/variants.merlin6 b/Compiler/openmpi/files/variants.merlin6 index 4fca9d8..9447f2d 100644 --- a/Compiler/openmpi/files/variants.merlin6 +++ b/Compiler/openmpi/files/variants.merlin6 @@ -17,3 +17,5 @@ openmpi/3.1.6_slurm stable intel/{15.2,17.4,18.4,20.1} openmpi/4.0.4_slurm unstable gcc/{4.9.4,5.5.0,6.5.0,7.5.0,8.4.0,9.3.0} openmpi/4.0.4_slurm unstable intel/{15.2,17.4,18.4,20.1} + +openmpi/4.0.4_slurm_libpmix unstable gcc/9.3.0 From a21e9b18edccb64fc1583203ea3447f192991662 Mon Sep 17 00:00:00 2001 From: Caubet Serrabou Marc Date: Tue, 28 Jul 2020 16:55:35 +0200 Subject: [PATCH 05/27] Update GROMACS: GPU option as tag --- MPI/gromacs/2020/variants | 5 +++-- MPI/gromacs/build | 7 ++----- 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/MPI/gromacs/2020/variants b/MPI/gromacs/2020/variants index 46e0145..18995bc 100644 --- a/MPI/gromacs/2020/variants +++ b/MPI/gromacs/2020/variants @@ -1,2 +1,3 @@ -gromacs/2020_sp unstable gcc/7.4.0 openmpi/3.1.5_merlin6 cuda/10.0.130 Python/3.7.4 b:cmake/3.14.0 -gromacs/2020.2_sp unstable gcc/7.5.0 openmpi/3.1.6_slurm cuda/10.0.130 Python/3.7.4 b:cmake/3.15.5 +gromacs/2020_sp unstable gcc/7.4.0 openmpi/3.1.5_merlin6 cuda/10.0.130 Python/3.7.4 b:cmake/3.14.0 +gromacs/2020.2_sp unstable gcc/7.5.0 openmpi/3.1.6_slurm cuda/10.0.130 Python/3.7.4 b:cmake/3.15.5 +gromacs/2020.2_sp_gpu unstable gcc/7.5.0 openmpi/4.0.4_slurm cuda/10.0.130 Python/3.7.4 b:cmake/3.15.5 diff --git a/MPI/gromacs/build b/MPI/gromacs/build index 1c5f56b..057a64e 100755 --- a/MPI/gromacs/build +++ b/MPI/gromacs/build @@ -11,10 +11,6 @@ else fi pbuild::pre_configure() { - # For enabling GPU, set to 'yes' - local enable_gpu='yes' - - echo here pbuild::add_configure_args "-DCMAKE_BUILD_TYPE=RELEASE" pbuild::add_configure_args "-DGMX_MPI=on" @@ -24,11 +20,12 @@ pbuild::pre_configure() { pbuild::add_configure_args "-DGFMX_DOUBLE=off" fi - if [[ "${enable_gpu}" == 'yes' ]]; then + if pbuild::use_flag "gpu"; then pbuild::add_configure_args "-DGMX_GPU=on" else pbuild::add_configure_args "-DGMX_GPU=off" fi + # For GMX_SIMD the lowest instruction number you think might work on all nodes # |- Available numbers: http://manual.gromacs.org/documentation/2020/install-guide/index.html#simd-support # |- AVX_512 is only for newest Intel processors (Xeon Scalable Gold, Core i9, etc.) From d392f7634ad49476f80c4712136a60ef1e535fb3 Mon Sep 17 00:00:00 2001 From: Caubet Serrabou Marc Date: Wed, 29 Jul 2020 16:30:55 +0200 Subject: [PATCH 06/27] Update QE: 6.5 --- MPI/qe/6/variants | 3 ++- MPI/qe/build | 21 ++++++--------------- 2 files changed, 8 insertions(+), 16 deletions(-) diff --git a/MPI/qe/6/variants b/MPI/qe/6/variants index 5b9e1a5..15f24e1 100644 --- a/MPI/qe/6/variants +++ b/MPI/qe/6/variants @@ -1 +1,2 @@ -qe/6.3 unstable gcc/8.2.0 openmpi/3.1.1 b:cmake/3.9.6 +qe/6.3 unstable gcc/8.2.0 openmpi/3.1.1 b:cmake/3.9.6 +qe/6.5 unstable gcc/9.3.0 lapack/3.9.0 OpenBLAS/0.3.9 openmpi/4.0.4_slurm b:cmake/3.15.5 diff --git a/MPI/qe/build b/MPI/qe/build index ac176ba..03073fd 100755 --- a/MPI/qe/build +++ b/MPI/qe/build @@ -1,7 +1,6 @@ #!/usr/bin/env modbuild pbuild::set_download_url "https://github.com/QEF/q-e/archive/$P-$V.tar.gz" -echo "https://github.com/QEF/q-e/archive/$P-$V.tar.gz" pbuild::add_to_group 'MPI' @@ -9,24 +8,16 @@ pbuild::install_docfiles License README.md CONTRIBUTING.md pbuild::compile_in_sourcetree - -pbuild::configure() { - mkdir -p ${PREFIX} - ./configure -enable-openmp --with-prefix="${PREFIX}/bin" --prefix="${PREFIX}/bin" +pbuild::pre_configure() { + pbuild::add_configure_args "-enable-openmp" } pbuild::compile() { - make all + make all + make install } pbuild::install() { - # Due to bug in: https://gitlab.com/QEF/q-e/commit/88e6558646dbbcfcafa5f3fa758217f6062ab91c.diff - # Deploying custom install procedure - mkdir -p ${PREFIX}/bin - cd ${BUILD_DIR} - for x in `find * ! -path "test-suite/*" -name *.x -type f` ; do - cp $x ${PREFIX}/bin/ - done - echo 'Quantum ESPRESSO binaries installed in ${PREFIX}/bin' - # make install + : } + From b4f2bec8b950ea5e26c32c492a13d0328489b7a1 Mon Sep 17 00:00:00 2001 From: Caubet Serrabou Marc Date: Thu, 30 Jul 2020 16:42:03 +0200 Subject: [PATCH 07/27] LAMMPS 2020 --- MPI/lammps/2020/variants | 1 + MPI/lammps/build | 98 +++++++++++++++------------------------- 2 files changed, 37 insertions(+), 62 deletions(-) create mode 100644 MPI/lammps/2020/variants diff --git a/MPI/lammps/2020/variants b/MPI/lammps/2020/variants new file mode 100644 index 0000000..f277c59 --- /dev/null +++ b/MPI/lammps/2020/variants @@ -0,0 +1 @@ +lammps/2020.3_merlin6 unstable gcc/9.3.0 openmpi/4.0.4_slurm b:cmake/3.15.5 diff --git a/MPI/lammps/build b/MPI/lammps/build index 6df1224..fb1aa5c 100755 --- a/MPI/lammps/build +++ b/MPI/lammps/build @@ -4,80 +4,54 @@ TARNAME=$(grep -E "^${V_MAJOR}.${V_MINOR}" files/version-to-tarname.txt| awk '{print $2}') # pbuild::set_download_url "https://gitlab.psi.ch/caubet_m/merlin-software/raw/master/$P/$P-${V_PKG}.tar.gz" -pbuild::set_download_url "https://github.com/lammps/lammps/archive/${TARNAME}" +# pbuild::set_download_url "https://github.com/lammps/lammps/archive/${TARNAME}" +pbuild::set_download_url "https://lammps.sandia.gov/tars/${TARNAME}" pbuild::add_to_group 'MPI' pbuild::install_docfiles README LICENSE -pbuild::compile_in_sourcetree +pbuild::pre_configure() { + pbuild::add_configure_args "-D CMAKE_BUILD_TYPE=RELEASE" -# pbuild::pre_configure() { -# pbuild::add_configure_args "-D CMAKE_BUILD_TYPE=RELEASE" -# -# pbuild::add_configure_args "-D BUILD_MPI=yes" -# pbuild::add_configure_args "-D BUILD_OMP=yes" -# pbuild::add_configure_args "-D PKG_USER-OMP=yes" -# pbuild::add_configure_args "-D PKG_BODY=yes" -# pbuild::add_configure_args "-D PKG_DIPOLE=yes" -# pbuild::add_configure_args "-D PKG_MOLECULE=yes" -# pbuild::add_configure_args "-D PKG_MPIIO=yes" -# pbuild::add_configure_args "-D PKG_REPLICA=yes" -# # pbuild::add_configure_args "-D PKG_REAX=yes" -# pbuild::add_configure_args "-D PKG_RIGID=yes" -# pbuild::add_configure_args "-D PKG_USER-REAXC=yes" -# -# } + pbuild::add_configure_args "-D BUILD_MPI=yes" + pbuild::add_configure_args "-D BUILD_OMP=yes" + pbuild::add_configure_args "-D BUILD_TOOLS=yes" + pbuild::add_configure_args "-D BUILD_DOC=yes" + + pbuild::add_configure_args "-D LAMMPS_MACHINE=mpi" + pbuild::add_configure_args "-D PKG_USER-OMP=yes" + pbuild::add_configure_args "-D PKG_ASPHERE=yes" + pbuild::add_configure_args "-D PKG_BODY=yes" + pbuild::add_configure_args "-D PKG_COMPRESS=yes" + pbuild::add_configure_args "-D PKG_CORESHELL=yes" + pbuild::add_configure_args "-D PKG_DIPOLE=yes" + pbuild::add_configure_args "-D PKG_GRANULAR=yes" + pbuild::add_configure_args "-D PKG_MANYBODY=yes" + pbuild::add_configure_args "-D PKG_KSPACE=yes" + pbuild::add_configure_args "-D PKG_MC=yes" + pbuild::add_configure_args "-D PKG_MISC=yes" + pbuild::add_configure_args "-D PKG_MOLECULE=yes" + pbuild::add_configure_args "-D PKG_MPIIO=yes" + pbuild::add_configure_args "-D PKG_OPT=yes" + pbuild::add_configure_args "-D PKG_PYTHON=yes" + pbuild::add_configure_args "-D PKG_REPLICA=yes" + pbuild::add_configure_args "-D PKG_RIGID=yes" + pbuild::add_configure_args "-D PKG_SNAP=yes" + pbuild::add_configure_args "-D PKG_USER-EFF=yes" + pbuild::add_configure_args "-D PKG_USER-DRUDE=yes" + pbuild::add_configure_args "-D PKG_USER-REAXC=yes" + # (( ${OPENMPI_VERSION%%.*} >= 4 )) && pbuild::add_configure_args "-D LAMMPS_OMP_COMPAT=4" +} -# pbuild::configure() { -# cp -v "${BUILDBLOCK_DIR}/files/Makefile.PSI" "${BUILD_DIR}/src/MAKE/MINE" -# } -# pbuild::configure() { - sed -i '/^CCFLAGS.*/ s/$/ -fopenmp/' ${BUILD_DIR}/src/MAKE/Makefile.mpi - sed -i '/^LINKFLAGS.*/ s/$/ -fopenmp/' ${BUILD_DIR}/src/MAKE/Makefile.mpi + cmake ${BUILD_DIR}/../src/cmake -D CMAKE_INSTALL_PREFIX="${PREFIX}" } pbuild::compile() { - echo BEGIN COMPILE - cd src - # make clean-all - # make no-all - make yes-user-omp - make yes-asphere - make yes-body - make yes-compress - make yes-coreshell - make yes-dipole - make yes-granular - make yes-manybody - make yes-kspace - make yes-mc - make yes-misc - make yes-molecule - make yes-mpiio - make yes-opt - make yes-python - make yes-replica - make yes-rigid - make yes-snap - make yes-user-eff - make yes-user-drude - make yes-user-reaxc - make yes-user-reaxc args="-m serial" - make yes-user-reaxc args="-m mpi" - make mpi - echo ENDCOMPILE + cmake --build ${BUILD_DIR} } pbuild::install() { - install -m 0755 -d "${PREFIX}/bin" - # Modify this for installing individual binaries - install -m 0755 "${BUILD_DIR}/src/lmp_mpi" "${PREFIX}/bin/" - - # Strip all present binaries - for file in $(ls ${PREFIX}/bin/lmp_*) - do - strip "$file" - done + make install } From 8095111408a0423b97c1f32ae0c7fbef36a415e2 Mon Sep 17 00:00:00 2001 From: Caubet Serrabou Marc Date: Thu, 30 Jul 2020 16:44:43 +0200 Subject: [PATCH 08/27] LAMMPS 2020 --- MPI/lammps/files/version-to-tarname.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/MPI/lammps/files/version-to-tarname.txt b/MPI/lammps/files/version-to-tarname.txt index a901f75..134d439 100644 --- a/MPI/lammps/files/version-to-tarname.txt +++ b/MPI/lammps/files/version-to-tarname.txt @@ -1,2 +1,3 @@ 2018.11 patch_15Nov2018.tar.gz 2019.8 stable_7Aug2019.tar.gz +2020.3 lammps-3Mar20.tar.gz From 81b32a2c70973ab90f3f74e19ebe4022b20ac8ff Mon Sep 17 00:00:00 2001 From: Caubet Serrabou Marc Date: Thu, 30 Jul 2020 16:47:58 +0200 Subject: [PATCH 09/27] cuda/10.1.105 --- Programming/cuda/files/variants.rhel6 | 1 + 1 file changed, 1 insertion(+) diff --git a/Programming/cuda/files/variants.rhel6 b/Programming/cuda/files/variants.rhel6 index ca3e551..b7eaecf 100644 --- a/Programming/cuda/files/variants.rhel6 +++ b/Programming/cuda/files/variants.rhel6 @@ -3,3 +3,4 @@ cuda/9.0.176 stable cuda/9.1.85 stable cuda/9.2.148 stable cuda/10.0.130 stable +cuda/10.1.105 unstable From b987afe19599a77263251f1d8c04a9067d790be0 Mon Sep 17 00:00:00 2001 From: Spencer Bliven Date: Fri, 7 Aug 2020 13:09:56 +0200 Subject: [PATCH 10/27] Add some python dev tools to hpce-tools --- .../2019.07/conda-env-defs/hpce-tools/hpce-tools.yml | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/Programming/anaconda/2019.07/conda-env-defs/hpce-tools/hpce-tools.yml b/Programming/anaconda/2019.07/conda-env-defs/hpce-tools/hpce-tools.yml index 19d540e..ebab9ed 100644 --- a/Programming/anaconda/2019.07/conda-env-defs/hpce-tools/hpce-tools.yml +++ b/Programming/anaconda/2019.07/conda-env-defs/hpce-tools/hpce-tools.yml @@ -6,5 +6,15 @@ channels: dependencies: - python=3.6 - ldapuserdir - - cython # for pyslurm + # python development - conda-build + - cython # for pyslurm + - black + - flake8 + - mypy + - mypy_extensions + - typing_extensions + - tox + - tox-conda + - pytest + - bpython From 0b438a9d2e91a8815d3190ebd145e48e52d244c6 Mon Sep 17 00:00:00 2001 From: Spencer Bliven Date: Fri, 7 Aug 2020 23:07:30 +0200 Subject: [PATCH 11/27] Add scicat_client to the datacatalog module. The script is based off the scicat_client-0.1.0 anaconda environment. Conda does not need to be activated to run, so the pmodule simple symlinks the entrypoint to the module bin. --- .../conda-env-defs/scicat_client/README.md | 20 ++++++++++++++++++ .../scicat_client/scicat_client.yml | 18 ++++++++++++++++ Tools/datacatalog/README.md | 20 ++++++++++++++++++ Tools/datacatalog/README.md_template | 21 ------------------- Tools/datacatalog/build | 3 +++ 5 files changed, 61 insertions(+), 21 deletions(-) create mode 100644 Programming/anaconda/2019.07/conda-env-defs/scicat_client/README.md create mode 100644 Programming/anaconda/2019.07/conda-env-defs/scicat_client/scicat_client.yml create mode 100644 Tools/datacatalog/README.md delete mode 100644 Tools/datacatalog/README.md_template diff --git a/Programming/anaconda/2019.07/conda-env-defs/scicat_client/README.md b/Programming/anaconda/2019.07/conda-env-defs/scicat_client/README.md new file mode 100644 index 0000000..fa4e98a --- /dev/null +++ b/Programming/anaconda/2019.07/conda-env-defs/scicat_client/README.md @@ -0,0 +1,20 @@ +# scicat-client + +The scicat-client environment is used in the datacatalog module. Contact +Spencer Bliven, Stephan Egli, or Leo Sala for more info. + +## Installing + +First, create the conda environment + + conda env create -f scicat_client.yml + +Next, install scicat_client. Eventually this should be done automatically +through conda, but for now it needs to be installed from source. + + git clone git@github.com:paulscherrerinstitute/scicat_client.git + cd scicat_client + conda activate scicat_client-0.1.0 + python setup.py install + + diff --git a/Programming/anaconda/2019.07/conda-env-defs/scicat_client/scicat_client.yml b/Programming/anaconda/2019.07/conda-env-defs/scicat_client/scicat_client.yml new file mode 100644 index 0000000..b50b0f5 --- /dev/null +++ b/Programming/anaconda/2019.07/conda-env-defs/scicat_client/scicat_client.yml @@ -0,0 +1,18 @@ +# Clean environment based on pure conda-forge packages +name: scicat_client-0.1.0 +channels: + - conda-forge + - http://conda-pkg.intranet.psi.ch +dependencies: + - python=3.8 + - requests + # development tools + - conda-build + - black + - flake8 + - mypy + - mypy_extensions + - typing_extensions + - tox + - tox-conda + - pytest diff --git a/Tools/datacatalog/README.md b/Tools/datacatalog/README.md new file mode 100644 index 0000000..7d08119 --- /dev/null +++ b/Tools/datacatalog/README.md @@ -0,0 +1,20 @@ +# Datacatalog + +## Overview + +This module provides tools to interface with the Data Catalog (discovery.psi.ch). + +## Installation + +Run `./build ` to install the latest version. This downloads the +latest versions of the datasetIngestor, datasetRetriever, and datasetArchiver +tools. Note that the downloads are not versioned, so make sure that the current +variant matches the installed binaries. + +The `scicat_client` script is also installed. This is maintained as an anaconda +environment, then symlinked into the datacatalog pmodule. Anaconda hard-codes +the correct python interpreter, so all dependencies should resolve even though +the conda module is not activated. See +Programming/anaconda/2019.07/conda-env-defs/scicat_client for environment +installation details. + diff --git a/Tools/datacatalog/README.md_template b/Tools/datacatalog/README.md_template deleted file mode 100644 index 77355fb..0000000 --- a/Tools/datacatalog/README.md_template +++ /dev/null @@ -1,21 +0,0 @@ -# The Mellanox MXM communication library - -## Overview - -The Mellanox MXM communication library provides support for the Mellanox MXM interface for InfiniBand. - -## Installation - -For the module we use a RPM distributed by HP. - -1. Create new directory `/opt/psi/System/mxm/VERSION_merlin` -1. Download RPM from https://downloads.linux.hpe.com/sdr/repo/mlnx_ofed/RedHatEnterpriseServer/ -1. Unpack RPM with `rpm2cpio RPM | cpio -i --make-dirs` somewhere -1. copy all files from `opt/mellanox/mxm` to the module directory -1. adapt directories in `lib/pkg-config/mxm.pc` -1. add new variant to `files/variants` -1. run the build-script to install the modulefile and to set the release - - -> **Note:** The shared library `libmxm.so`provided by the RPMs for RHEL 6 cannot be used to compile other software. -They requiry GLIBC >= 2.14, but on RHEL 6 only 2.12 is installed! \ No newline at end of file diff --git a/Tools/datacatalog/build b/Tools/datacatalog/build index 0492450..77e2ff3 100755 --- a/Tools/datacatalog/build +++ b/Tools/datacatalog/build @@ -25,5 +25,8 @@ pbuild::install() { /usr/bin/curl -o "$PREFIX/bin/datasetArchiver" https://intranet.psi.ch/pub/Daas/WebHome/datasetArchiver chmod +x "$PREFIX/bin/datasetArchiver" + + # Hardcoded; could be made version-specific in the future if needed + ln -s "${PMODULES_ROOT}/Programming/anaconda/2019.07/conda/envs/scicat_client-0.1.0/bin/scicat_client" "$PREFIX/bin/scicat_client" } From 139305ec0341650fee7cc49332a57c1934c62443 Mon Sep 17 00:00:00 2001 From: Caubet Serrabou Marc Date: Thu, 27 Aug 2020 17:42:48 +0200 Subject: [PATCH 12/27] Update LAMMPS: from make to cmake, OpenMPI 4.0.4 support, 2020.3 --- MPI/lammps/2020/variants | 2 +- MPI/lammps/README.txt | 5 ++++ MPI/lammps/build | 64 +++++++++++++++++++--------------------- 3 files changed, 36 insertions(+), 35 deletions(-) create mode 100644 MPI/lammps/README.txt diff --git a/MPI/lammps/2020/variants b/MPI/lammps/2020/variants index f277c59..f058734 100644 --- a/MPI/lammps/2020/variants +++ b/MPI/lammps/2020/variants @@ -1 +1 @@ -lammps/2020.3_merlin6 unstable gcc/9.3.0 openmpi/4.0.4_slurm b:cmake/3.15.5 +lammps/2020.3_merlin6 unstable gcc/8.4.0 openmpi/4.0.4_slurm b:cmake/3.15.5 diff --git a/MPI/lammps/README.txt b/MPI/lammps/README.txt new file mode 100644 index 0000000..7682985 --- /dev/null +++ b/MPI/lammps/README.txt @@ -0,0 +1,5 @@ +[27.08.2020] + * With CMake is necessary to have 'python3-virtualenv' installed. Needed for building documentation. + * Compilation for version 2020.3 with OMP, GCC v8, OpenMPI v4.0.4 works without the need of specifying '-D LAMMPS_OMP_COMPAT=4' + * More details here: https://lammps.sandia.gov/doc/Build_basics.html) + * Problems are seen with GCC v9, so is recommended to use GCC v8 for that. It was compiled with v8. diff --git a/MPI/lammps/build b/MPI/lammps/build index fb1aa5c..7a55561 100755 --- a/MPI/lammps/build +++ b/MPI/lammps/build @@ -11,41 +11,37 @@ pbuild::add_to_group 'MPI' pbuild::install_docfiles README LICENSE -pbuild::pre_configure() { - pbuild::add_configure_args "-D CMAKE_BUILD_TYPE=RELEASE" - - pbuild::add_configure_args "-D BUILD_MPI=yes" - pbuild::add_configure_args "-D BUILD_OMP=yes" - pbuild::add_configure_args "-D BUILD_TOOLS=yes" - pbuild::add_configure_args "-D BUILD_DOC=yes" - - pbuild::add_configure_args "-D LAMMPS_MACHINE=mpi" - pbuild::add_configure_args "-D PKG_USER-OMP=yes" - pbuild::add_configure_args "-D PKG_ASPHERE=yes" - pbuild::add_configure_args "-D PKG_BODY=yes" - pbuild::add_configure_args "-D PKG_COMPRESS=yes" - pbuild::add_configure_args "-D PKG_CORESHELL=yes" - pbuild::add_configure_args "-D PKG_DIPOLE=yes" - pbuild::add_configure_args "-D PKG_GRANULAR=yes" - pbuild::add_configure_args "-D PKG_MANYBODY=yes" - pbuild::add_configure_args "-D PKG_KSPACE=yes" - pbuild::add_configure_args "-D PKG_MC=yes" - pbuild::add_configure_args "-D PKG_MISC=yes" - pbuild::add_configure_args "-D PKG_MOLECULE=yes" - pbuild::add_configure_args "-D PKG_MPIIO=yes" - pbuild::add_configure_args "-D PKG_OPT=yes" - pbuild::add_configure_args "-D PKG_PYTHON=yes" - pbuild::add_configure_args "-D PKG_REPLICA=yes" - pbuild::add_configure_args "-D PKG_RIGID=yes" - pbuild::add_configure_args "-D PKG_SNAP=yes" - pbuild::add_configure_args "-D PKG_USER-EFF=yes" - pbuild::add_configure_args "-D PKG_USER-DRUDE=yes" - pbuild::add_configure_args "-D PKG_USER-REAXC=yes" - # (( ${OPENMPI_VERSION%%.*} >= 4 )) && pbuild::add_configure_args "-D LAMMPS_OMP_COMPAT=4" -} - pbuild::configure() { - cmake ${BUILD_DIR}/../src/cmake -D CMAKE_INSTALL_PREFIX="${PREFIX}" + cmake -D CMAKE_INSTALL_PREFIX="${PREFIX}" \ + -D CMAKE_BUILD_TYPE=RELEASE \ + -D BUILD_MPI=yes \ + -D BUILD_OMP=yes \ + -D BUILD_TOOLS=yes \ + -D BUILD_DOC=yes \ + -D LAMMPS_MACHINE=mpi \ + -D PKG_USER-OMP=yes \ + -D PKG_ASPHERE=yes \ + -D PKG_BODY=yes \ + -D PKG_COMPRESS=yes \ + -D PKG_CORESHELL=yes \ + -D PKG_DIPOLE=yes \ + -D PKG_GRANULAR=yes \ + -D PKG_MANYBODY=yes \ + -D PKG_KSPACE=yes \ + -D PKG_MC=yes \ + -D PKG_MISC=yes \ + -D PKG_MOLECULE=yes \ + -D PKG_MPIIO=yes \ + -D PKG_OPT=yes \ + -D PKG_PYTHON=yes \ + -D PKG_REPLICA=yes \ + -D PKG_RIGID=yes \ + -D PKG_SNAP=yes \ + -D PKG_USER-EFF=yes \ + -D PKG_USER-DRUDE=yes \ + -D PKG_USER-REAXC=yes \ + -D BUILD_SHARED_LIBS=on \ + ${BUILD_DIR}/../src/cmake } pbuild::compile() { From cdf5e8dcc4b261265e1a4a95a3bf256827f79db8 Mon Sep 17 00:00:00 2001 From: Caubet Serrabou Marc Date: Fri, 18 Sep 2020 12:26:56 +0200 Subject: [PATCH 13/27] IOR 3.2.1 --- System/ior/3.2.1/variants | 1 + System/ior/build | 14 ++++---------- System/ior/modulefile | 5 ++++- 3 files changed, 9 insertions(+), 11 deletions(-) create mode 100644 System/ior/3.2.1/variants diff --git a/System/ior/3.2.1/variants b/System/ior/3.2.1/variants new file mode 100644 index 0000000..59371d2 --- /dev/null +++ b/System/ior/3.2.1/variants @@ -0,0 +1 @@ +ior/3.2.1_merlin6 unstable gcc/9.3.0 openmpi/4.0.4_slurm diff --git a/System/ior/build b/System/ior/build index 3253a73..c0c6189 100755 --- a/System/ior/build +++ b/System/ior/build @@ -1,18 +1,12 @@ #!/usr/bin/env modbuild -pbuild::set_download_url "https://github.com/hpc/ior/archive/${V_PKG}.tar.gz" +pbuild::set_download_url "http://github.com/hpc/ior/releases/download/${V_PKG}/ior-${V_PKG}.tar.gz" pbuild::add_to_group 'System' -pbuild::install_docfiles AUTHORS NEWS README_S3 +pbuild::install_docfiles AUTHORS NEWS README.md -export GPFS_VERSION="5.0.2-3" - -export C_INCLUDE_PATH+=":$BUILDBLOCK_DIR/files/gpfs/$GPFS_VERSION/include/" -export LIBRARY_PATH+=":$BUILDBLOCK_DIR/files/gpfs/$GPFS_VERSION/lib/" - -pbuild::pre_configure() { - +pbuil::configure() { cd ${SRC_DIR} - ./bootstrap + ./configure --prefix="${PREFIX}" } diff --git a/System/ior/modulefile b/System/ior/modulefile index 5326213..41de1b4 100644 --- a/System/ior/modulefile +++ b/System/ior/modulefile @@ -3,8 +3,11 @@ module-whatis "HPC IO Benchmark Repository" module-url "https://github.com/hpc/ior" module-license "See COPYRIGHT" -module-maintainer "Marc Caubet " +module-maintainer "Marc Caubet Serrabou " module-help " This repo now contains both IOR and mdtest. This should be only for stress tests and usually by an administrator. + +GPFS presence is checked during compilation time. Hence, is +recommended to compile IOR from a system with GPFS. " From 5f0804215517ef943db343c0319f4575f82ae1fb Mon Sep 17 00:00:00 2001 From: Caubet Serrabou Marc Date: Tue, 22 Sep 2020 11:37:25 +0200 Subject: [PATCH 14/27] Java build update. Added Java 10 and 15 --- Programming/Java/10u44/variants | 2 ++ Programming/Java/12.0.2/variants | 1 - Programming/Java/12u2/variants | 2 ++ Programming/Java/15u36/variants | 1 + Programming/Java/build | 34 ++++------------------- Programming/Java/files/version-to-URL.txt | 3 ++ 6 files changed, 14 insertions(+), 29 deletions(-) create mode 100644 Programming/Java/10u44/variants delete mode 100644 Programming/Java/12.0.2/variants create mode 100644 Programming/Java/12u2/variants create mode 100644 Programming/Java/15u36/variants mode change 100644 => 100755 Programming/Java/build create mode 100644 Programming/Java/files/version-to-URL.txt diff --git a/Programming/Java/10u44/variants b/Programming/Java/10u44/variants new file mode 100644 index 0000000..6eccb62 --- /dev/null +++ b/Programming/Java/10u44/variants @@ -0,0 +1,2 @@ +Java/10u44 unstable +Java/10.0.44 removed diff --git a/Programming/Java/12.0.2/variants b/Programming/Java/12.0.2/variants deleted file mode 100644 index c67ef1b..0000000 --- a/Programming/Java/12.0.2/variants +++ /dev/null @@ -1 +0,0 @@ -Java/12.0.2 stable diff --git a/Programming/Java/12u2/variants b/Programming/Java/12u2/variants new file mode 100644 index 0000000..f6c2e4a --- /dev/null +++ b/Programming/Java/12u2/variants @@ -0,0 +1,2 @@ +Java/12u2 stable +Java/12.0.2 deprecated diff --git a/Programming/Java/15u36/variants b/Programming/Java/15u36/variants new file mode 100644 index 0000000..09f361a --- /dev/null +++ b/Programming/Java/15u36/variants @@ -0,0 +1 @@ +Java/15u36 unstable diff --git a/Programming/Java/build b/Programming/Java/build old mode 100644 new mode 100755 index 7589acb..2dd9e71 --- a/Programming/Java/build +++ b/Programming/Java/build @@ -1,6 +1,10 @@ #!/usr/bin/env modbuild -pbuild::set_download_url "https://download.java.net/java/GA/jdk12.0.2/e482c34c86bd4bf8b56c0b35558996b9/10/GPL/openjdk-12.0.2_linux-x64_bin.tar.gz" +URL=$(grep -E "^${V_MAJOR}" files/version-to-URL.txt | awk '{print $2}') + +echo $URL + +pbuild::set_download_url "${URL}" pbuild::add_to_group 'Programming' @@ -13,33 +17,7 @@ pbuild::compile() { } pbuild::install() { - install -m 0755 -d "${PREFIX}/bin" - for binary_file in $(ls ${SRC_DIR}/bin/*) - do - install -m 0755 "${binary_file}" "${PREFIX}/bin" - done - - for java_dir in $(echo "lib lib/security lib/jfr lib/server") - do - mkdir -p "${PREFIX}/${java_dir}" - install -m 0755 -d "${PREFIX}/${java_dir}" - for library_file in $(find ${SRC_DIR}/${java_dir} -maxdepth 1 -type f) - do - install -m 0755 "${library_file}" "${PREFIX}/${java_dir}" - done - done - - for java_dir in $(echo "conf conf/management conf/security conf/security/policy conf/security/policy/unlimited conf/security/policy/limited conf/sdp") - do - mkdir -p "${PREFIX}/${java_dir}" - install -m 0755 -d "${PREFIX}/${java_dir}" - for library_file in $(find ${SRC_DIR}/${java_dir} -maxdepth 1 -type f) - do - install -m 0755 "${library_file}" "${PREFIX}/${java_dir}" - done - done - - for java_dir in $(echo "jmods") + for java_dir in $(find ${SRC_DIR} -type d | sed -n "s|^${SRC_DIR}/||p") do mkdir -p "${PREFIX}/${java_dir}" install -m 0755 -d "${PREFIX}/${java_dir}" diff --git a/Programming/Java/files/version-to-URL.txt b/Programming/Java/files/version-to-URL.txt new file mode 100644 index 0000000..5854f9e --- /dev/null +++ b/Programming/Java/files/version-to-URL.txt @@ -0,0 +1,3 @@ +10u44 https://download.java.net/openjdk/jdk10/ri/openjdk-10+44_linux-x64_bin_ri.tar.gz +12u2 https://download.java.net/java/GA/jdk12.0.2/e482c34c86bd4bf8b56c0b35558996b9/10/GPL/openjdk-12.0.2_linux-x64_bin.tar.gz +15u36 https://download.java.net/java/GA/jdk15/779bf45e88a44cbd9ea6621d33e33db1/36/GPL/openjdk-15_linux-aarch64_bin.tar.gz From 4e4d1f1ed9f866d6b72adc60110bbc1866919a48 Mon Sep 17 00:00:00 2001 From: Caubet Serrabou Marc Date: Tue, 22 Sep 2020 11:43:05 +0200 Subject: [PATCH 15/27] Java build update. Added Java 10 and 15 --- Programming/Java/files/version-to-URL.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Programming/Java/files/version-to-URL.txt b/Programming/Java/files/version-to-URL.txt index 5854f9e..18851f2 100644 --- a/Programming/Java/files/version-to-URL.txt +++ b/Programming/Java/files/version-to-URL.txt @@ -1,3 +1,3 @@ 10u44 https://download.java.net/openjdk/jdk10/ri/openjdk-10+44_linux-x64_bin_ri.tar.gz 12u2 https://download.java.net/java/GA/jdk12.0.2/e482c34c86bd4bf8b56c0b35558996b9/10/GPL/openjdk-12.0.2_linux-x64_bin.tar.gz -15u36 https://download.java.net/java/GA/jdk15/779bf45e88a44cbd9ea6621d33e33db1/36/GPL/openjdk-15_linux-aarch64_bin.tar.gz +15u36 https://download.java.net/java/GA/jdk15/779bf45e88a44cbd9ea6621d33e33db1/36/GPL/openjdk-15_linux-x64_bin.tar.gz From eb77549b98040fb48f6571eadb806426ae9aa533 Mon Sep 17 00:00:00 2001 From: Caubet Serrabou Marc Date: Wed, 30 Sep 2020 12:21:23 +0200 Subject: [PATCH 16/27] Java module to stable --- Programming/Java/10u44/variants | 2 +- Programming/Java/12u2/variants | 4 ++-- Programming/Java/15u36/variants | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Programming/Java/10u44/variants b/Programming/Java/10u44/variants index 6eccb62..cfc7050 100644 --- a/Programming/Java/10u44/variants +++ b/Programming/Java/10u44/variants @@ -1,2 +1,2 @@ -Java/10u44 unstable +Java/10u44 stable Java/10.0.44 removed diff --git a/Programming/Java/12u2/variants b/Programming/Java/12u2/variants index f6c2e4a..9f3780a 100644 --- a/Programming/Java/12u2/variants +++ b/Programming/Java/12u2/variants @@ -1,2 +1,2 @@ -Java/12u2 stable -Java/12.0.2 deprecated +Java/12u2 stable +Java/12.0.2 deprecated diff --git a/Programming/Java/15u36/variants b/Programming/Java/15u36/variants index 09f361a..f87724c 100644 --- a/Programming/Java/15u36/variants +++ b/Programming/Java/15u36/variants @@ -1 +1 @@ -Java/15u36 unstable +Java/15u36 stable From 6065b43ac100963bdeb534d39481f0d7a34083be Mon Sep 17 00:00:00 2001 From: Caubet Serrabou Marc Date: Wed, 30 Sep 2020 12:30:02 +0200 Subject: [PATCH 17/27] OpenMPI v4.0.4 to stable. v3.1.4 to deprecated --- Compiler/openmpi/files/variants.merlin6 | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Compiler/openmpi/files/variants.merlin6 b/Compiler/openmpi/files/variants.merlin6 index 9447f2d..5542270 100644 --- a/Compiler/openmpi/files/variants.merlin6 +++ b/Compiler/openmpi/files/variants.merlin6 @@ -1,4 +1,4 @@ -openmpi/3.1.4_merlin6 stable gcc/{7.4.0,8.3.0} +openmpi/3.1.4_merlin6 deprecated gcc/{7.4.0,8.3.0} openmpi/3.1.5_merlin6 deprecated gcc/{7.3.0,7.4.0,8.3.0,9.2.0} openmpi/3.1.5_merlin6 deprecated intel/{15.2,17.4,18.4} @@ -15,7 +15,7 @@ openmpi/3.0.5_slurm unstable intel/{15.2,17.4,18.4} openmpi/3.1.6_slurm stable gcc/{4.9.4,5.5.0,6.5.0,7.5.0,8.4.0,9.3.0} openmpi/3.1.6_slurm stable intel/{15.2,17.4,18.4,20.1} -openmpi/4.0.4_slurm unstable gcc/{4.9.4,5.5.0,6.5.0,7.5.0,8.4.0,9.3.0} -openmpi/4.0.4_slurm unstable intel/{15.2,17.4,18.4,20.1} +openmpi/4.0.4_slurm stable gcc/{4.9.4,5.5.0,6.5.0,7.5.0,8.4.0,9.3.0} +openmpi/4.0.4_slurm stable intel/{15.2,17.4,18.4,20.1} openmpi/4.0.4_slurm_libpmix unstable gcc/9.3.0 From d75a0ca76d7366b2765b6d4b5b47e323900c2551 Mon Sep 17 00:00:00 2001 From: Feichtinger Derek Date: Thu, 15 Oct 2020 16:33:33 +0200 Subject: [PATCH 18/27] added access permission info to anaconda documentation --- Programming/anaconda/README.md | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/Programming/anaconda/README.md b/Programming/anaconda/README.md index 10ac800..1fae725 100644 --- a/Programming/anaconda/README.md +++ b/Programming/anaconda/README.md @@ -1,5 +1,10 @@ # Building of an Anaconda release using Pmodules +## Important Note about access permissions + + The central anacoda installations are located below `/afs/psi.ch/sys/psi.merlin/Programming/anaconda`. All administrators + of these installations must be members of the AFS group `sys.modules:psi_python` in order to have write permission. + ## Concepts * The anaconda module just provides the **conda** package management tool together with its directory infrastructure which contains *conda environments* and a cache of downloaded packages @@ -14,7 +19,7 @@ ## Building a central conda environment - * **Allways work on the host pmod6**: conda is trying to use hardlinks where it can. There is an issue that can appear if you install from a machine that uses Auristor (which provides hardlinks). This causes whole environments to become corrupt, so that only a PSI AFS admin can fix the problem. Therefore we only install from pmod6 which runs openAFS. + * **Allways work on the host pmod6**: conda is trying to use hardlinks where it can. There is an issue that can appear if you install from a machine that uses Auristor (which provides hardlinks within the same AFS volume). Accessing or modifying from an old OpenAFS client can cause problems. This causes whole environments to become corrupt, so that only a PSI AFS admin can fix the problem. Therefore we only install from pmod6 which runs openAFS. ### installation of a pure conda environment From c83c2a5ca7c6996e2959316f94e963e57588483a Mon Sep 17 00:00:00 2001 From: Feichtinger Derek Date: Fri, 16 Oct 2020 17:56:52 +0200 Subject: [PATCH 19/27] Tool to install jupyter kernel wrapper for a conda env --- Programming/anaconda/README.md | 32 +++++++++++++++++++ .../files/admintools/kernelwrapper.sh | 9 ++++++ 2 files changed, 41 insertions(+) diff --git a/Programming/anaconda/README.md b/Programming/anaconda/README.md index 1fae725..d845b00 100644 --- a/Programming/anaconda/README.md +++ b/Programming/anaconda/README.md @@ -75,3 +75,35 @@ This works if the python package has a correct setup.py build cd /opt/psi/Programming/anaconda/2019.07/xxxx/mypackage pip install . ``` +## Building for use with jupyter + + Jupyter can discover conda environments if the environment contains the **nb_conda_kernels** package. + +Regrettably the environment activation by this package does not run through the full process as compared to the command line functions. The activation scripts that can be placed in an environment do not get executed (q.v. my bug report https://github.com/Anaconda-Platform/nb_conda_kernels/issues/145). + +In order to fix this, we must use a workaround which involves modifying the kernel spec configuration file of the environment to wrap the call to the python kernel like in this example for `.../envs/mpi-test/share/jupyter/kernels/python3/kernel.json`: + ``` + { + "argv": [ + "/opt/psi/Programming/anaconda/2019.07/admintools/kernelwrapper.sh", + "mpi-test", + "/opt/psi/Programming/anaconda/2019.07/conda/envs/mpi-test/bin/python", + "-m", + "ipykernel_launcher", + "-f", + "{connection_file}" + ], + "display_name": "Python 3", + "language": "python" + } + ``` + +In order to modify an environment easily I wrote a tool found in the `admintools` of this buildblock which you can use as follows: + + ``` + files/admintools/install-kernelwrapper.py -v /opt/psi/Programming/anaconda/2019.07/conda/envs/hep_root + ``` + + + + diff --git a/Programming/anaconda/files/admintools/kernelwrapper.sh b/Programming/anaconda/files/admintools/kernelwrapper.sh index 24268dd..44f391e 100755 --- a/Programming/anaconda/files/admintools/kernelwrapper.sh +++ b/Programming/anaconda/files/admintools/kernelwrapper.sh @@ -1,4 +1,13 @@ #!/bin/bash +# kernelwrapper.sh +# This wrapper is needed to correctly have jupyter activate conda evnironments +# including the running of the $ENV/etc/conda/activate.d hooks +# q.v. https://github.com/Anaconda-Platform/nb_conda_kernels/issues/145 +# +# This script must be called from the config located in an environment +# $ENV/share/jupyter/kernels/python3/kernel.jsonshare/jupyter/kernels/python3/kernel.json + +# 2019 - Derek Feichtinger dbgecho() { DBGLOG=/tmp/kernelwrapper-${USER}.log if [[ $DEBUG_JUPYTER_WRAPPER == 1 ]]; then From 348773f9969f968c5e3ef33b0a84dc8c85c69e89 Mon Sep 17 00:00:00 2001 From: Feichtinger Derek Date: Fri, 16 Oct 2020 22:50:25 +0200 Subject: [PATCH 20/27] hep_root conda env implemented for Alexander Skawran late commit of implementation from Feb 2020 --- .../2019.07/conda-env-defs/hep-root/README.md | 1 + .../2019.07/conda-env-defs/hep-root/hep-root.yml | 12 ++++++++++++ 2 files changed, 13 insertions(+) create mode 100644 Programming/anaconda/2019.07/conda-env-defs/hep-root/README.md create mode 100644 Programming/anaconda/2019.07/conda-env-defs/hep-root/hep-root.yml diff --git a/Programming/anaconda/2019.07/conda-env-defs/hep-root/README.md b/Programming/anaconda/2019.07/conda-env-defs/hep-root/README.md new file mode 100644 index 0000000..db03cff --- /dev/null +++ b/Programming/anaconda/2019.07/conda-env-defs/hep-root/README.md @@ -0,0 +1 @@ +ROOT environment created on request from Alexander Skawran diff --git a/Programming/anaconda/2019.07/conda-env-defs/hep-root/hep-root.yml b/Programming/anaconda/2019.07/conda-env-defs/hep-root/hep-root.yml new file mode 100644 index 0000000..a8aa860 --- /dev/null +++ b/Programming/anaconda/2019.07/conda-env-defs/hep-root/hep-root.yml @@ -0,0 +1,12 @@ +name: hep_root +channels: + - conda-forge +dependencies: + - python=3.7 + - root + - numpy + - root_numpy + - pandas + - matplotlib + - tensorflow + - nb_conda_kernels From 2ed35423d20bab0ba8e035d5f972419077c1c503 Mon Sep 17 00:00:00 2001 From: feichtinger Date: Mon, 19 Oct 2020 10:58:43 +0200 Subject: [PATCH 21/27] Update anaconda README.md with information on logging --- Programming/anaconda/README.md | 27 ++++++++++++++++++++------- 1 file changed, 20 insertions(+), 7 deletions(-) diff --git a/Programming/anaconda/README.md b/Programming/anaconda/README.md index d845b00..3536fc8 100644 --- a/Programming/anaconda/README.md +++ b/Programming/anaconda/README.md @@ -75,14 +75,15 @@ This works if the python package has a correct setup.py build cd /opt/psi/Programming/anaconda/2019.07/xxxx/mypackage pip install . ``` + ## Building for use with jupyter - Jupyter can discover conda environments if the environment contains the **nb_conda_kernels** package. - +Jupyter can discover conda environments if the environment contains the **nb_conda_kernels** package. Regrettably the environment activation by this package does not run through the full process as compared to the command line functions. The activation scripts that can be placed in an environment do not get executed (q.v. my bug report https://github.com/Anaconda-Platform/nb_conda_kernels/issues/145). In order to fix this, we must use a workaround which involves modifying the kernel spec configuration file of the environment to wrap the call to the python kernel like in this example for `.../envs/mpi-test/share/jupyter/kernels/python3/kernel.json`: - ``` + +``` { "argv": [ "/opt/psi/Programming/anaconda/2019.07/admintools/kernelwrapper.sh", @@ -96,13 +97,25 @@ In order to fix this, we must use a workaround which involves modifying the kern "display_name": "Python 3", "language": "python" } - ``` +``` In order to modify an environment easily I wrote a tool found in the `admintools` of this buildblock which you can use as follows: - ``` - files/admintools/install-kernelwrapper.py -v /opt/psi/Programming/anaconda/2019.07/conda/envs/hep_root - ``` +``` +files/admintools/install-kernelwrapper.py -v /opt/psi/Programming/anaconda/2019.07/conda/envs/hep_root +``` + +### Logging of environment activation information + +The logging of information for the usage of central environments is +important, because it allows to do lifetime management of the conda +environments. We can find out whether a particular environment is used at all +and by whom, and can so plan the decommissioning. + +Logging is currently implemented by an activation hook script that gets placed +in each environment. This is done by running the script `.../files/admintools/install-env-loggers.sh` +which will loop over all central environments of this anaconda pmodule. + From 741c68da523f27b84d73139722ca72804e2f4b73 Mon Sep 17 00:00:00 2001 From: Spencer Bliven Date: Thu, 22 Oct 2020 13:24:23 +0200 Subject: [PATCH 22/27] Mark relion/3.1.0 as stable --- EM/relion/files/variants | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/EM/relion/files/variants b/EM/relion/files/variants index 08cb86b..a15a0e0 100644 --- a/EM/relion/files/variants +++ b/EM/relion/files/variants @@ -2,5 +2,5 @@ relion/2.1.b1 stable gcc/4.9.4 openmpi/2.0.1 cuda/8.0.44 relion/3.0_beta stable gcc/4.9.4 openmpi/2.0.1 cuda/8.0.44 relion/3.0.8 stable gcc/7.4.0 openmpi/3.1.4_merlin6 cuda/9.2.148 b:cmake/3.14.0 b:tiff/4.0.9 relion/3.1-beta unstable gcc/7.4.0 openmpi/3.1.4_merlin6 cuda/9.2.148 b:cmake/3.14.0 b:tiff/4.0.9 -relion/3.1.0 unstable gcc/7.5.0 openmpi/4.0.4_slurm cuda/10.0.130 b:cmake/3.15.5 b:tiff/4.0.9 b:git/2.22.0 +relion/3.1.0 stable gcc/7.5.0 openmpi/4.0.4_slurm cuda/10.0.130 b:cmake/3.15.5 b:tiff/4.0.9 b:git/2.22.0 From 792a562c57d68fda1ffc588737cb2bbd336d1bda Mon Sep 17 00:00:00 2001 From: Spencer Bliven Date: Tue, 27 Oct 2020 11:42:17 +0100 Subject: [PATCH 23/27] Add new 'topaz' environment for EM --- .../2019.07/conda-env-defs/topaz/README.md | 19 +++++++++++++++++++ .../2019.07/conda-env-defs/topaz/topaz.yml | 10 ++++++++++ 2 files changed, 29 insertions(+) create mode 100644 Programming/anaconda/2019.07/conda-env-defs/topaz/README.md create mode 100644 Programming/anaconda/2019.07/conda-env-defs/topaz/topaz.yml diff --git a/Programming/anaconda/2019.07/conda-env-defs/topaz/README.md b/Programming/anaconda/2019.07/conda-env-defs/topaz/README.md new file mode 100644 index 0000000..784dea0 --- /dev/null +++ b/Programming/anaconda/2019.07/conda-env-defs/topaz/README.md @@ -0,0 +1,19 @@ +# Topaz + +[Topaz](https://github.com/tbepler/topaz) is a conda-based cryoEM particle +picker. It is used primarily through cryosparc, but also provides python +notebooks. + +See https://intranet.psi.ch/en/bio/computing-cryosparc + +## INSTALLATION + +IMPORTANT! DON'T INSTALL WITH AURISTOR. Use an OpenAFS system (e.g. pmod6) + + export TMPDIR=/opt/tmp/$USER + export XDG_CACHE_HOME=/opt/tmp/$USER/.cache + CONDA_COPY_ALWAYS=1 conda env create --file topaz.yml + conda activate topaz-0.2.5 + +The alternate TMPDIR is required on pmod6 because /tmp is too small for pip to expand all wheel files. + diff --git a/Programming/anaconda/2019.07/conda-env-defs/topaz/topaz.yml b/Programming/anaconda/2019.07/conda-env-defs/topaz/topaz.yml new file mode 100644 index 0000000..5edabd3 --- /dev/null +++ b/Programming/anaconda/2019.07/conda-env-defs/topaz/topaz.yml @@ -0,0 +1,10 @@ +name: topaz-0.2.5 +channels: + - tbepler + - defaults +dependencies: + - python=3.6 + - cudatoolkit=9.2 + - pytorch + - topaz + From 1668e1d3fa5539598c3e1910c9822f9a13022e8a Mon Sep 17 00:00:00 2001 From: Spencer Bliven Date: Wed, 28 Oct 2020 11:13:17 +0100 Subject: [PATCH 24/27] Reverting bad conda_setup script This broke anaconda because the CONDA_PREFIX is not defined. Better to setup conda directly in the modulefile. --- .../anaconda/files/admintools/conda_setup.sh | 14 -------------- Programming/anaconda/modulefile | 3 +-- 2 files changed, 1 insertion(+), 16 deletions(-) delete mode 100644 Programming/anaconda/files/admintools/conda_setup.sh diff --git a/Programming/anaconda/files/admintools/conda_setup.sh b/Programming/anaconda/files/admintools/conda_setup.sh deleted file mode 100644 index 6ff904f..0000000 --- a/Programming/anaconda/files/admintools/conda_setup.sh +++ /dev/null @@ -1,14 +0,0 @@ -# simulate `conda init` type hook -# Expects CONDA_EXE and CONDA_PREFIX to be set -__conda_setup="$("${CONDA_EXE:-conda}" 'shell.bash' 'hook' 2> /dev/null)" -if [ $? -eq 0 ]; then - eval "$__conda_setup" -else - if [ -f "${CONDA_PREFIX:?CONDA_PREFIX not set}/etc/profile.d/conda.sh" ]; then - . "${CONDA_PREFIX}/etc/profile.d/conda.sh" - else - export PATH="${CONDA_PREFIX}/bin:$PATH" - fi -fi -unset __conda_setup - diff --git a/Programming/anaconda/modulefile b/Programming/anaconda/modulefile index 3afbc1c..899b652 100644 --- a/Programming/anaconda/modulefile +++ b/Programming/anaconda/modulefile @@ -57,8 +57,7 @@ switch [module-info mode] { # but we need to prevent conflicts with a conda from a different source. # puts stderr "DEBUG: Using conda from $P/$V\n" - #puts stdout "source \"$PREFIX/conda/etc/profile.d/conda.sh\";\n" - puts stdout "source $PREFIX/admintools/conda_setup.sh;\n" + puts stdout "source \"$PREFIX/conda/etc/profile.d/conda.sh\";\n" # Activate base? No: anaconda should just provide the conda tool #puts stdout "conda activate;\n" From 414a46ff7644d34f9f2fe5b9c22444f391de3035 Mon Sep 17 00:00:00 2001 From: Feichtinger Derek Date: Thu, 29 Oct 2020 08:06:45 +0100 Subject: [PATCH 25/27] committed initially forgotten kernelwrapper and log scripts --- .../files/admintools/install-env-loggers.sh | 28 +++++++ .../files/admintools/install-kernelwrapper.py | 74 +++++++++++++++++++ 2 files changed, 102 insertions(+) create mode 100755 Programming/anaconda/files/admintools/install-env-loggers.sh create mode 100755 Programming/anaconda/files/admintools/install-kernelwrapper.py diff --git a/Programming/anaconda/files/admintools/install-env-loggers.sh b/Programming/anaconda/files/admintools/install-env-loggers.sh new file mode 100755 index 0000000..e954e77 --- /dev/null +++ b/Programming/anaconda/files/admintools/install-env-loggers.sh @@ -0,0 +1,28 @@ +#!/bin/bash +# Script to install logging into the activation hook directories +# of environments +# +# 2020 - Derek Feichtinger + +function envlist() { + conda env list --json | jq -r '.envs[]' | grep -E -v 'conda$' +} + +if [[ -z "$CONDA_PREFIX" ]]; then + echo "Error: No conda distribution seems active (CONDA_PREFIX)" >&2 + exit 1 +fi + +for env in $(envlist); do + if [[ -e "$env/etc" ]]; then + echo "Installing into $env" + mkdir -p $env/etc/conda/activate.d + cat <<'EOF' > $env/etc/conda/activate.d/log-envname.sh +#!/bin/bash +logger "activated conda module: ${CONDA_PREFIX}" +EOF + else + echo "WARNING: SKIPPING ENV: $env has no /etc" >&2 + fi +done + diff --git a/Programming/anaconda/files/admintools/install-kernelwrapper.py b/Programming/anaconda/files/admintools/install-kernelwrapper.py new file mode 100755 index 0000000..ab46ba7 --- /dev/null +++ b/Programming/anaconda/files/admintools/install-kernelwrapper.py @@ -0,0 +1,74 @@ +#!/usr/bin/env python +# installs a jupyter kernel wrapper solution into the environment's +# $ENVPATH/share/jupyter/kernels/python3/kernel.json kernel definition + +# typical envpath at PSI +# "/opt/psi/Programming/anaconda/2019.07/conda/envs/datascience_py37" + +import re +import os +import sys +import shutil +from datetime import datetime +import argparse +parser = argparse.ArgumentParser() + +# DEFAULTS +verbose_flag = False + +parser.add_argument("envpath", help="conda env path") +parser.add_argument("-v", "--verbose", help="verbose mode",action="store_true") +args = parser.parse_args() + +if args.verbose: + verbose_flag = True + +envpath = args.envpath +envname = os.path.basename(envpath) +condaroot = re.sub(r'(.*)/conda/envs/.*', r'\1', envpath) +kwrapper = os.path.join(condaroot, 'admintools/kernelwrapper.sh') +kfile = os.path.join(envpath,"share/jupyter/kernels/python3/kernel.json") + +date_time = datetime.now().strftime("%Y%m%d-%H%M%S") + +if verbose_flag: + print("env: %s" % envname) + print(kwrapper) + +if not os.path.isfile(kwrapper): + sys.stderr.write("Error: no wrapper found at %s\n" % (kwrapper)) + sys.exit(1) + +searchstr = r'"argv": \[\n( *"/.*python", *)' +subststr = r'"argv": [\n' + ' "' + kwrapper + '",\n' + ' "' + envname + r'",\n\1' + +try: + with open(kfile,"r") as fp: + filestr = "".join(fp.readlines()) +except IOError: + sys.stderr.write("Error: Env has no kernel file: %s\n" % kfile) + sys.exit(0) + +if re.search(kwrapper, filestr): + if verbose_flag: + print("env %s already contains kernelwrapper" % envpath) + sys.exit(0) + +if re.search(searchstr, filestr): + filestr = re.sub(searchstr, + subststr, + filestr) + print(filestr) + + bupfile = kfile + "-" + date_time + ".bup" + if verbose_flag: + print("copying original file to %s" % bupfile) + shutil.copyfile(kfile, bupfile) + if verbose_flag: + print("writing new file %s" % kfile) + print(filestr) + with open(kfile,"w") as fp: + fp.write(filestr) +else: + sys.stderr.write("ERROR: Could not do substitution in %s" % kfile) + sys.stderr.write(filestr) From 275f8e4572ff07a249c492cc1ae9f6fb650a64b4 Mon Sep 17 00:00:00 2001 From: Feichtinger Derek Date: Thu, 29 Oct 2020 09:30:21 +0100 Subject: [PATCH 26/27] Making anaconda 2019.07 stable --- Programming/anaconda/files/variants | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Programming/anaconda/files/variants b/Programming/anaconda/files/variants index b061e38..fb2271b 100644 --- a/Programming/anaconda/files/variants +++ b/Programming/anaconda/files/variants @@ -1,3 +1,3 @@ anaconda/2018.12 unstable anaconda/2019.03 unstable -anaconda/2019.07 unstable +anaconda/2019.07 stable From 5553fbe1d8123d0e9c32dc77f2e8145bd0854a33 Mon Sep 17 00:00:00 2001 From: Achim Gsell Date: Mon, 16 Nov 2020 12:38:59 +0100 Subject: [PATCH 27/27] serial hdf5 1.10.6 added with current GCCs --- Compiler/hdf5_serial/files/{variants.Linux => variants.rhel6} | 2 ++ 1 file changed, 2 insertions(+) rename Compiler/hdf5_serial/files/{variants.Linux => variants.rhel6} (96%) diff --git a/Compiler/hdf5_serial/files/variants.Linux b/Compiler/hdf5_serial/files/variants.rhel6 similarity index 96% rename from Compiler/hdf5_serial/files/variants.Linux rename to Compiler/hdf5_serial/files/variants.rhel6 index f52d0bc..5790495 100644 --- a/Compiler/hdf5_serial/files/variants.Linux +++ b/Compiler/hdf5_serial/files/variants.rhel6 @@ -46,3 +46,5 @@ hdf5_serial/1.10.4 stable pgi/18.5 hdf5_serial/1.10.5 stable gcc/{5.5.0,6.4.0,6.5.0,7.3.0,7.4.0,8.2.0,8.3.0} hdf5_serial/1.10.5 stable intel/{18.4,19.3} hdf5_serial/1.10.5 stable pgi/18.5 + +hdf5_serial/1.10.6 unstable gcc/{7.5.0,8.4.0,9.3.0,10.2.0}