SHA256
6
0
forked from pool/openmpi5

16 Commits

Author SHA256 Message Date
12a507c89c Accepting request 1281139 from science:HPC
OBS-URL: https://build.opensuse.org/request/show/1281139
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/openmpi5?expand=0&rev=14
2025-06-01 19:36:13 +00:00
d04b31aa79 - Add Force-alignment-of-opal_atomic_int128_t-to-be-16B.patch to fix a 128b CAS issue on
OBS-URL: https://build.opensuse.org/package/show/science:HPC/openmpi5?expand=0&rev=31
2025-05-29 12:20:25 +00:00
37d6d57053 - Fix bad git_ver appearing in VERSION
- Add disable-atomic-cas-128b-on-s390x.patch to fix a 128b CAS issue on
  s390x (bsc#1243680)

OBS-URL: https://build.opensuse.org/package/show/science:HPC/openmpi5?expand=0&rev=30
2025-05-27 09:07:36 +00:00
e51cb2869a Accepting request 1269645 from science:HPC
OBS-URL: https://build.opensuse.org/request/show/1269645
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/openmpi5?expand=0&rev=13
2025-04-16 18:37:24 +00:00
b1932953e9 - Remove bad dependency from openmpi5-testsuite to openmpi5-testsuite-libs
OBS-URL: https://build.opensuse.org/package/show/science:HPC/openmpi5?expand=0&rev=28
2025-04-15 14:18:56 +00:00
f550f1b14e Accepting request 1265555 from science:HPC
- Remove support for gnu-hpc build flavours.

- Disable gnu-hpc build flavours (bsc#1239982)

OBS-URL: https://build.opensuse.org/request/show/1265555
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/openmpi5?expand=0&rev=12
2025-04-03 14:45:49 +00:00
4b721835c8 - Remove support for gnu-hpc build flavours.
OBS-URL: https://build.opensuse.org/package/show/science:HPC/openmpi5?expand=0&rev=26
2025-03-30 15:33:59 +00:00
14624407bb - Disable gnu-hpc build flavours (bsc#1239982)
OBS-URL: https://build.opensuse.org/package/show/science:HPC/openmpi5?expand=0&rev=25
2025-03-24 16:01:06 +00:00
de86ef7514 Accepting request 1247230 from science:HPC
OBS-URL: https://build.opensuse.org/request/show/1247230
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/openmpi5?expand=0&rev=11
2025-02-26 16:13:46 +00:00
f4036ffc00 - 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
2025-02-19 20:06:01 +00:00
212336f1a4 Accepting request 1232846 from science:HPC
OBS-URL: https://build.opensuse.org/request/show/1232846
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/openmpi5?expand=0&rev=10
2024-12-20 22:11:37 +00:00
cd3c5d2687 - Add mtl-ofi-fix-missing-definition-of-container_of.patch to fix
compilation issue with libfabric >= 2.0

- 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.

OBS-URL: https://build.opensuse.org/package/show/science:HPC/openmpi5?expand=0&rev=21
2024-12-20 14:00:31 +00:00
53b38a0f27 Accepting request 1193453 from science:HPC
OBS-URL: https://build.opensuse.org/request/show/1193453
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/openmpi5?expand=0&rev=9
2024-08-13 11:24:03 +00:00
9292b0d9c0 - 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

OBS-URL: https://build.opensuse.org/package/show/science:HPC/openmpi5?expand=0&rev=19
2024-08-12 14:28:38 +00:00
7e3aa348b5 Accepting request 1183457 from science:HPC
OBS-URL: https://build.opensuse.org/request/show/1183457
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/openmpi5?expand=0&rev=8
2024-06-27 14:02:42 +00:00
a11f52e623 - 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

OBS-URL: https://build.opensuse.org/package/show/science:HPC/openmpi5?expand=0&rev=17
2024-06-26 14:32:44 +00:00
10 changed files with 281 additions and 266 deletions

View File

@@ -0,0 +1,30 @@
commit fc4fb3a80615992277717e3e29ce585ebe1f2256
Author: Tomislav Janjusic <tomislavj@nvidia.com>
Date: Tue Feb 18 12:25:27 2025 -0600
Fix type mismatch error
Signed-off-by: Tomislav Janjusic <tomislavj@nvidia.com>
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,

View File

@@ -0,0 +1,28 @@
commit d9a5f9d9db092cc5b4d8fd563a834183b2e9b301
Author: Joseph Schuchart <joseph.schuchart@stonybrook.edu>
Date: Wed May 28 10:11:58 2025 -0400
Force alignment of opal_atomic_int128_t to be 16B
Some architectures will align 128bit integer on 8B but require 16B alignment
for 128bit CAS instructions and otherwise fall back to a lock-based
atomicity model. By forcing 16bit alignment we can ensure that the variables
are properly aligned and the fall-back is not triggered.
Thanks to Ulrich Weigand for the analysis and proposed fix in https://github.com/open-mpi/ompi/issues/10988#issuecomment-2913388506.
Signed-off-by: Joseph Schuchart <joseph.schuchart@stonybrook.edu>
diff --git opal/include/opal_stdatomic.h opal/include/opal_stdatomic.h
index 354375512088..f7dd8353d3b6 100644
--- opal/include/opal_stdatomic.h
+++ opal/include/opal_stdatomic.h
@@ -72,7 +72,7 @@ typedef _Atomic opal_int128_t opal_atomic_int128_t;
# else
-typedef volatile opal_int128_t opal_atomic_int128_t;
+typedef volatile opal_int128_t opal_atomic_int128_t __opal_attribute_aligned__(16);
# endif

View File

@@ -1,6 +1,4 @@
<multibuild>
<package>standard</package>
<package>testsuite</package>
<package>gnu-hpc</package>
<package>gnu-hpc-testsuite</package>
</multibuild>

View File

@@ -1,17 +0,0 @@
<services>
<service name="tar_scm" mode="disabled">
<param name="scm">git</param>
<param name="url">https://github.com/open-mpi/ompi.git</param>
<param name="package-meta">no</param>
<param name="exclude">.git</param>
<param name="filename">openmpi</param>
<param name="versionformat">@PARENT_TAG@.@TAG_OFFSET@.%h</param>
<param name="versionrewrite-pattern">v(.*)</param>
<param name="versionrewrite-replacement">\1</param>
<param name="revision">6db5e83b737a9b70c4e77a2bcf06ab641adffe2a</param>
</service>
<service name="recompress" mode="disabled">
<param name="file">openmpi*.tar</param>
<param name="compression">bz2</param>
</service>
</services>

View File

@@ -1,21 +0,0 @@
#
# 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

View File

@@ -0,0 +1,24 @@
commit 75b6dad5959ba75fcba8c64cc0a364d820e03ebc
Author: Nicolas Morey <nmorey@suse.com>
Date: Fri Dec 20 12:44:38 2024 +0100
mtl: ofi: fix missing definition of container_of
Signed-off-by: Nicolas Morey <nmorey@suse.com>
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)

View File

@@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:a7bbdbb669d686bd7f62402be52c611acdc402125112f20f6b537757e5edba1a
size 15677588

BIN
openmpi-5.0.7.tar.bz2 LFS Normal file

Binary file not shown.

View File

@@ -1,3 +1,144 @@
-------------------------------------------------------------------
Mon May 26 15:52:53 UTC 2025 - Nicolas Morey <nicolas.morey@suse.com>
- Fix bad git_ver appearing in VERSION
- Add Force-alignment-of-opal_atomic_int128_t-to-be-16B.patch to fix a 128b CAS issue on
s390x (bsc#1243680)
-------------------------------------------------------------------
Tue Apr 15 11:18:46 UTC 2025 - Nicolas Morey <nicolas.morey@suse.com>
- Remove bad dependency from openmpi5-testsuite to openmpi5-testsuite-libs
-------------------------------------------------------------------
Sat Mar 29 14:47:03 UTC 2025 - Nicolas Morey <nicolas.morey@suse.com>
- Remove support for gnu-hpc build flavours.
-------------------------------------------------------------------
Mon Mar 24 12:52:42 UTC 2025 - Nicolas Morey <nicolas.morey@suse.com>
- Disable gnu-hpc build flavours (bsc#1239982)
-------------------------------------------------------------------
Wed Feb 19 15:57:56 UTC 2025 - Nicolas Morey <nicolas.morey@suse.com>
- 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 <nicolas.morey@suse.com>
- 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 <nicolas.morey@suse.com>
- 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 <nicolas.morey@suse.com>
- 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 <nicolas.morey@suse.com>
- 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 <nicolas.morey@suse.com>

View File

@@ -1,7 +1,7 @@
#
# spec file
# spec file for package openmpi5
#
# Copyright (c) 2024 SUSE LLC
# Copyright (c) 2025 SUSE LLC
# Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana
# University Research and Technology
# Corporation. All rights reserved.
@@ -37,103 +37,58 @@
%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_2
%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"
%endif
# 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} && "%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
%if "%flavor" == "testsuite"
%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
%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
%define git_ver .0.6db5e83b737a
#############################################################################
#
# Preamble Section
#
#############################################################################
Name: %{package_name}%{?testsuite:-testsuite}
Version: 5.0.2
Name: openmpi5%{?testsuite:-testsuite}
Version: 5.0.7
Release: 0
Summary: An implementation of MPI/SHMEM (Version %{m_f_ver})
Summary: An implementation of MPI/SHMEM (Version 5)
License: BSD-3-Clause
Group: Development/Libraries/Parallel
URL: http://www.open-mpi.org/
Source0: openmpi-%{version}%{git_ver}.tar.bz2
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
Patch4: Force-alignment-of-opal_atomic_int128_t-to-be-16B.patch
Provides: mpi
BuildRoot: %{_tmppath}/%{name}-%{version}-build
# Exclude 32b archs
@@ -146,16 +101,13 @@ BuildRequires: hwloc-devel
BuildRequires: libevent-devel
BuildRequires: libfabric-devel
BuildRequires: libibumad-devel
BuildRequires: libibverbs-devel
BuildRequires: libtool
# net-tools is required to run hostname
BuildRequires: net-tools
BuildRequires: python3
BuildRequires: python3-Sphinx >= 4.2.0
BuildRequires: python3-recommonmark
%if 0%{?testsuite}
BuildArch: noarch
BuildRequires: %{package_name} = %{version}
BuildRequires: openmpi5 = %{version}
%endif
%if 0%{?with_ucx}
BuildRequires: libucm-devel
@@ -163,22 +115,14 @@ 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
Requires(preun): mpi-selector
%if !0%{?testsuite}
Requires: %{name}-libs = %{version}
%endif
%ifarch x86_64
@@ -188,7 +132,7 @@ BuildRequires: numactl
%endif
Requires: openmpi-runtime-config
Recommends: openmpi%{m_f_ver}-config
Recommends: %{name}-config
%if 0%{?default_openmpi}
Provides: openmpi = %{version}
%endif
@@ -196,26 +140,14 @@ Provides: openmpi = %{version}
# 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_prefix %{_libdir}/mpi/gcc/%{name}
%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_helpdir %{mpi_datadir}/%{name}
%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}
@@ -235,20 +167,19 @@ 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.
running Open MPI/OpenSHMEM version %{version} jobs.
%endif
%if 0%{!?testsuite:1}
%package %{!?with_hpc:libs}%{?with_hpc:-n lib%{name}}
%package libs
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}}
%description libs
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
@@ -260,22 +191,17 @@ 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}
This package provides the Open MPI/OpenSHMEM version %{version}
shared libraries.
%package devel
Summary: SDK for openMPI %{?with_hpc:HPC} version %{version}
Summary: SDK for openMPI version %{version}
Group: Development/Libraries/Parallel
Requires: libibumad-devel
Requires: libibverbs-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
@@ -291,11 +217,11 @@ 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
version %{version}, such as wrapper compilers and header files for
MPI/OpenSHMEM development.
%package docs
Summary: Documentation for Open MPI/SHMEM %{?with_hpc:HPC} version %{version}
Summary: Documentation for Open MPI/SHMEM version %{version}
Group: Documentation/Man
Requires: %{name} = %{version}
@@ -318,11 +244,11 @@ 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)
Provides: openmpi-macros-provider = %{version}
Conflicts: otherproviders(openmpi-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)
Conflicts: otherproviders(openmpi-hpc-macros-devel)
%if 0%{?default_openmpi}
Provides: openmpi-macros-devel = %{version}
@@ -333,7 +259,7 @@ 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}
Summary: Static libraries for openMPI version %{version}
Group: Development/Libraries/Parallel
Requires: %{name}-devel = %{version}
%if 0%{?default_openmpi}
@@ -351,9 +277,8 @@ 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}
%package config
Summary: Runtime configuration files for openMPI version %{version}
Group: Development/Libraries/Parallel
Provides: openmpi-runtime-config = %{version}
Conflicts: otherproviders(openmpi-runtime-config)
@@ -361,7 +286,7 @@ Conflicts: otherproviders(openmpi-runtime-config)
Provides: pmix-runtime-config = %{version}
Conflicts: otherproviders(pmix-runtime-config)
%description -n %{pname}%{m_f_ver}-config
%description 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
@@ -369,26 +294,13 @@ 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
@@ -396,16 +308,10 @@ This RPM contains the configuration files for OpenMPI runtime (Version 3).
#############################################################################
%prep
echo FLAVOR %{flavor}
%if %{with hpc}
echo with HPC
%endif
%if %{without hpc}
echo without HPC
%endif
%autosetup -p0 -n openmpi-%{version}%{git_ver}
%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}/' \
sed -i -e 's/^greek=.*$/greek=/' -e 's/^repo_rev=.*$/repo_rev=%{version}/' \
-e 's/^date=.*$/date="OpenMPI %{version} Distribution for SUSE"/' VERSION
#############################################################################
@@ -419,15 +325,14 @@ sed -i -e 's/^greek=.*$/greek=%{git_ver}/' -e 's/^repo_rev=.*$/repo_rev=%{versio
export USER=OBS
export HOSTNAME=OBS
# OBS sets SOURCE_DATE_EPOCH
%global _lto_cflags %{_lto_cflags} -ffat-lto-objects
%{?with_hpc:%hpc_debug}
# Remove .gitmodules so autogen.pl does not try to run git commands
find . -name .gitmodules -delete
# 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}
./autogen.pl --force --no-3rdparty libevent,hwloc
%if %{with hpc}
%{hpc_setup}
%{hpc_configure} \
%else
%{configure} \
--prefix="%{mpi_prefix}" \
--exec-prefix="%{mpi_prefix}" \
@@ -436,13 +341,12 @@ find . -name .gitmodules -delete
--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 \
--with-verbs \
--without-verbs \
--with-libfabric \
%if 0%{?with_ucx}
--with-ucx \
@@ -483,7 +387,6 @@ make check
#############################################################################
%install
%{?with_hpc:%{hpc_setup_compiler}}
make install DESTDIR="%buildroot"
# sanitize .la files
@@ -516,7 +419,6 @@ rm -f %{buildroot}%{mpi_libdir}/mpi_ext.mod
%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
@@ -553,56 +455,7 @@ cat <<EOF >%{buildroot}%{_rpmmacrodir}/macros.openmpi
%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 <<EOF > %{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
@@ -623,18 +476,10 @@ 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/news/news-v5.0.x.rst README.md
%doc docs/release-notes/changelog/v5.0.x.rst README.md
%license LICENSE
%dir %{mpi_prefix}
%dir %{mpi_bindir}
@@ -643,20 +488,15 @@ fi
%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
@@ -687,7 +527,7 @@ fi
%{mpi_datadir}/prte/amca-param-sets/example.conf
%{mpi_datadir}/prte/help-*.txt
%files %{!?with_hpc:libs}%{?with_hpc:-n lib%{name}}
%files libs
%defattr(-,root,root)
%dir %mpi_prefix/
%dir %mpi_libdir/
@@ -707,10 +547,8 @@ fi
%{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
@@ -743,11 +581,7 @@ fi
%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
@@ -758,15 +592,13 @@ fi
%{mpi_libdir}/openmpi/*.a
%endif
%if %{without hpc}
%files -n %{pname}%{m_f_ver}-config
%files 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