From f4036ffc00d580d7fa74fd9d36d3b0ab986d0ccc6a6a870c4e0012f12e4ca948 Mon Sep 17 00:00:00 2001 From: Nicolas Morey Date: Wed, 19 Feb 2025 20:06:01 +0000 Subject: [PATCH] - Update to 5.0.7 (jsc#PED-11356): - Updated UCX version requirement to v1.9 - Documentation Improvements - Updated `coll tuned` rules file documentation to reflect changes in versioning and features. - Updated CUDA-related networking documentation for consistency. - Improved descriptions for `mpirun` options, including ``--pmixmca`` and ``--prtemca``. - Fixed typos and formatting issues in `mpirun` man pages. - Functionality Enhancements - Improved argument checking for ``MPI_Comm_create_from_group`` and ``MPI_Intercomm_create_from_groups`` to align with MPI 4.0 standards. - Addressed potential race conditions in `PMIx_Group_construct` calls by adding discriminators. - Fixed ``MPI_Wtime`` to initialize timing relative to ``MPI_Init`` for accurate session-level measurements. - Added support for the `alltoall_algorithm_max_requests` parameter in the `coll tuned` rules file, maintaining backward compatibility. - Introduced a version identifier for the `coll tuned` rules file for better parser handling. - Adjusted MCA variable scopes across multiple components to allow setting via the `MPI_T` interface: `coll adapt,ucc, han, basic, hcoll` - Bug Fixes and Minor Enhancements - Ensures that singletons properly create their own sessions directory trees. - Fixed community Jenkins build pipeline to handle branch commits properly. - Resolved missing profiling symbols in the `mpi_f08` Fortran library. - Corrected parameter mismatches in `coll/cuda` functions to avoid type issues. - Fixed build issues on Hurd. - Removed unused portions of rcache base structure. - Fixed oshmem base segment address exchange. - Fixed UCC collective fallback issue. - Updated Nvidia/Mellanox platform file - openMPI 5 is now the default openmpi for suse_version >= 1600 - Switch to dist tarball to drop Sphinx and other python dependencies - Add Fix-type-mismatch-error.patch to fix a compilation error OBS-URL: https://build.opensuse.org/package/show/science:HPC/openmpi5?expand=0&rev=23 --- .gitattributes | 23 + .gitignore | 1 + Fix-type-mismatch-error.patch | 30 + _multibuild | 6 + _service | 17 + macros.hpc-openmpi | 21 + mpivars.csh | 15 + mpivars.sh | 31 + ...x-missing-definition-of-container_of.patch | 24 + openmpi-5.0.3.0.9cc951b192bf.tar.bz2 | 3 + openmpi-5.0.5.0.ca64c52a8227.tar.bz2 | 3 + openmpi-5.0.6.0.8a5c2ef25dc8.tar.bz2 | 3 + openmpi-5.0.7.tar.bz2 | 3 + openmpi5-rpmlintrc | 8 + openmpi5.changes | 240 ++++++ openmpi5.spec | 779 ++++++++++++++++++ romio341-backport-fixes-from-mpich.patch | 40 + 17 files changed, 1247 insertions(+) create mode 100644 .gitattributes create mode 100644 .gitignore create mode 100644 Fix-type-mismatch-error.patch create mode 100644 _multibuild create mode 100644 _service create mode 100644 macros.hpc-openmpi create mode 100644 mpivars.csh create mode 100644 mpivars.sh create mode 100644 mtl-ofi-fix-missing-definition-of-container_of.patch create mode 100644 openmpi-5.0.3.0.9cc951b192bf.tar.bz2 create mode 100644 openmpi-5.0.5.0.ca64c52a8227.tar.bz2 create mode 100644 openmpi-5.0.6.0.8a5c2ef25dc8.tar.bz2 create mode 100644 openmpi-5.0.7.tar.bz2 create mode 100644 openmpi5-rpmlintrc create mode 100644 openmpi5.changes create mode 100644 openmpi5.spec create mode 100644 romio341-backport-fixes-from-mpich.patch diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..9b03811 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,23 @@ +## Default LFS +*.7z filter=lfs diff=lfs merge=lfs -text +*.bsp filter=lfs diff=lfs merge=lfs -text +*.bz2 filter=lfs diff=lfs merge=lfs -text +*.gem filter=lfs diff=lfs merge=lfs -text +*.gz filter=lfs diff=lfs merge=lfs -text +*.jar filter=lfs diff=lfs merge=lfs -text +*.lz filter=lfs diff=lfs merge=lfs -text +*.lzma filter=lfs diff=lfs merge=lfs -text +*.obscpio filter=lfs diff=lfs merge=lfs -text +*.oxt filter=lfs diff=lfs merge=lfs -text +*.pdf filter=lfs diff=lfs merge=lfs -text +*.png filter=lfs diff=lfs merge=lfs -text +*.rpm filter=lfs diff=lfs merge=lfs -text +*.tbz filter=lfs diff=lfs merge=lfs -text +*.tbz2 filter=lfs diff=lfs merge=lfs -text +*.tgz filter=lfs diff=lfs merge=lfs -text +*.ttf filter=lfs diff=lfs merge=lfs -text +*.txz filter=lfs diff=lfs merge=lfs -text +*.whl filter=lfs diff=lfs merge=lfs -text +*.xz filter=lfs diff=lfs merge=lfs -text +*.zip filter=lfs diff=lfs merge=lfs -text +*.zst filter=lfs diff=lfs merge=lfs -text diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..57affb6 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.osc diff --git a/Fix-type-mismatch-error.patch b/Fix-type-mismatch-error.patch new file mode 100644 index 0000000..c1e93af --- /dev/null +++ b/Fix-type-mismatch-error.patch @@ -0,0 +1,30 @@ +commit fc4fb3a80615992277717e3e29ce585ebe1f2256 +Author: Tomislav Janjusic +Date: Tue Feb 18 12:25:27 2025 -0600 + + Fix type mismatch error + + Signed-off-by: Tomislav Janjusic + +diff --git oshmem/mca/sshmem/base/sshmem_base_open.c oshmem/mca/sshmem/base/sshmem_base_open.c +index 1f0d1eb761e2..2694120e1cfe 100644 +--- oshmem/mca/sshmem/base/sshmem_base_open.c ++++ oshmem/mca/sshmem/base/sshmem_base_open.c +@@ -31,7 +31,7 @@ + * globals + */ + +-void *mca_sshmem_base_start_address = UINTPTR_MAX; ++void *mca_sshmem_base_start_address = (void *)UINTPTR_MAX; + + char * mca_sshmem_base_backing_file_dir = NULL; + +@@ -49,7 +49,7 @@ mca_sshmem_base_register (mca_base_register_flag_t flags) + "base", + "start_address", + "Specify base address for shared memory region", +- MCA_BASE_VAR_TYPE_UNSIGNED_LONG_LONG, ++ MCA_BASE_VAR_TYPE_UNSIGNED_LONG, + NULL, + 0, + MCA_BASE_VAR_FLAG_SETTABLE, diff --git a/_multibuild b/_multibuild new file mode 100644 index 0000000..825bf2e --- /dev/null +++ b/_multibuild @@ -0,0 +1,6 @@ + + standard + testsuite + gnu-hpc + gnu-hpc-testsuite + diff --git a/_service b/_service new file mode 100644 index 0000000..2c26ca7 --- /dev/null +++ b/_service @@ -0,0 +1,17 @@ + + + git + https://github.com/open-mpi/ompi.git + no + .git + openmpi + @PARENT_TAG@.@TAG_OFFSET@.%h + v(.*) + \1 + 8a5c2ef25dc8e4528f0d3fd2ec91a6578160af95 + + + openmpi*.tar + bz2 + + diff --git a/macros.hpc-openmpi b/macros.hpc-openmpi new file mode 100644 index 0000000..f6d9650 --- /dev/null +++ b/macros.hpc-openmpi @@ -0,0 +1,21 @@ +# +# openmpi +# + +%hpc_openmpi_init(V:) \ + %{-V: %define _mf_ver %{-V*}} \ + %{expand: %%global hpc_openmpi_dep_version %%{?_mf_ver}%%{?!_mf_ver:3}} \ + %{expand: %%global hpc_openmpi_dir openmpi%{hpc_openmpi_dep_version}} \ + %{expand: %%global hpc_openmpi_pack_version %{hpc_openmpi_dep_version}} \ + %{expand: %%global _hpc_openmpi_modules openmpi} + +# We may have to add a version here. +%hpc_setup_openmpi \ + module load openmpi + +%hpc_openmpi_requires \ +Requires: libopenmpi%{hpc_openmpi_dep_version}-%{hpc_compiler_family}%{hpc_cf_pack_version}-hpc + +%hpc_openmpi_requires_devel \ +Requires: openmpi%{hpc_openmpi_dep_version}-%{hpc_compiler_family}%{hpc_cf_pack_version}-hpc-devel + diff --git a/mpivars.csh b/mpivars.csh new file mode 100644 index 0000000..5c7f4a3 --- /dev/null +++ b/mpivars.csh @@ -0,0 +1,15 @@ +set -f path= ( prefix/bin $path ) + +if ($?MANPATH) then + if ( "$MANPATH" !~ *prefix/man* ) then + setenv MANPATH prefix/man:$MANPATH + endif +else + setenv MANPATH prefix/man: +endif + +if ($?LD_LIBRARY_PATH) then + setenv LD_LIBRARY_PATH libdir:$LD_LIBRARY_PATH +else + setenv LD_LIBRARY_PATH libdir +endif diff --git a/mpivars.sh b/mpivars.sh new file mode 100644 index 0000000..c8317da --- /dev/null +++ b/mpivars.sh @@ -0,0 +1,31 @@ +case $PATH in + *prefix/bin*) + true + ;; + *) + PATH=prefix/bin:$PATH +esac + + +case $MANPATH in + *prefix/share/man*) + true + ;; + *) + MANPATH=prefix/share/man:$MANPATH + export MANPATH +esac + + +case $LD_LIBRARY_PATH in + *libdir*) + true + ;; + *) + if [ -z "$LD_LIBRARY_PATH" ]; then + LD_LIBRARY_PATH=libdir + else + LD_LIBRARY_PATH="libdir:$LD_LIBRARY_PATH" + fi + export LD_LIBRARY_PATH +esac diff --git a/mtl-ofi-fix-missing-definition-of-container_of.patch b/mtl-ofi-fix-missing-definition-of-container_of.patch new file mode 100644 index 0000000..231c0b4 --- /dev/null +++ b/mtl-ofi-fix-missing-definition-of-container_of.patch @@ -0,0 +1,24 @@ +commit 75b6dad5959ba75fcba8c64cc0a364d820e03ebc +Author: Nicolas Morey +Date: Fri Dec 20 12:44:38 2024 +0100 + + mtl: ofi: fix missing definition of container_of + + Signed-off-by: Nicolas Morey + +diff --git ompi/mca/mtl/ofi/mtl_ofi_request.h ompi/mca/mtl/ofi/mtl_ofi_request.h +index f68c2a91baa0..6d748fd59bdc 100644 +--- ompi/mca/mtl/ofi/mtl_ofi_request.h ++++ ompi/mca/mtl/ofi/mtl_ofi_request.h +@@ -15,6 +15,11 @@ + + #include "mtl_ofi.h" + ++#ifndef container_of ++#define container_of(ptr, type, field) \ ++ ((type *) ((char *)ptr - offsetof(type, field))) ++#endif ++ + #define TO_OFI_REQ(_ptr_ctx) \ + container_of((_ptr_ctx), struct ompi_mtl_ofi_request_t, ctx) + diff --git a/openmpi-5.0.3.0.9cc951b192bf.tar.bz2 b/openmpi-5.0.3.0.9cc951b192bf.tar.bz2 new file mode 100644 index 0000000..9671e26 --- /dev/null +++ b/openmpi-5.0.3.0.9cc951b192bf.tar.bz2 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:76b7bcb6741809a8b7908897b1f2a9c090ae52624b293a722572f4970b52fd87 +size 15700318 diff --git a/openmpi-5.0.5.0.ca64c52a8227.tar.bz2 b/openmpi-5.0.5.0.ca64c52a8227.tar.bz2 new file mode 100644 index 0000000..076f937 --- /dev/null +++ b/openmpi-5.0.5.0.ca64c52a8227.tar.bz2 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:eef24ca1207b098794b8f6af5ae6a61b05a6aefba27536db01ce45b3dd5c79db +size 15702955 diff --git a/openmpi-5.0.6.0.8a5c2ef25dc8.tar.bz2 b/openmpi-5.0.6.0.8a5c2ef25dc8.tar.bz2 new file mode 100644 index 0000000..d4a37f7 --- /dev/null +++ b/openmpi-5.0.6.0.8a5c2ef25dc8.tar.bz2 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6b9bb3fdcbc7d5f66f470d8583ca210278d5b0e9c4e25fa6361d678ea8225f55 +size 16244366 diff --git a/openmpi-5.0.7.tar.bz2 b/openmpi-5.0.7.tar.bz2 new file mode 100644 index 0000000..a52b6a3 --- /dev/null +++ b/openmpi-5.0.7.tar.bz2 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:119f2009936a403334d0df3c0d74d5595a32d99497f9b1d41e90019fee2fc2dd +size 30506871 diff --git a/openmpi5-rpmlintrc b/openmpi5-rpmlintrc new file mode 100644 index 0000000..446289f --- /dev/null +++ b/openmpi5-rpmlintrc @@ -0,0 +1,8 @@ +# This line is mandatory to access the configuration functions +from Config import * + +addFilter("openmpi.*-config.* useless-provides") +addFilter("openmpi.*-devel.* shared-lib-calls-exit") +addFilter("openmpi.*-libs.* rpath-in-buildconfig") +addFilter("openmpi.*-libs.* shared-lib-calls-exit") +addFilter("openmpi.*-libs.* useless-provides") diff --git a/openmpi5.changes b/openmpi5.changes new file mode 100644 index 0000000..3ac6a62 --- /dev/null +++ b/openmpi5.changes @@ -0,0 +1,240 @@ +------------------------------------------------------------------- +Wed Feb 19 15:57:56 UTC 2025 - Nicolas Morey + +- Update to 5.0.7 (jsc#PED-11356): + - Updated UCX version requirement to v1.9 + - Documentation Improvements + - Updated `coll tuned` rules file documentation to reflect changes in versioning and features. + - Updated CUDA-related networking documentation for consistency. + - Improved descriptions for `mpirun` options, including ``--pmixmca`` and ``--prtemca``. + - Fixed typos and formatting issues in `mpirun` man pages. + - Functionality Enhancements + - Improved argument checking for ``MPI_Comm_create_from_group`` and ``MPI_Intercomm_create_from_groups`` to align with MPI 4.0 standards. + - Addressed potential race conditions in `PMIx_Group_construct` calls by adding discriminators. + - Fixed ``MPI_Wtime`` to initialize timing relative to ``MPI_Init`` for accurate session-level measurements. + - Added support for the `alltoall_algorithm_max_requests` parameter in the `coll tuned` rules file, maintaining backward compatibility. + - Introduced a version identifier for the `coll tuned` rules file for better parser handling. + - Adjusted MCA variable scopes across multiple components to allow setting via the `MPI_T` interface: `coll adapt,ucc, han, basic, hcoll` + - Bug Fixes and Minor Enhancements + - Ensures that singletons properly create their own sessions directory trees. + - Fixed community Jenkins build pipeline to handle branch commits properly. + - Resolved missing profiling symbols in the `mpi_f08` Fortran library. + - Corrected parameter mismatches in `coll/cuda` functions to avoid type issues. + - Fixed build issues on Hurd. + - Removed unused portions of rcache base structure. + - Fixed oshmem base segment address exchange. + - Fixed UCC collective fallback issue. + - Updated Nvidia/Mellanox platform file +- openMPI 5 is now the default openmpi for suse_version >= 1600 +- Switch to dist tarball to drop Sphinx and other python dependencies +- Add Fix-type-mismatch-error.patch to fix a compilation error + +------------------------------------------------------------------- +Fri Dec 20 11:50:25 UTC 2024 - Nicolas Morey + +- Add mtl-ofi-fix-missing-definition-of-container_of.patch to fix + compilation issue with libfabric >= 2.0 + +------------------------------------------------------------------- +Tue Nov 26 07:14:11 UTC 2024 - Nicolas Morey + +- Update to 5.0.6 (jsc#PED-11356): + - Session Management Enhancements: + - Finalization Control: Ensures proper finalization of classes when references + to the OPAL utility layer reach zero. A new smoke test has been added to + validate this behavior. + - Multiple Init/Finalize Handling: Improvements to handling session multiple + initializations and finalizations, addressing issues with parameter + management and session destruction. + - MPI Communication and Resource Management: + - Info Duplication: Enhanced `MPI_Info_dup` function to ensure consistent + key management across duplicated info objects, supporting better memory + and resource handling. + - OFI/Initialization Improvements: Refactored code for OFI common components + to support session-based initialization models per MPI 4 standards. + - Resource Leak Fixes: Addressed memory leaks and reference count issues + in several components to improve memory management and stability in + high-demand environments. + - Detailed Locking Protocol: Modified default file-locking protocols in UFS + component to ensure data consistency, especially when using data-sieving + operations, which require broader locking. + - MPI_T Interface Enhancements: Modified MCA parameter settings to allow + runtime tuning of collectives through the MPI_T interface, adding flexibility + for dynamic rules in collective operations. + - Corrected various documentation typos and clarified parameter settings in + several API references, improving readability and usability for end users. +- Disable LTO as it is not supported by OpenPMIX +- Disable direct verbs (openib) support. It has been deprecated since v4.x. + RDMA devices should now be used through ofi/libfabric. + +------------------------------------------------------------------- +Mon Aug 12 09:52:54 UTC 2024 - Nicolas Morey + +- Update to 5.0.5 + - btl/ofi: retry posting receive buffer + - btl/uct: check return status from some uct funcs + - fortran: use -Wl,-ld_classic if supported + - fortran: parameterize the install location of Fortran MPI bindings modulefiles + via the configure --with-mpi-moduledir CLI option + - fortran: various configury improvements + - use-mpi-f08: add missing subroutines in the mpi_f08 module + - pml/base: remove redundant copy of ompi_mpi_thread_multiple + - pml/cm: release datatype object in send completion callback + - pml/ucx: propagate MPI serialized thread mode for all worker creations + - pml/ob1: make no. of events an mca parameter + - oshmem/shmem: fix warnings regarding types and unused variables in shmem + - Add an AARCH64 OP component for for NEON and SVE ISA + - Fix MPI function names in error output + - Fix MPI_Neighbor_alltoall{v,w}_init to handle NULL parameters + - Fix a bug in intercomm creation + - Fix a bug in ompi_comm_lookup function to handle partially ready communicators + - Fix error message in ompi_comm_get_rproc + - Fix opal_basename for single character filenames + - Fix rpm build test + - Fix the info subscriber mechanism and hidden info keys + - Fix ulfm bugs in ishrink/agree/iagree + - Improve libcuda.so find command to follow symlinks + - Improve pkgconfig installation logic in script wrapper + - Change default tar format to tar-pax + - Various document updates + +------------------------------------------------------------------- +Wed Jun 26 08:18:40 UTC 2024 - Nicolas Morey + +- Update to 5.0.3 + - Fix HAN MPI_Scatter intra-node data count and type + - Add missing write memory barrier in btl/smcuda + - Fix MPI_Alltoallv and MPI_Ialltoallv data count and type check + - Enhance cuda-aware build by detecting default --with-cuda-lib value + - Enhance ofi NIC selection logic + - Fix an illegal memory access bug in mtl/ofi + - Multiple bugfixes in rocm accelerator + - Fix a double free bug in oshmem + - Add missing oshmem headers + - Fix uninitialized lock in btl/usnic + - Fix uninitialized mutex in file_open + - Fix compiler warnings about unused cid_base variable + - Enhance autogen submodule checks + - Various document updates + +------------------------------------------------------------------- +Mon Mar 25 07:40:50 UTC 2024 - Nicolas Morey + +- Update to v5.0.2 + - Fix the fs/lustre component build + - Fix a mtl/ofi multi-threaded race condition bug + - Add missing fortran profiling interfaces according to MPI 4.0 standard + - Allow 0-size data copy in opal/accelerator + - Fix a btl/ofi and mtl/ofi provider selection bug + - Properly initialize mca_rcache_base_module_t members + - Fix a singleton launch segfault + - Various documentation related updates and changes + - Fix a bunch of compiler warnings + - Sessions: fix a problem with fortran MPI_Session_get_nth_pset interface + - Correctly access the communicator name is MSGQ + - accelerator/cuda: fix bug in makefile.am preventing correct linkage + in non-standard location + - Correctly handle attributes on MPI_COMM_WORLD. + - Minor memory leak fixes in: + btl/tcp, mca_base_framework, ob1 + - Fix static initialization of recursive mutexes + - Spack: fix for dlopen missing symbol problem + - opal/mca/accelerator: ROCm 6.0 incompatibility fix + - opal_var_dump_color_keys: fix an array overflow + - SHMEM_LOCKS: MCS implementation of SHMEM LOCKS + - configury: support flang-new + - Update processing of "display_map" info key + - dpm: update PMIX attribute + +------------------------------------------------------------------- +Mon Feb 26 12:47:23 UTC 2024 - Dominique Leuenberger + +- Use %autosetup macro. Allows to eliminate the usage of deprecated + PatchN. + +------------------------------------------------------------------- +Fri Oct 27 07:16:37 UTC 2023 - Nicolas Morey + +- Update to v5.0.0 + - No change since v5.0.0rc16 + +------------------------------------------------------------------- +Thu Oct 26 08:43:17 UTC 2023 - Nicolas Morey + +- Update to v5.0.0rc16 + - Includes a fix to correctly forward stdin to remote processes. + - Documentation updates + - Fix build case with --disable-prrte + - Update PRRTe and PMIx to pull in fixes + - pcomm: fix fortran interface for precv/psend. + - Fix UCX support level check. + - Add support for MPI_ERR_VALUE_TOO_LARGE + - ofi - add MCA parameters to not use FI_HMEM + - oshmem: Add symmetric remote key handling + - oshmem: Fixed DEVICE_NIC_MEM support to use RDMA memory type. + - Fix a small issue in properly setting filename when building the empty schizo rst file. + - Update PRRTE to release tag v3.0.2 + +------------------------------------------------------------------- +Tue Oct 10 09:45:03 UTC 2023 - Nicolas Morey + +- Drop %vers macro so that the Version tag can be parsed more easily +- Update to v5.0.0rc13 + - Update PMIx to v4.2.6 + - Update PRRTE to v3.0.1 + - Lots of documentation updates. + - Fixed parameter name in MPI_Intercomm_merge. + - OFI: Update NIC selection to determine optimal interfaces from the current process. + - Fix reordering of received data in MPI_Gather. + - Disable builds with HWLOC versions >= 3.0.0. + - Fix re-ordering of ranks in MPI_Dist_graph_create. + - coll/HAN: Fix bug when using MPI_IN_PLACE with MPI_Reduce. + - Fix MPI_Type_Dup to propagate errors from inner calls. + - Fix the compilation of the monitoring infrastructure. + - Various other bug fixes. + +------------------------------------------------------------------- +Mon Aug 7 17:02:04 UTC 2023 - Nicolas Morey + +- Drop support for TrueScale (bsc#1212146) + +------------------------------------------------------------------- +Tue Jul 25 13:07:44 UTC 2023 - Nicolas Morey + +- Update to v5.0.0rc12 + - accelerator/rocm: add SYNC_MEMOPS support + - Updated PMIx, PRRTe, and OAC submodule pointers. + - Fixe in mca_btl_ofi_flush() in multi threaded environment. + - smcuda: fix an edge case when using enable mca dso + - Fix MPI_Session_init bug if all previous sessions are finalized.. + - Fix mpi4py hang in intercomm_create_from_groups. + - Fix finalize segfault with OSHMEM 4.1.5 + - Update FAQ content. + - Improve AVX* detection. Fixes op/avx link failure with nvhpc compiler. + - Fix incorrect results with pml/ucx using Intel compiler. + - Fix segfault when broadcasting large MPI structs. + - Add platform files for Google Cloud HPC. + - UCC/HCOLL: Fix waitall for non blokcing collectives. + - check for MPI_T.3 (not MPI_T.5). Fix pre-built docs check. +- Add romio341-backport-fixes-from-mpich.patch to fix compilation issues. + +------------------------------------------------------------------- +Thu Dec 15 10:05:02 UTC 2022 - Nicolas Morey + +- Update to v5.0.0rc11 + - Many bug fixes + +------------------------------------------------------------------- +Fri Oct 28 05:23:12 UTC 2022 - Steve Kowalik + +- Move from python 2 to python 3. + +------------------------------------------------------------------- +Mon Oct 3 10:48:54 UTC 2022 - Nicolas Morey-Chaisemartin + +- Drop baselibs.conf as there is no good reason to run a 32b MPI on a 64b system + +------------------------------------------------------------------- +Mon Jul 4 18:06:38 UTC 2022 - Nicolas Morey-Chaisemartin + +- Initial import of openmpi v5.0.0rc7 diff --git a/openmpi5.spec b/openmpi5.spec new file mode 100644 index 0000000..f5e5e26 --- /dev/null +++ b/openmpi5.spec @@ -0,0 +1,779 @@ +# +# spec file +# +# Copyright (c) 2025 SUSE LLC +# Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana +# University Research and Technology +# Corporation. All rights reserved. +# Copyright (c) 2004-2005 The University of Tennessee and The University +# of Tennessee Research Foundation. All rights +# reserved. +# Copyright (c) 2004-2005 High Performance Computing Center Stuttgart, +# University of Stuttgart. All rights reserved. +# Copyright (c) 2004-2005 The Regents of the University of California. +# All rights reserved. +# Copyright (c) 2006-2016 Cisco Systems, Inc. All rights reserved. +# Copyright (c) 2013 Mellanox Technologies, Inc. +# All rights reserved. +# Copyright (c) 2015 Research Organization for Information Science +# and Technology (RIST). All rights reserved. +# Copyright (c) 2003, The Regents of the University of California, through +# Lawrence Berkeley National Laboratory (subject to receipt of any +# required approvals from the U.S. Dept. of Energy). All rights reserved. +# +# All modifications and additions to the file contributed by third parties +# remain the property of their copyright owners, unless otherwise agreed +# upon. The license for this file, and modifications and additions to the +# file, is the same license as for the pristine package itself (unless the +# license for the pristine package is not an Open Source License, in which +# case the license is the MIT License). An "Open Source License" is a +# license that conforms to the Open Source Definition (Version 1.9) +# published by the Open Source Initiative. + +# Please submit bugfixes or comments via https://bugs.opensuse.org/ +# + + +%global flavor @BUILD_FLAVOR@%{nil} + +# Static libraries are disabled by default +# for non HPC builds +# To enable them, simply uncomment: +# % define build_static_devel 1 + +%define pname openmpi +%define _vers 5_0_7 +%define m_f_ver 5 +%bcond_with ringdisabled + +%if "%flavor" == "" +ExclusiveArch: do_not_build + %{bcond_with hpc} + %define package_name %pname%{m_f_ver} +%else + # Trickery for OBS Staging. If _with_ringdisabled is set + # we only want to build the flavors required by other rings packages. + # Do not build any other ones + %if %{with ringdisabled} + %if "%flavor" != "standard" +ExclusiveArch: do_not_build + %endif + %endif + + %if "%flavor" == "standard" || "%flavor" == "testsuite" + %define package_name %{pname}%{m_f_ver} + %bcond_with hpc + %if "%flavor" == "testsuite" + %define testsuite 1 + %endif + %else + %bcond_without hpc +# Needs to be defined here to avoid hen/egg problem with test packages. + %define package_name %{pname}_%{_vers}-%{compiler_family}%{?c_f_ver}-hpc + %define build_static_devel 1 + %endif +%endif + +%if "%flavor" == "gnu-hpc" +%define compiler_family gnu +%undefine c_f_ver +%endif + +%if "%flavor" == "gnu7-hpc" +%define compiler_family gnu +%define c_f_ver 7 +%endif + +%if "%flavor" == "gnu-hpc-testsuite" +%define compiler_family gnu +%undefine c_f_ver +%define testsuite 1 +%endif + +%if "%flavor" == "gnu7-hpc-testsuite" +%define compiler_family gnu +%define c_f_ver 7 +%define testsuite 1 +%endif + +%if 0%{?suse_version} >= 1320 +%ifarch aarch64 %power64 x86_64 s390x +%define with_ucx 1 +%endif +%endif + +# Detect whether we are the default openMPI implemantation or not +%if "%{flavor}" == "standard" && (%{suse_version} >= 1600) +%define default_openmpi 1 +%else +%define default_openmpi 0 +%endif + +%if %{with hpc} +%{!?compiler_family:%global compiler_family gnu} +%{hpc_init -M -c %compiler_family %{?c_f_ver:-v %{c_f_ver}} -m openmpi %{?mpi_f_ver:-V %{mpi_f_ver}}} + +%global hpc_openmpi_dep_version %(VER=%m_f_ver; echo -n ${VER}) +%global hpc_openmpi_dir openmpi%{hpc_openmpi_dep_version} +%global hpc_openmpi_pack_version %{hpc_openmpi_dep_version} +%endif + +############################################################################# +# +# Preamble Section +# +############################################################################# + +Name: %{package_name}%{?testsuite:-testsuite} +Version: 5.0.7 +Release: 0 +Summary: An implementation of MPI/SHMEM (Version %{m_f_ver}) +License: BSD-3-Clause +Group: Development/Libraries/Parallel +URL: http://www.open-mpi.org/ +Source0: https://download.open-mpi.org/release/open-mpi/v5.0/openmpi-%{version}.tar.bz2 +Source2: openmpi5-rpmlintrc +Source3: macros.hpc-openmpi +Source4: mpivars.sh +Source5: mpivars.csh +Patch1: romio341-backport-fixes-from-mpich.patch +Patch2: mtl-ofi-fix-missing-definition-of-container_of.patch +Patch3: Fix-type-mismatch-error.patch +Provides: mpi +BuildRoot: %{_tmppath}/%{name}-%{version}-build +# Exclude 32b archs +ExcludeArch: %{arm} %ix86 +BuildRequires: autoconf +BuildRequires: automake +BuildRequires: fdupes +BuildRequires: flex +BuildRequires: hwloc-devel +BuildRequires: libevent-devel +BuildRequires: libfabric-devel +BuildRequires: libibumad-devel +BuildRequires: libtool +# net-tools is required to run hostname +BuildRequires: net-tools +BuildRequires: python3 +%if 0%{?testsuite} +BuildArch: noarch +BuildRequires: %{package_name} = %{version} +%endif +%if 0%{?with_ucx} +BuildRequires: libucm-devel +BuildRequires: libucp-devel +BuildRequires: libucs-devel +BuildRequires: libuct-devel +%endif +%if %{without hpc} +BuildRequires: Modules +BuildRequires: gcc-c++ +BuildRequires: gcc-fortran +BuildRequires: mpi-selector +Requires: mpi-selector +Requires(preun):mpi-selector +Requires: %{package_name}-libs = %{version} +%else +BuildRequires: %{compiler_family}%{?c_f_ver}-compilers-hpc-macros-devel +BuildRequires: lua-lmod +BuildRequires: suse-hpc +%if 0%{!?testsuite:1} +Requires: lib%{package_name} = %{version} +%endif +%hpc_requires +%endif + +%ifarch x86_64 +BuildRequires: libnuma-devel +BuildRequires: libpsm2-devel +BuildRequires: numactl +%endif + +Requires: openmpi-runtime-config +Recommends: openmpi%{m_f_ver}-config +%if 0%{?default_openmpi} +Provides: openmpi = %{version} +%endif +# OpenMPI requires ssh (or rsh) to run even on a single host +# Force ssh to make sure the install works out of the box +Requires: openssh + +%if %{without hpc} +%define mpi_prefix %{_libdir}/mpi/gcc/openmpi%{m_f_ver} + +%define mpi_bindir %{mpi_prefix}/bin +%define mpi_libdir %{mpi_prefix}/%{_lib} +%define mpi_datadir %{mpi_prefix}/share +%define mpi_helpdir %{mpi_datadir}/%{pname}%{m_f_ver} +%define mpi_includedir %{mpi_prefix}/include +%define mpi_mandir %{mpi_prefix}/share/man +%else +%define mpi_prefix %hpc_prefix + +%define mpi_bindir %hpc_bindir +%define mpi_libdir %hpc_libdir +%define mpi_datadir %hpc_datadir +%define mpi_helpdir %{mpi_datadir}/openmpi +%define mpi_includedir %hpc_includedir +%define mpi_mandir %hpc_mandir + +%endif + +%description +%if 0%{?testsuite} +This package is just needed to run the testsuite and does not contain +anything interesting. +%else +OpenMPI is an implementation of the Message Passing Interface, a +standardized API typically used for parallel and/or distributed +computing. OpenMPI is the merged result of four prior implementations +where the team found for them to excel in one or more areas, +such as latency or throughput. + +OpenMPI also includes an implementation of the OpenSHMEM parallel +programming API, which is a Partitioned Global Address Space (PGAS) +abstraction layer providing inter-process communication using +one-sided communication techniques. + +This package provides general tools (mpirun, mpiexec, etc.) and the +Module Component Architecture (MCA) base and plugins necessary for +running Open MPI/OpenSHMEM version %{m_f_ver} jobs. +%endif + +%if 0%{!?testsuite:1} +%package %{!?with_hpc:libs}%{?with_hpc:-n lib%{name}} +Summary: OpenMPI runtime libraries for OpenMPI %{?with_hpc:HPC} version %{version} +Group: System/Libraries +Requires: %{name} = %{version} +%if 0%{?default_openmpi} +Provides: openmpi-libs = %{version} +%endif +%{?with_hpc:%hpc_requires} + +%description %{!?with_hpc:libs}%{?with_hpc:-n lib%{name}} +OpenMPI is an implementation of the Message Passing Interface, a +standardized API typically used for parallel and/or distributed +computing. OpenMPI is the merged result of four prior implementations +where the team found for them to excel in one or more areas, +such as latency or throughput. + +OpenMPI also includes an implementation of the OpenSHMEM parallel +programming API, which is a Partitioned Global Address Space (PGAS) +abstraction layer providing inter-process communication using +one-sided communication techniques. + +This package provides the Open MPI/OpenSHMEM version %{m_f_ver} +shared libraries. + +%package devel +Summary: SDK for openMPI %{?with_hpc:HPC} version %{version} +Group: Development/Libraries/Parallel +Requires: libibumad-devel +%if %{without hpc} +Requires: libstdc++-devel +%if 0%{?default_openmpi} +Provides: openmpi-devel = %{version} +%endif +%else +%hpc_requires_devel +%endif +Requires: %{name} = %{version} + +%description devel +OpenMPI is an implementation of the Message Passing Interface, a +standardized API typically used for parallel and/or distributed +computing. OpenMPI is the merged result of four prior implementations +where the team found for them to excel in one or more areas, +such as latency or throughput. + +OpenMPI also includes an implementation of the OpenSHMEM parallel +programming API, which is a Partitioned Global Address Space (PGAS) +abstraction layer providing inter-process communication using +one-sided communication techniques. + +This package provides the development files for Open MPI/OpenSHMEM +version %{m_f_ver}, such as wrapper compilers and header files for +MPI/OpenSHMEM development. + +%package docs +Summary: Documentation for Open MPI/SHMEM %{?with_hpc:HPC} version %{version} +Group: Documentation/Man +Requires: %{name} = %{version} + +%description docs +OpenMPI is an implementation of the Message Passing Interface, a +standardized API typically used for parallel and/or distributed +computing. OpenMPI is the merged result of four prior implementations +where the team found for them to excel in one or more areas, +such as latency or throughput. + +OpenMPI also includes an implementation of the OpenSHMEM parallel +programming API, which is a Partitioned Global Address Space (PGAS) +abstraction layer providing inter-process communication using +one-sided communication techniques. + +This subpackage provides the documentation for Open MPI/OpenSHMEM. + +%package macros-devel +Summary: Macros for openMPI version %{version} +Group: Development/Libraries/Parallel +Requires: %{name}-devel = %{version} +# Make sure no two openmpi macro file can be installed at once +Provides: %{pname}-macros-provider = %{version} +Conflicts: otherproviders(%{pname}-macros-provider) +# Conflict (without providing) with the older openmpi-hpc-macros-devel flag +# to avoid issue with older packages +Conflicts: otherproviders(%{pname}-hpc-macros-devel) + +%if 0%{?default_openmpi} +Provides: openmpi-macros-devel = %{version} +%endif + +%description macros-devel +Macros for building RPM packages for OpenMPI version %{version}. + +%if 0%{?build_static_devel} +%package devel-static +Summary: Static libraries for openMPI %{?with_hpc:HPC} version %{version} +Group: Development/Libraries/Parallel +Requires: %{name}-devel = %{version} +%if 0%{?default_openmpi} +Provides: openmpi-devel-static = %{version} +%endif + +%description devel-static +OpenMPI is an implementation of the Message Passing Interface, a +standardized API typically used for parallel and/or distributed +computing. OpenMPI is the merged result of four prior implementations +where the team found for them to excel in one or more areas, +such as latency or throughput. + +This RPM contains the static library files, which are packaged separately from +the dynamic library and headers. +%endif + +%if %{without hpc} +%package -n %{pname}%{m_f_ver}-config +Summary: Runtime configuration files for openMPI %{?with_hpc:HPC} version %{version} +Group: Development/Libraries/Parallel +Provides: openmpi-runtime-config = %{version} +Conflicts: otherproviders(openmpi-runtime-config) +# OpenMPI5 is PMIx enabled +Provides: pmix-runtime-config = %{version} +Conflicts: otherproviders(pmix-runtime-config) + +%description -n %{pname}%{m_f_ver}-config +OpenMPI is an implementation of the Message Passing Interface, a +standardized API typically used for parallel and/or distributed +computing. OpenMPI is the merged result of four prior implementations +where the team found for them to excel in one or more areas, +such as latency or throughput. + +This RPM contains the configuration files for OpenMPI runtime (Version 3). +%endif + +%if %{with hpc} +%{hpc_master_package -L -a} +%{hpc_master_package -l} +%{hpc_master_package devel} +%{hpc_master_package docs} +%{hpc_master_package macros-devel} +%{hpc_master_package -a devel-static} +%endif # ?with_hpc +%endif # !testsuite + +# We do provide our own PMIx and should not create any requires/excludes +%global __provides_exclude_from %{mpi_libdir}/libpmix.*.so +%global __requires_exclude libpmix* + +%if "%(echo %version | tr '.' '_')" != "%_vers" +%{error: Fix _vers variable to match package version!} +%endif + +############################################################################# +# +# Prepatory Section +# +############################################################################# +%prep +echo FLAVOR %{flavor} +%if %{with hpc} +echo with HPC +%endif +%if %{without hpc} +echo without HPC +%endif +%autosetup -p0 -n openmpi-%{version} + +# Live patch the VERSION file +sed -i -e 's/^greek=.*$/greek=%{git_ver}/' -e 's/^repo_rev=.*$/repo_rev=%{version}%{git_ver}/' \ + -e 's/^date=.*$/date="OpenMPI %{version} Distribution for SUSE"/' VERSION + +############################################################################# +# +# Build Section +# +############################################################################# + +%build +# make build reproducible +export USER=OBS +export HOSTNAME=OBS +# OBS sets SOURCE_DATE_EPOCH +# OpenPMIx does not support LTO: +# configure: WARNING: Configure has detected the presence of the -flto +# configure: WARNING: compiler directive in CFLAGS. PMIx does not currently +# configure: WARNING: support this flag as it conflicts with the +# configure: WARNING: plugin architecture of the PMIx library. +# configure: error: Please remove this directive and re-run configure. +%global _lto_cflags %{nil} +%{?with_hpc:%hpc_debug} +./autogen.pl --force --no-3rdparty libevent,hwloc +%if %{with hpc} +%{hpc_setup} +%{hpc_configure} \ +%else +%{configure} \ + --prefix="%{mpi_prefix}" \ + --exec-prefix="%{mpi_prefix}" \ + --bindir="%{mpi_bindir}" \ + --datadir="%{mpi_datadir}" \ + --includedir="%{mpi_includedir}" \ + --libdir="%{mpi_libdir}" \ + --mandir="%{mpi_mandir}" \ +%endif + --with-libevent=external \ + --with-hwloc=external \ + %{?build_static_devel:--enable-static} \ + %{!?build_static_devel:--disable-static} \ + --enable-builtin-atomics \ + --without-verbs \ + --with-libfabric \ +%if 0%{?with_ucx} + --with-ucx \ +%endif + --enable-mpi-thread-multiple \ + --disable-wrapper-rpath \ + --with-slurm \ +%if 0%{?with_ucx} + --with-ucx \ + --with-ucx-libdir=/usr/%_lib \ +%endif +%ifarch x86_64 + --with-psm2 \ +%endif + --disable-silent-rules \ + --enable-mpirun-prefix-by-default \ + --with-package-string="Open MPI Distribution for SUSE" \ + --disable-wrapper-runpath +make %{?_smp_mflags} + +%if 0%{?testsuite} +%check +make check + +%install + +%files +%defattr(-, root, root) +%doc README.md +%doc test/util/test-suite.log + +%else # ?testsuite + +############################################################################# +# +# Install Section +# +############################################################################# + +%install +%{?with_hpc:%{hpc_setup_compiler}} +make install DESTDIR="%buildroot" + +# sanitize .la files +list="$(find %{buildroot} -name "*.la" -printf "%%h\n" | sort | uniq)" +for dir in ${list} +do + deps="${deps} -L${dir##%{buildroot}}" +done +for dir in ${list} +do +%if !0%{?build_static_devel} + rm -f ${dir}/*.la +%else + for file in ${dir}/*.la + do + sed -i -e "s@ [^[:space:]]*home[^[:space:]\']*@${deps}@" \ + -e "s@ [^[:space:]]*home[^[:space:]\']*@@g" \ + -e "s@-L.*.libs @@g" ${file} + done +%endif +done +##even with disable static this one gets generated +%{!?build_static_devel:rm -f %{buildroot}%{mpi_libdir}/libvt-pomp.a} + +# GCC 5 builds the ignore-tkr extension and there is no way to +# turn that off +rm -f %{buildroot}%{mpi_libdir}/mpi_ext.mod + +%fdupes %{buildroot}%{mpi_mandir} +%fdupes %{buildroot}%{mpi_datadir} +%fdupes %{buildroot}%{mpi_libdir}/pkgconfig + +%if %{without hpc} +# make and install mpivars files +sed -e 's,prefix,%{mpi_prefix},g' -e 's,libdir,%{mpi_libdir},g' %{SOURCE4} \ + > %{buildroot}%{mpi_bindir}/mpivars.sh +sed -e 's,prefix,%{mpi_prefix},g' -e 's,libdir,%{mpi_libdir},g' %{SOURCE5} \ + > %{buildroot}%{mpi_bindir}/mpivars.csh + +mkdir -p %{buildroot}%{_datadir}/modules/gnu-openmpi +cat << EOF > %{buildroot}%{_datadir}/modules/gnu-openmpi/%{version} +#%%Module +proc ModulesHelp { } { + global dotversion + puts stderr "\tLoads the gnu - openmpi %{version} Environment" +} + +module-whatis "Loads the gnu openmpi %{version} Environment." +conflict gnu-openmpi +prepend-path PATH %{mpi_bindir} +prepend-path INCLUDE %{mpi_includedir} +prepend-path INCLUDE %{mpi_libdir} +prepend-path MANPATH %{mpi_mandir} +prepend-path LD_LIBRARY_PATH %{mpi_libdir} + +EOF + +mkdir -p %{buildroot}%{_rpmmacrodir} +cat <%{buildroot}%{_rpmmacrodir}/macros.openmpi +# +# openmpi +# +%openmpi_prefix %{mpi_prefix} +%setup_openmpi source %{mpi_bindir}/mpivars.sh + +%openmpi_requires Requires: %{name}-libs +%openmpi_devel_requires Requires: %{name}-devel + +EOF +%else +%hpc_write_modules_files +#%%Module1.0##################################################################### + +proc ModulesHelp { } { + +puts stderr " " +puts stderr "This module loads the %{pname} library built with the %{compiler_family} toolchain." +puts stderr "\nVersion %{version}\n" + +} +module-whatis "Name: %{pname} built with %{compiler_family} toolchain" +module-whatis "Version: %{version}" +module-whatis "Category: runtime library" +module-whatis "Description: %{SUMMARY:0}" +module-whatis "URL: %{url}" + +set version %{version} + +setenv MPI_DIR %{hpc_mpi_install_path} +prepend-path PATH %{hpc_bindir} +prepend-path MANPATH %{hpc_mandir} +prepend-path LD_LIBRARY_PATH %{hpc_libdir} +prepend-path MODULEPATH %{hpc_modulepath} +%{hpc_modulefile_add_pkgconfig_path} + +family "MPI" +EOF +cat < %{buildroot}/%{mpi_bindir}/mpivars.sh +%hpc_setup_compiler +module load %{hpc_mpi_family}%{?pack_suff}/%{version} +EOF +sed -e "s/export/setenv/" -e "s/=/ /" \ + %{buildroot}/%{mpi_bindir}/mpivars.sh > \ + %{buildroot}/%{mpi_bindir}/mpivars.csh +mkdir -p %{buildroot}%{_rpmmacrodir} +mkdir -p %{buildroot}%{_rpmmacrodir} +cp %{S:3} %{buildroot}%{_rpmmacrodir} + +# Drop the files that should go into %{pname}-config as we only package them +# in the non HPC build +rm -f %{buildroot}%{_sysconfdir}/prte-default-hostfile +rm -f %{buildroot}%{_sysconfdir}/prte-mca-params.conf +rm -f %{buildroot}%{_sysconfdir}/openmpi-totalview.tcl +rm -f %{buildroot}%{_sysconfdir}/pmix-mca-params.conf +rm -f %{buildroot}%{_sysconfdir}/openmpi-mca-params.conf +rm -f %{buildroot}%{_sysconfdir}/prte.conf +%endif + +%if %{without hpc} +%post +# Always register. We might be already registered in the case of an udate +# but mpi-selector handles it fine +/usr/bin/mpi-selector \ + --register %{name} \ + --source-dir %{mpi_bindir} \ + --yes + +%preun +# Only unregister when uninstalling +if [ "$1" = "0" ]; then + /usr/bin/mpi-selector --unregister %{name} --yes + # Deregister the default if we are uninstalling it + if [ "$(/usr/bin/mpi-selector --system --query)" = "%{name}" ]; then + /usr/bin/mpi-selector --system --unset --yes + fi +fi + +%post libs -p /sbin/ldconfig +%postun libs -p /sbin/ldconfig +%else #!?with_hpc +# make it default +%post -n lib%{name} -p /sbin/ldconfig +%postun -n lib%{name} -p /sbin/ldconfig + +%postun +%hpc_module_delete_if_default +%endif #!?with_hpc + +%files +%defattr(-, root, root) +%doc docs/release-notes/changelog/v5.0.x.rst README.md +%license LICENSE +%dir %{mpi_prefix} +%dir %{mpi_bindir} +%dir %{mpi_libdir} +%dir %{mpi_datadir} +%dir %{mpi_mandir} +%{mpi_bindir}/mpivars.csh +%{mpi_bindir}/mpivars.sh + +%if %{without hpc} +%dir %{_libdir}/mpi +%dir %{_libdir}/mpi/gcc +%dir %{_datadir}/modules/gnu-openmpi +%{_datadir}/modules/gnu-openmpi/%{version} +%else # with hpc +%hpc_mpi_dirs +%hpc_modules_files +%endif # with hpc +# +%{mpi_bindir}/oshrun +%{mpi_bindir}/mpirun +%{mpi_bindir}/ompi_info +%{mpi_bindir}/palloc +%{mpi_bindir}/pattrs +%{mpi_bindir}/pctrl +%{mpi_bindir}/pevent +%{mpi_bindir}/plookup +%{mpi_bindir}/pmix* +%{mpi_bindir}/pps +%{mpi_bindir}/pquery +%{mpi_bindir}/prte* +%{mpi_bindir}/prun +%{mpi_bindir}/pterm + +%if 0%{?with_ucx} +%{mpi_bindir}/oshmem_info +%endif + +%dir %{mpi_datadir}/openmpi +%dir %{mpi_datadir}/openmpi/amca-param-sets +%{mpi_datadir}/openmpi/amca-param-sets/example.conf +%{mpi_datadir}/openmpi/amca-param-sets/ft-mpi +%{mpi_datadir}/openmpi/*-data.txt +%{mpi_datadir}/openmpi/help-*.txt +%dir %{mpi_datadir}/pmix +%{mpi_datadir}/pmix/help-*.txt +%{mpi_datadir}/pmix/pmixcc-wrapper-data.txt + +%dir %{mpi_datadir}/prte +%dir %{mpi_datadir}/prte/amca-param-sets/ +%{mpi_datadir}/prte/amca-param-sets/example.conf +%{mpi_datadir}/prte/help-*.txt + +%files %{!?with_hpc:libs}%{?with_hpc:-n lib%{name}} +%defattr(-,root,root) +%dir %mpi_prefix/ +%dir %mpi_libdir/ +%mpi_libdir/*.so.* +%mpi_libdir/mpi_types.mod +%{mpi_libdir}/openmpi/*.so +%if 0%{!?build_static_devel:1} +%dir %mpi_libdir/pmix/ +%{mpi_libdir}/pmix/*.so +%endif + +%files devel +%defattr(-, root, root) +%dir %{mpi_libdir}/openmpi +%dir %{mpi_libdir}/pkgconfig +%{mpi_includedir} +%{mpi_libdir}/*.so +%{mpi_libdir}/pkgconfig/*.pc +%{mpi_libdir}/mpi.mod +%if 0%{?suse_version} >= 1320 +%{mpi_libdir}/mpi_f08*.mod +%{mpi_libdir}/pmpi_f08*.mod +%endif +%{mpi_bindir}/mpiCC +%{mpi_bindir}/mpic++ +%{mpi_bindir}/mpicc +%{mpi_bindir}/mpicxx +%{mpi_bindir}/mpiexec +%{mpi_bindir}/mpif77 +%{mpi_bindir}/mpif90 +%{mpi_bindir}/mpifort +%{mpi_bindir}/opal_wrapper +%if 0%{?with_ucx} +%{mpi_bindir}/oshcc +%{mpi_bindir}/oshCC +%{mpi_bindir}/oshc++ +%{mpi_bindir}/oshcxx +%{mpi_bindir}/oshfort +%{mpi_bindir}/shmemcc +%{mpi_bindir}/shmemCC +%{mpi_bindir}/shmemc++ +%{mpi_bindir}/shmemcxx +%{mpi_bindir}/shmemfort +%endif +%{mpi_datadir}/openmpi/openmpi-valgrind.supp +%{mpi_datadir}/pmix/pmix-valgrind.supp + +%files docs +%defattr(-, root, root, -) +%{mpi_mandir} +%{mpi_datadir}/doc/ +%{mpi_datadir}/prte/rst/ + +%files macros-devel +%defattr(-,root,root,-) +%if %{with hpc} +%{_rpmmacrodir}/macros.hpc-openmpi +%else +%{_rpmmacrodir}/macros.openmpi +%endif + +%if 0%{?build_static_devel} +%files devel-static +%defattr(-, root, root) +%{mpi_libdir}/*.la +%{mpi_libdir}/openmpi/*.la +%{mpi_libdir}/*.a +%{mpi_libdir}/openmpi/*.a +%endif + +%if %{without hpc} +%files -n %{pname}%{m_f_ver}-config +%config %{_sysconfdir}/prte-default-hostfile +%config %{_sysconfdir}/prte-mca-params.conf +%config %{_sysconfdir}/pmix-mca-params.conf +%config %{_sysconfdir}/openmpi-mca-params.conf +%{_sysconfdir}/openmpi-totalview.tcl +%config %{_sysconfdir}/prte.conf +%endif + +%endif # !?testsuite + +%changelog diff --git a/romio341-backport-fixes-from-mpich.patch b/romio341-backport-fixes-from-mpich.patch new file mode 100644 index 0000000..e08d406 --- /dev/null +++ b/romio341-backport-fixes-from-mpich.patch @@ -0,0 +1,40 @@ +commit fd5991044167b2bf87b656ef7c5fed89dc69f234 +Author: Nicolas Morey +Date: Wed Jul 26 09:55:50 2023 +0200 + + romio341: backport fixes from mpich + + Fix compilation issues when NDEBUG is set + + Signed-off-by: Nicolas Morey + +diff --git 3rd-party/romio341/mpl/src/sock/mpl_sockaddr.c 3rd-party/romio341/mpl/src/sock/mpl_sockaddr.c +index c0e991c68d85..147bffad799d 100644 +--- 3rd-party/romio341/mpl/src/sock/mpl_sockaddr.c ++++ 3rd-party/romio341/mpl/src/sock/mpl_sockaddr.c +@@ -140,6 +140,7 @@ int MPL_get_sockaddr_direct(int type, MPL_sockaddr_t * p_addr) + return 0; + } else { + assert(0); ++ return -1; + } + } + +@@ -209,7 +210,7 @@ void MPL_set_listen_attr(int use_loopback, int max_conn) + int MPL_listen(int sock_fd, unsigned short port) + { + MPL_sockaddr_t addr; +- int ret; ++ int ret = 0; + + if (_use_loopback) { + MPL_get_sockaddr_direct(MPL_SOCKADDR_LOOPBACK, &addr); +@@ -234,7 +235,7 @@ int MPL_listen(int sock_fd, unsigned short port) + int MPL_listen_anyport(int sock_fd, unsigned short *p_port) + { + MPL_sockaddr_t addr; +- int ret; ++ int ret = 0; + + if (_use_loopback) { + MPL_get_sockaddr_direct(MPL_SOCKADDR_LOOPBACK, &addr);