forked from pool/openmpi5
Compare commits
16 Commits
| Author | SHA256 | Date | |
|---|---|---|---|
| 12a507c89c | |||
| d04b31aa79 | |||
| 37d6d57053 | |||
| e51cb2869a | |||
| b1932953e9 | |||
| f550f1b14e | |||
| 4b721835c8 | |||
| 14624407bb | |||
| de86ef7514 | |||
| f4036ffc00 | |||
| 212336f1a4 | |||
| cd3c5d2687 | |||
| 53b38a0f27 | |||
| 9292b0d9c0 | |||
| 7e3aa348b5 | |||
| a11f52e623 |
30
Fix-type-mismatch-error.patch
Normal file
30
Fix-type-mismatch-error.patch
Normal 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,
|
||||
28
Force-alignment-of-opal_atomic_int128_t-to-be-16B.patch
Normal file
28
Force-alignment-of-opal_atomic_int128_t-to-be-16B.patch
Normal 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
|
||||
|
||||
@@ -1,6 +1,4 @@
|
||||
<multibuild>
|
||||
<package>standard</package>
|
||||
<package>testsuite</package>
|
||||
<package>gnu-hpc</package>
|
||||
<package>gnu-hpc-testsuite</package>
|
||||
</multibuild>
|
||||
|
||||
17
_service
17
_service
@@ -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>
|
||||
@@ -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
|
||||
|
||||
24
mtl-ofi-fix-missing-definition-of-container_of.patch
Normal file
24
mtl-ofi-fix-missing-definition-of-container_of.patch
Normal 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)
|
||||
|
||||
@@ -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
BIN
openmpi-5.0.7.tar.bz2
LFS
Normal file
Binary file not shown.
141
openmpi5.changes
141
openmpi5.changes
@@ -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>
|
||||
|
||||
|
||||
278
openmpi5.spec
278
openmpi5.spec
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user