From cbbd8333018f5f7a552473e62774ec578882e141 Mon Sep 17 00:00:00 2001 From: caubet_m Date: Wed, 16 Oct 2024 17:07:57 +0200 Subject: [PATCH] Mpich merlin7 --- Compiler/mpich/build | 84 ++++++++++++++++++------- Compiler/mpich/files/config.yaml | 46 ++++++++++++++ Compiler/mpich/patch/mpich-v3.3.2.patch | 13 ++++ 3 files changed, 122 insertions(+), 21 deletions(-) create mode 100644 Compiler/mpich/files/config.yaml create mode 100644 Compiler/mpich/patch/mpich-v3.3.2.patch diff --git a/Compiler/mpich/build b/Compiler/mpich/build index 3a4324a..8071064 100755 --- a/Compiler/mpich/build +++ b/Compiler/mpich/build @@ -1,28 +1,70 @@ #!/usr/bin/env modbuild -pbuild::set_download_url "http://www.mpich.org/static/downloads/$V/$P-${V_PKG}.tar.gz" -pbuild::add_to_group 'Compiler' -pbuild::install_docfiles 'COPYRIGHT' 'README' - -module use System - pbuild::pre_configure() { - unset F90 - pbuild::add_configure_args "--enable-cxx" - pbuild::add_configure_args "--enable-fortran" - if pbuild::use_flag merlin; then - MXM_DIR='/opt/mellanox/mxm/' - pbuild::add_configure_args "--with-device=ch3:nemesis:mxm" - pbuild::add_configure_args "--with-mxm=${MXM_DIR}" - pbuild::add_configure_args "--without-x" - #pbuild::add_configure_args "--with-slurm-include=/usr/include/slurm" - #pbuild::add_configure_args "--with-slurm-lib=/usr/lib64" - #pbuild::add_configure_args "--with-pmi=slurm" - #pbuild::add_configure_args "--with-pm=no" - pbuild::add_configure_args "--enable-gl=no" + unset F90 + + pbuild::add_configure_args "--enable-shared" + pbuild::add_configure_args "--enable-static" + + if [[ -v CUDA_VERSION ]]; then + std::info "Enabling CUDA ${CUDA_VERSION}." + pbuild::add_configure_args "--with-cuda=${CUDA_HOME}" + fi + + if [[ -v HWLOC_VERSION ]]; then + unset HWLOC_VERSION + std::info "Enabling external hwloc ${HWLOC_PREFIX}." + pbuild::add_configure_args "--with-hwloc=${HWLOC_PREFIX}" + else + pbuild::add_configure_args "--with-hwloc=embedded" + fi + + if [[ -v PMIX_VERSION ]]; then + std::info "Enabling PMIX ${PMIX_VERSION}." + unset PMIX_VERSION + pbuild::add_configure_args "--with-pmix=${PMIX_PREFIX}" + pbuild::add_configure_args "--with-pmi=pmix" + fi + + if pbuild::use_flag merlin7 && [[ ! -v LIBFABRIC_VERSION ]]; then + if pkg-config --exists libfabric; then + std::info "Get LIBFABRIC_VERSION via pkg-config" + LIBFABRIC_PREFIX=$(pkg-config --variable=prefix libfabric) + LIBFABRIC_VERSION="$(LIBFABRIC_PREFIX##*/)" + fi fi - if [[ "${COMPILER}" == 'gcc' ]] && (( ${COMPILER_VERSION%.*.*} == 10 )); then - pbuild::add_configure_args "FFLAGS=-fallow-argument-mismatch" + if [[ -v LIBFABRIC_VERSION ]]; then + std::info "Enabling libfabric ${LIBFABRIC_VERSION}." + if (( V_MAJOR < 4 )); then + pbuild::add_configure_args "--with-ofi=${LIBFABRIC_PREFIX}" + fi + pbuild::add_configure_args "--with-libfabric=${LIBFABRIC_PREFIX}" + fi + + if [[ -v UCX_VERSION ]]; then + std::info "Enabling UCX ${UCX_VERSION}." + pbuild::add_configure_args "--with-ucx=${UCX_PREFIX}" + fi + + if [[ -v INTEL_VERSION ]]; then + pbuild::add_configure_args "CC=icc" + pbuild::add_configure_args "CXX=icpc" + pbuild::add_configure_args "FC=ifort" + pbuild::add_configure_args "F90=ifort" + pbuild::add_configure_args "F77=ifort" + pbuild::add_configure_args "LDFLAGS=-Wc,-static-intel,-O0" + fi + + if pbuild::use_flag slurm || \ + pbuild::use_flag merlin6 || \ + pbuild::use_flag merlin7; then + std::info "Enabling SLURM." + pbuild::add_configure_args "--with-slurm" fi } +# Local Variables: +# mode: sh +# sh-basic-offset: 8 +# tab-width: 8 +# End: diff --git a/Compiler/mpich/files/config.yaml b/Compiler/mpich/files/config.yaml new file mode 100644 index 0000000..f54042b --- /dev/null +++ b/Compiler/mpich/files/config.yaml @@ -0,0 +1,46 @@ +--- +# yamllint disable rule:line-length +format: 1 +mpich: + defaults: + group: Compiler + overlay: base + relstage: stable + configure_args: + - --enable-cxx + - --enable-fortran + docfiles: [COPYRIGHT, README] + urls: + - url: http://www.mpich.org/static/downloads/$V/$P-${V_PKG}.tar.gz + shasums: + mpich-3.3.2.tar.gz: 4bfaf8837a54771d3e4922c84071ef80ffebddbb6971a006038d91ee7ef959b9 + mpich-4.2.3.tar.gz: 7a019180c51d1738ad9c5d8d452314de65e828ee240bcb2d1f80de9a65be88a8 + + versions: + 4.2.3: + variants: + - systems: [.*.merlin7.psi.ch] + relstage: unstable + overlay: Alps + use_overlays: [PSI] + use_flags: [merlin7, slurm] + group_deps: + compiler: {gcc: [12.3.0]} + build_requires: [hwloc/2.11.1, libfabric/1.15.2.0, patchelf/0.14.5] + runtime_deps: [cuda/12.2.0] + configure_args+: + - --with-pm=hydra,gforker + 3.3.2: + variants: + - systems: [.*.merlin7.psi.ch] + relstage: unstable + overlay: Alps + use_overlays: [PSI] + use_flags: [merlin7, slurm] + group_deps: + compiler: {gcc: [8.4.0]} + build_requires: [libfabric/1.15.2.0, patchelf/0.14.5] + patch_files: + - patch/mpich-v3.3.2.patch + configure_args+: + - --with-device=ch3:nemesis:ofi diff --git a/Compiler/mpich/patch/mpich-v3.3.2.patch b/Compiler/mpich/patch/mpich-v3.3.2.patch new file mode 100644 index 0000000..559239b --- /dev/null +++ b/Compiler/mpich/patch/mpich-v3.3.2.patch @@ -0,0 +1,13 @@ +diff --git a/src/pm/hydra/tools/bootstrap/external/slurm_query_node_list.c b/src/pm/hydra/tools/bootstrap/external/slurm_query_node_list.c +index 9b35471f3..7b5dd782f 100644 +--- a/src/pm/hydra/tools/bootstrap/external/slurm_query_node_list.c ++++ b/src/pm/hydra/tools/bootstrap/external/slurm_query_node_list.c +@@ -26,7 +26,7 @@ static struct HYD_node *global_node_list = NULL; + #if defined(HAVE_LIBSLURM) + static HYD_status list_to_nodes(char *str) + { +- hostlist_t hostlist; ++ hostlist_t *hostlist; + char *host; + int k = 0; + HYD_status status = HYD_SUCCESS;