From 81d0d552c3acd1fd22caeacd749fd75953ae0870 Mon Sep 17 00:00:00 2001 From: Achim Gsell Date: Fri, 17 Nov 2023 17:03:22 +0100 Subject: [PATCH] openmpi: YAM build script added --- Compiler/openmpi/build-xml | 100 +++++++++++++++++++++++++++++++++++++ 1 file changed, 100 insertions(+) create mode 100755 Compiler/openmpi/build-xml diff --git a/Compiler/openmpi/build-xml b/Compiler/openmpi/build-xml new file mode 100755 index 0000000..31bf3b5 --- /dev/null +++ b/Compiler/openmpi/build-xml @@ -0,0 +1,100 @@ +#!/usr/bin/env modbuild + +pbuild::install_docfiles 'AUTHORS' 'LICENSE' 'NEWS' 'README' + +pbuild::pre_configure() { + pbuild::add_configure_args "--prefix=${PREFIX}" + pbuild::add_configure_args "--enable-mpi-cxx" + pbuild::add_configure_args "--enable-mpi-cxx-seek" + pbuild::add_configure_args "--enable-orterun-prefix-by-default" + pbuild::add_configure_args "--enable-shared" + pbuild::add_configure_args "--enable-static" + pbuild::add_configure_args "--with-slurm=yes" + + if [[ -v CUDA_VERSION ]]; then + pbuild::add_configure_args "--with-cuda=${CUDA_HOME}" + fi + + if [[ -v HWLOC_VERSION ]]; then + unset HWLOC_VERSION + pbuild::add_configure_args "--with-hwloc=${HWLOC_PREFIX}" + else + pbuild::add_configure_args "--with-hwloc=internal" + fi + + if [[ -v LIBEVENT_VERSION ]]; then + pbuild::add_configure_args "--with-libevent=${LIBEVENT_PREFIX}" + fi + + if [[ -v PMIX_VERSION ]]; then + unset PMIX_VERSION + pbuild::add_configure_args "--with-pmix=${PMIX_PREFIX}" + fi + + if [[ -v LIBFABRIC_VERSION ]]; then + pbuild::add_configure_args "--with-ofi=${LIBFABRIC_PREFIX}" + fi + + if [[ -v UCX_VERSION ]]; then + 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 dgx || pbuild::use_flag merlin6; then + pbuild::add_configure_args "--with-gpfs=/usr/lpp/mmfs" + 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 + (( version = (${V_MAJOR} * 100 + ${V_MINOR}) * 100 + V_PATCHLVL )) + 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() { + if ! pbuild::use_flag slurm && ! pbuild::use_flag dgx && ! pbuild::use_flag merlin6; then + 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' + pbuild::install_shared_libs "${binary}" "${PREFIX}/lib/fallback" '/libpmi.so' + pbuild::install_shared_libs "${binary}" "${PREFIX}/lib/fallback" '/libpmi2.so' + pbuild::install_shared_libs "${binary}" "${PREFIX}/lib/fallback" '/libpmi2.so' + fi + + if [[ -v CUDA_VERSION ]]; then + echo "opal_warn_on_missing_libcuda = 0" >> ${PREFIX}/etc/openmpi-mca-params.conf + fi + + for FILE in $(find $PREFIX -type f \( ! -name "*.a" -and ! -name "*.mod" \) -exec grep -IL . "{}" \;) + do + OLD_RPATH=$(objdump -a -x $FILE | grep RPATH | awk '{print $2}') + NEW_RPATH=$(echo $OLD_RPATH | sed 's/:\/usr\/lib64:/:/g') + if [[ "${OLD_RPATH}" != "${NEW_RPATH}" ]]; then + patchelf --force-rpath --set-rpath "${NEW_RPATH}" "${FILE}" + fi + done +}