SHA256
1
0
forked from pool/openmpi4

12 Commits

Author SHA256 Message Date
a8132fd761 Accepting request 1269646 from science:HPC
OBS-URL: https://build.opensuse.org/request/show/1269646
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/openmpi4?expand=0&rev=21
2025-04-16 18:37:26 +00:00
9ae38cd85a - Remove bad dependency from openmpi4-testsuite to openmpi4-testsuite-libs
OBS-URL: https://build.opensuse.org/package/show/science:HPC/openmpi4?expand=0&rev=50
2025-04-15 14:19:04 +00:00
ccc6316f59 Accepting request 1265559 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/1265559
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/openmpi4?expand=0&rev=20
2025-04-03 14:45:51 +00:00
0dd0c24f3c Remove obsolete hpc macro file
OBS-URL: https://build.opensuse.org/package/show/science:HPC/openmpi4?expand=0&rev=48
2025-03-30 15:40:10 +00:00
7d29ea3cb0 - Remove support for gnu-hpc build flavours.
OBS-URL: https://build.opensuse.org/package/show/science:HPC/openmpi4?expand=0&rev=47
2025-03-30 15:32:22 +00:00
8a11d769e7 - Disable gnu-hpc build flavours (bsc#1239982)
OBS-URL: https://build.opensuse.org/package/show/science:HPC/openmpi4?expand=0&rev=46
2025-03-24 16:00:58 +00:00
2d029ddc5b Accepting request 1247231 from science:HPC
OBS-URL: https://build.opensuse.org/request/show/1247231
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/openmpi4?expand=0&rev=19
2025-02-26 16:13:49 +00:00
59b72343ea - Update to 4.1.8 (jsc#PED-11356):
- Allocate and exchange OpenSHMEM base segment addresses earlier in
    startup.
  - Fixed file_seek calculation when using SEEK_END and io/ompio.
  - Protect against using CUDA without VMM support.
  - Change several variables in coll/adapt, coll/basic, coll/han,
    coll/hcoll, and coll/ucc from READONLY to ALL scope so that they can
    be set via the MPI_T interface.
  - Add version identifier to rules file in coll/tuned and extend the
    dynamic rules file to support the alltoall_algorithm_max_requests
    tuning parameter.
- Change default openmpi to openmpi5 for suse_version >= 1600
- Add Fix-type-mismatch-error.patch to fix a compilation error

OBS-URL: https://build.opensuse.org/package/show/science:HPC/openmpi4?expand=0&rev=44
2025-02-19 20:06:05 +00:00
e1b7bc7a4b Accepting request 1232847 from science:HPC
OBS-URL: https://build.opensuse.org/request/show/1232847
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/openmpi4?expand=0&rev=18
2024-12-22 16:58:58 +00:00
7d01296288 - Add mtl-ofi-fix-missing-definition-of-container_of.patch to fix
compilation with libfabric >= 2.0 (jsc#PED-9661, jsc#PED-10668)

OBS-URL: https://build.opensuse.org/package/show/science:HPC/openmpi4?expand=0&rev=42
2024-12-20 14:00:37 +00:00
21d30e766e Accepting request 1227160 from science:HPC
- Update to 4.1.7 (jsc#PED-11355):
  - Fix int overflow bug in UCC collectives routine, which would impact
    large message collectives.
  - Fix SHMEM bounds checking warnings
  - Fix memory leak in the fcoll/vulcan component
  - Fix memory leak when using non-contiguious datatyles with pml/cm
    (used when using Libfabric or Portals transports)
  - Change default locking protocol for ufs IO component to fix data
    sieving use case.
  - Fix bug in Fortran / C interface array calculation.
  - Fix potential initialization in UCX OpenSHMEM support
  - Add OpenSHMEM support for symmetric remote key handling to improve
    scalability of OpenSHMEM interface.
  - Add MCS Locks as default implementation for OpenSHMEM locks.
  - Fix bug to properly handle ORTE Prefix of "/".
  - Fix bug in I/O interface handling of soft links on Lustre
    filesystems.
  - Fix memory leak in UCX one-sided implementation.
  - Fix bug in rcache components that could lead to assert on macOS
    systems.
  - Fix mishandling of a NULL completion context in the OFI transport.
  - Tarballs are now built with the tar-pax format.
  - Set MPI_THREAD_SERIALIZED instead of MPI_THREAD_SINGLE as supported
    threading model when using UCX that supports
    UCS_THREAD_MODE_SERIALIZED.
  - Fix issue that would prevent using Libfabric 2.x releases.

OBS-URL: https://build.opensuse.org/request/show/1227160
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/openmpi4?expand=0&rev=17
2024-11-30 12:27:14 +00:00
20ec2e725e Accepting request 1227140 from home:NMorey:branches:science:HPC
- Update to 4.1.7 (jsc#PED-11355):
  - Fix int overflow bug in UCC collectives routine, which would impact
    large message collectives.
  - Fix SHMEM bounds checking warnings
  - Fix memory leak in the fcoll/vulcan component
  - Fix memory leak when using non-contiguious datatyles with pml/cm
    (used when using Libfabric or Portals transports)
  - Change default locking protocol for ufs IO component to fix data
    sieving use case.
  - Fix bug in Fortran / C interface array calculation.
  - Fix potential initialization in UCX OpenSHMEM support
  - Add OpenSHMEM support for symmetric remote key handling to improve
    scalability of OpenSHMEM interface.
  - Add MCS Locks as default implementation for OpenSHMEM locks.
  - Fix bug to properly handle ORTE Prefix of "/".
  - Fix bug in I/O interface handling of soft links on Lustre
    filesystems.
  - Fix memory leak in UCX one-sided implementation.
  - Fix bug in rcache components that could lead to assert on macOS
    systems.
  - Fix mishandling of a NULL completion context in the OFI transport.
  - Tarballs are now built with the tar-pax format.
  - Set MPI_THREAD_SERIALIZED instead of MPI_THREAD_SINGLE as supported
    threading model when using UCX that supports
    UCS_THREAD_MODE_SERIALIZED.
  - Fix issue that would prevent using Libfabric 2.x releases.

OBS-URL: https://build.opensuse.org/request/show/1227140
OBS-URL: https://build.opensuse.org/package/show/science:HPC/openmpi4?expand=0&rev=40
2024-11-28 14:43:59 +00:00
9 changed files with 168 additions and 251 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

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

View File

@@ -1,5 +1,5 @@
<services> <services>
<service name="tar_scm" mode="disabled"> <service name="tar_scm" mode="manual">
<param name="scm">git</param> <param name="scm">git</param>
<param name="url">https://github.com/open-mpi/ompi.git</param> <param name="url">https://github.com/open-mpi/ompi.git</param>
<param name="package-meta">no</param> <param name="package-meta">no</param>
@@ -8,9 +8,9 @@
<param name="versionformat">@PARENT_TAG@.@TAG_OFFSET@.%h</param> <param name="versionformat">@PARENT_TAG@.@TAG_OFFSET@.%h</param>
<param name="versionrewrite-pattern">v(.*)</param> <param name="versionrewrite-pattern">v(.*)</param>
<param name="versionrewrite-replacement">\1</param> <param name="versionrewrite-replacement">\1</param>
<param name="revision">439b23db6288f0370f6fcc80c8c0a06ad86d6873</param> <param name="revision">ea8f4d03089018f08451f42f2cfa2467570f395e</param>
</service> </service>
<service name="recompress" mode="disabled"> <service name="recompress" mode="manual">
<param name="file">openmpi*.tar</param> <param name="file">openmpi*.tar</param>
<param name="compression">bz2</param> <param name="compression">bz2</param>
</service> </service>

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)

BIN
openmpi-4.1.6.0.439b23db6288.tar.bz2 (Stored with Git LFS)

Binary file not shown.

BIN
openmpi-4.1.8.0.ea8f4d030890.tar.bz2 (Stored with Git LFS) Normal file

Binary file not shown.

View File

@@ -1,3 +1,71 @@
-------------------------------------------------------------------
Tue Apr 15 11:17:13 UTC 2025 - Nicolas Morey <nicolas.morey@suse.com>
- Remove bad dependency from openmpi4-testsuite to openmpi4-testsuite-libs
-------------------------------------------------------------------
Sat Mar 29 14:42:02 UTC 2025 - Nicolas Morey <nicolas.morey@suse.com>
- Remove support for gnu-hpc build flavours.
-------------------------------------------------------------------
Mon Mar 24 12:52:28 UTC 2025 - Nicolas Morey <nicolas.morey@suse.com>
- Disable gnu-hpc build flavours (bsc#1239982)
-------------------------------------------------------------------
Wed Feb 19 16:04:48 UTC 2025 - Nicolas Morey <nicolas.morey@suse.com>
- Update to 4.1.8 (jsc#PED-11356):
- Allocate and exchange OpenSHMEM base segment addresses earlier in
startup.
- Fixed file_seek calculation when using SEEK_END and io/ompio.
- Protect against using CUDA without VMM support.
- Change several variables in coll/adapt, coll/basic, coll/han,
coll/hcoll, and coll/ucc from READONLY to ALL scope so that they can
be set via the MPI_T interface.
- Add version identifier to rules file in coll/tuned and extend the
dynamic rules file to support the alltoall_algorithm_max_requests
tuning parameter.
- Change default openmpi to openmpi5 for suse_version >= 1600
- Add Fix-type-mismatch-error.patch to fix a compilation error
-------------------------------------------------------------------
Fri Dec 20 11:46:32 UTC 2024 - Nicolas Morey <nicolas.morey@suse.com>
- Add mtl-ofi-fix-missing-definition-of-container_of.patch to fix
compilation with libfabric >= 2.0 (jsc#PED-9661, jsc#PED-10668)
-------------------------------------------------------------------
Tue Nov 26 07:12:00 UTC 2024 - Nicolas Morey <nicolas.morey@suse.com>
- Update to 4.1.7 (jsc#PED-11355):
- Fix int overflow bug in UCC collectives routine, which would impact
large message collectives.
- Fix SHMEM bounds checking warnings
- Fix memory leak in the fcoll/vulcan component
- Fix memory leak when using non-contiguious datatyles with pml/cm
(used when using Libfabric or Portals transports)
- Change default locking protocol for ufs IO component to fix data
sieving use case.
- Fix bug in Fortran / C interface array calculation.
- Fix potential initialization in UCX OpenSHMEM support
- Add OpenSHMEM support for symmetric remote key handling to improve
scalability of OpenSHMEM interface.
- Add MCS Locks as default implementation for OpenSHMEM locks.
- Fix bug to properly handle ORTE Prefix of "/".
- Fix bug in I/O interface handling of soft links on Lustre
filesystems.
- Fix memory leak in UCX one-sided implementation.
- Fix bug in rcache components that could lead to assert on macOS
systems.
- Fix mishandling of a NULL completion context in the OFI transport.
- Tarballs are now built with the tar-pax format.
- Set MPI_THREAD_SERIALIZED instead of MPI_THREAD_SINGLE as supported
threading model when using UCX that supports
UCS_THREAD_MODE_SERIALIZED.
- Fix issue that would prevent using Libfabric 2.x releases.
------------------------------------------------------------------- -------------------------------------------------------------------
Thu Sep 5 06:58:41 UTC 2024 - Nicolas Morey <nicolas.morey@suse.com> Thu Sep 5 06:58:41 UTC 2024 - Nicolas Morey <nicolas.morey@suse.com>

View File

@@ -1,7 +1,7 @@
# #
# spec file # spec file for package openmpi4
# #
# Copyright (c) 2024 SUSE LLC # Copyright (c) 2025 SUSE LLC
# Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana # Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana
# University Research and Technology # University Research and Technology
# Corporation. All rights reserved. # Corporation. All rights reserved.
@@ -37,94 +37,41 @@
%global flavor @BUILD_FLAVOR@%{nil} %global flavor @BUILD_FLAVOR@%{nil}
# Static libraries are disabled by default # Static libraries are disabled by default
# for non HPC builds
# To enable them, simply uncomment: # To enable them, simply uncomment:
# % define build_static_devel 1 # % define build_static_devel 1
%global pname openmpi
%define _vers 4_1_6
%define m_f_ver 4
%bcond_with ringdisabled %bcond_with ringdisabled
%if "%flavor" == "" %if "%flavor" == ""
ExclusiveArch: do_not_build ExclusiveArch: do_not_build
%{bcond_with hpc} %endif
%define package_name %pname%{m_f_ver}
%else # Trickery for OBS Staging. If _with_ringdisabled is set
# Trickery for OBS Staging. If _with_ringdisabled is set # we only want to build the flavors required by other rings packages.
# we only want to build the flavors required by other rings packages. # Do not build any other ones
# Do not build any other ones %if %{with ringdisabled} && "%flavor" != "standard"
%if %{with ringdisabled}
%if "%flavor" != "standard"
ExclusiveArch: do_not_build 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 %endif
%if "%flavor" == "gnu-hpc" %if "%flavor" == "testsuite"
%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 %define testsuite 1
%endif %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 %ifarch aarch64 %power64 x86_64 s390x
%define with_ucx 1 %define with_ucx 1
%endif %endif
%endif
# Detect whether we are the default openMPI implemantation or not # Detect whether we are the default openMPI implemantation or not
%if "%{flavor}" == "standard" && (%{suse_version} > 1500 || 0%{?sle_version} > 150300) %if "%{flavor}" == "standard" && (%{suse_version} > 1500 || 0%{?sle_version} > 150300) && (%{suse_version} < 1600)
%define default_openmpi 1 %define default_openmpi 1
%else %else
%define default_openmpi 0 %define default_openmpi 0
%endif %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}
%{bcond_without pmix}
%{bcond_without hwloc}
ExcludeArch: i586 %arm s390
%else
%{bcond_with pmix} %{bcond_with pmix}
%{bcond_with hwloc} %{bcond_with hwloc}
%endif
%define git_ver .0.439b23db6288 %define git_ver .0.ea8f4d030890
############################################################################# #############################################################################
# #
@@ -132,22 +79,23 @@ ExcludeArch: i586 %arm s390
# #
############################################################################# #############################################################################
Name: %{package_name}%{?testsuite:-testsuite} Name: openmpi4%{?testsuite:-testsuite}
Version: 4.1.6 Version: 4.1.8
Release: 0 Release: 0
Summary: An implementation of MPI/SHMEM (Version %{m_f_ver}) Summary: An implementation of MPI/SHMEM (Version 4)
License: BSD-3-Clause License: BSD-3-Clause
Group: Development/Libraries/Parallel Group: Development/Libraries/Parallel
URL: https://www.open-mpi.org/ URL: https://www.open-mpi.org/
Source0: openmpi-%{version}%{git_ver}.tar.bz2 Source0: openmpi-%{version}%{git_ver}.tar.bz2
Source2: openmpi4-rpmlintrc Source2: openmpi4-rpmlintrc
Source3: macros.hpc-openmpi
Source4: mpivars.sh Source4: mpivars.sh
Source5: mpivars.csh Source5: mpivars.csh
Patch1: orted-mpir-add-version-to-shared-library.patch Patch1: orted-mpir-add-version-to-shared-library.patch
Patch2: btl-openib-Add-VF-support-for-ConnectX-4-5-and-6.patch Patch2: btl-openib-Add-VF-support-for-ConnectX-4-5-and-6.patch
Patch3: openmpi4-C99.diff Patch3: openmpi4-C99.diff
Patch4: test-datatype-partial.c-fix-compiler-warnings.patch Patch4: test-datatype-partial.c-fix-compiler-warnings.patch
Patch5: mtl-ofi-fix-missing-definition-of-container_of.patch
Patch6: Fix-type-mismatch-error.patch
Provides: mpi Provides: mpi
BuildRoot: %{_tmppath}/%{name}-%{version}-build BuildRoot: %{_tmppath}/%{name}-%{version}-build
BuildRequires: autoconf BuildRequires: autoconf
@@ -164,7 +112,7 @@ BuildRequires: libtool
BuildRequires: net-tools BuildRequires: net-tools
%if 0%{?testsuite} %if 0%{?testsuite}
BuildArch: noarch BuildArch: noarch
BuildRequires: %{package_name} = %{version} BuildRequires: openmpi4 = %{version}
%endif %endif
%if 0%{?with_ucx} %if 0%{?with_ucx}
BuildRequires: libucm-devel BuildRequires: libucm-devel
@@ -178,22 +126,14 @@ BuildRequires: hwloc-devel
%if %{with pmix} %if %{with pmix}
BuildRequires: pmix-devel BuildRequires: pmix-devel
%endif %endif
%if %{without hpc}
BuildRequires: Modules BuildRequires: Modules
BuildRequires: gcc-c++ BuildRequires: gcc-c++
BuildRequires: gcc-fortran BuildRequires: gcc-fortran
BuildRequires: mpi-selector BuildRequires: mpi-selector
Requires: mpi-selector Requires: mpi-selector
Requires(preun):mpi-selector Requires(preun): mpi-selector
Requires: %{package_name}-libs = %{version} %if !0%{?testsuite}
%else Requires: %{name}-libs = %{version}
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 %endif
%ifarch x86_64 %ifarch x86_64
@@ -203,7 +143,7 @@ BuildRequires: numactl
%endif %endif
Requires: openmpi-runtime-config Requires: openmpi-runtime-config
Recommends: openmpi%{m_f_ver}-config Recommends: %{name}-config
%if 0%{?default_openmpi} %if 0%{?default_openmpi}
Provides: openmpi = %{version} Provides: openmpi = %{version}
%endif %endif
@@ -211,26 +151,14 @@ Provides: openmpi = %{version}
# Force ssh to make sure the install works out of the box # Force ssh to make sure the install works out of the box
Requires: openssh Requires: openssh
%if %{without hpc} %define mpi_prefix %{_libdir}/mpi/gcc/%{name}
%define mpi_prefix %{_libdir}/mpi/gcc/openmpi%{m_f_ver}
%define mpi_bindir %{mpi_prefix}/bin %define mpi_bindir %{mpi_prefix}/bin
%define mpi_libdir %{mpi_prefix}/%{_lib} %define mpi_libdir %{mpi_prefix}/%{_lib}
%define mpi_datadir %{mpi_prefix}/share %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_includedir %{mpi_prefix}/include
%define mpi_mandir %{mpi_prefix}/share/man %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 %description
%if 0%{?testsuite} %if 0%{?testsuite}
@@ -250,20 +178,19 @@ one-sided communication techniques.
This package provides general tools (mpirun, mpiexec, etc.) and the This package provides general tools (mpirun, mpiexec, etc.) and the
Module Component Architecture (MCA) base and plugins necessary for 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 %endif
%if 0%{!?testsuite:1} %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} Summary: OpenMPI runtime libraries for OpenMPI version %{version}
Group: System/Libraries Group: System/Libraries
Requires: %{name} = %{version} Requires: %{name} = %{version}
%if 0%{?default_openmpi} %if 0%{?default_openmpi}
Provides: openmpi-libs = %{version} Provides: openmpi-libs = %{version}
%endif %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 OpenMPI is an implementation of the Message Passing Interface, a
standardized API typically used for parallel and/or distributed standardized API typically used for parallel and/or distributed
computing. OpenMPI is the merged result of four prior implementations computing. OpenMPI is the merged result of four prior implementations
@@ -275,22 +202,18 @@ programming API, which is a Partitioned Global Address Space (PGAS)
abstraction layer providing inter-process communication using abstraction layer providing inter-process communication using
one-sided communication techniques. 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. shared libraries.
%package devel %package devel
Summary: SDK for openMPI %{?with_hpc:HPC} version %{version} Summary: SDK for openMPI version %{version}
Group: Development/Libraries/Parallel Group: Development/Libraries/Parallel
Requires: libibumad-devel Requires: libibumad-devel
Requires: libibverbs-devel Requires: libibverbs-devel
%if %{without hpc}
Requires: libstdc++-devel Requires: libstdc++-devel
%if 0%{?default_openmpi} %if 0%{?default_openmpi}
Provides: openmpi-devel = %{version} Provides: openmpi-devel = %{version}
%endif %endif
%else
%hpc_requires_devel
%endif
Requires: %{name} = %{version} Requires: %{name} = %{version}
%description devel %description devel
@@ -306,11 +229,11 @@ abstraction layer providing inter-process communication using
one-sided communication techniques. one-sided communication techniques.
This package provides the development files for Open MPI/OpenSHMEM 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. MPI/OpenSHMEM development.
%package docs %package docs
Summary: Documentation for Open MPI/SHMEM %{?with_hpc:HPC} version %{version} Summary: Documentation for Open MPI/SHMEM version %{version}
Group: Documentation/Man Group: Documentation/Man
Requires: %{name} = %{version} Requires: %{name} = %{version}
@@ -333,11 +256,11 @@ Summary: Macros for openMPI version %{version}
Group: Development/Libraries/Parallel Group: Development/Libraries/Parallel
Requires: %{name}-devel = %{version} Requires: %{name}-devel = %{version}
# Make sure no two openmpi macro file can be installed at once # Make sure no two openmpi macro file can be installed at once
Provides: %{pname}-macros-provider = %{version} Provides: openmpi-macros-provider = %{version}
Conflicts: otherproviders(%{pname}-macros-provider) Conflicts: otherproviders(openmpi-macros-provider)
# Conflict (without providing) with the older openmpi-hpc-macros-devel flag # Conflict (without providing) with the older openmpi-hpc-macros-devel flag
# to avoid issue with older packages # to avoid issue with older packages
Conflicts: otherproviders(%{pname}-hpc-macros-devel) Conflicts: otherproviders(openmpi-hpc-macros-devel)
%if 0%{?default_openmpi} %if 0%{?default_openmpi}
Provides: openmpi-macros-devel = %{version} Provides: openmpi-macros-devel = %{version}
@@ -348,7 +271,7 @@ Macros for building RPM packages for OpenMPI version %{version}.
%if 0%{?build_static_devel} %if 0%{?build_static_devel}
%package devel-static %package devel-static
Summary: Static libraries for openMPI %{?with_hpc:HPC} version %{version} Summary: Static libraries for openMPI version %{version}
Group: Development/Libraries/Parallel Group: Development/Libraries/Parallel
Requires: %{name}-devel = %{version} Requires: %{name}-devel = %{version}
%if 0%{?default_openmpi} %if 0%{?default_openmpi}
@@ -366,9 +289,8 @@ This RPM contains the static library files, which are packaged separately from
the dynamic library and headers. the dynamic library and headers.
%endif %endif
%if %{without hpc} %package config
%package -n %{pname}%{m_f_ver}-config Summary: Runtime configuration files for openMPI version %{version}
Summary: Runtime configuration files for openMPI %{?with_hpc:HPC} version %{version}
Group: Development/Libraries/Parallel Group: Development/Libraries/Parallel
Provides: openmpi-runtime-config = %{version} Provides: openmpi-runtime-config = %{version}
Conflicts: otherproviders(openmpi-runtime-config) Conflicts: otherproviders(openmpi-runtime-config)
@@ -378,7 +300,7 @@ Provides: pmix-runtime-config = %{version}
Conflicts: otherproviders(pmix-runtime-config) Conflicts: otherproviders(pmix-runtime-config)
%endif %endif
%description -n %{pname}%{m_f_ver}-config %description config
OpenMPI is an implementation of the Message Passing Interface, a OpenMPI is an implementation of the Message Passing Interface, a
standardized API typically used for parallel and/or distributed standardized API typically used for parallel and/or distributed
computing. OpenMPI is the merged result of four prior implementations computing. OpenMPI is the merged result of four prior implementations
@@ -386,22 +308,9 @@ where the team found for them to excel in one or more areas,
such as latency or throughput. such as latency or throughput.
This RPM contains the configuration files for OpenMPI runtime (Version 3). 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 %endif # !testsuite
%if "%(echo %version | tr '.' '_')" != "%_vers"
%{error: Fix _vers variable to match package version!}
%endif
############################################################################# #############################################################################
# #
# Prepatory Section # Prepatory Section
@@ -409,19 +318,11 @@ This RPM contains the configuration files for OpenMPI runtime (Version 3).
############################################################################# #############################################################################
%prep %prep
echo FLAVOR %{flavor} 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}%{git_ver}
%if %{without hpc}
cat > %{_sourcedir}/baselibs.conf <<EOF cat > %{_sourcedir}/baselibs.conf <<EOF
openmpi%{m_f_ver}-libs openmpi%{m_f_ver}-libs
EOF EOF
%endif
# Live patch the VERSION file # 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=%{git_ver}/' -e 's/^repo_rev=.*$/repo_rev=%{version}%{git_ver}/' \
@@ -439,12 +340,7 @@ export USER=OBS
export HOSTNAME=OBS export HOSTNAME=OBS
# OBS sets SOURCE_DATE_EPOCH # OBS sets SOURCE_DATE_EPOCH
%global _lto_cflags %{_lto_cflags} -ffat-lto-objects %global _lto_cflags %{_lto_cflags} -ffat-lto-objects
%{?with_hpc:%hpc_debug}
./autogen.pl --force ./autogen.pl --force
%if %{with hpc}
%{hpc_setup}
%{hpc_configure} \
%else
%{configure} \ %{configure} \
--prefix="%{mpi_prefix}" \ --prefix="%{mpi_prefix}" \
--exec-prefix="%{mpi_prefix}" \ --exec-prefix="%{mpi_prefix}" \
@@ -453,7 +349,6 @@ export HOSTNAME=OBS
--includedir="%{mpi_includedir}" \ --includedir="%{mpi_includedir}" \
--libdir="%{mpi_libdir}" \ --libdir="%{mpi_libdir}" \
--mandir="%{mpi_mandir}" \ --mandir="%{mpi_mandir}" \
%endif
%{?build_static_devel:--enable-static} \ %{?build_static_devel:--enable-static} \
%{!?build_static_devel:--disable-static} \ %{!?build_static_devel:--disable-static} \
--enable-builtin-atomics \ --enable-builtin-atomics \
@@ -503,7 +398,6 @@ make check
############################################################################# #############################################################################
%install %install
%{?with_hpc:%{hpc_setup_compiler}}
make install DESTDIR="%buildroot" make install DESTDIR="%buildroot"
# sanitize .la files # sanitize .la files
@@ -536,7 +430,6 @@ rm -f %{buildroot}%{mpi_libdir}/mpi_ext.mod
%fdupes %{buildroot}%{mpi_datadir} %fdupes %{buildroot}%{mpi_datadir}
%fdupes %{buildroot}%{mpi_libdir}/pkgconfig %fdupes %{buildroot}%{mpi_libdir}/pkgconfig
%if %{without hpc}
# make and install mpivars files # make and install mpivars files
sed -e 's,prefix,%{mpi_prefix},g' -e 's,libdir,%{mpi_libdir},g' %{SOURCE4} \ sed -e 's,prefix,%{mpi_prefix},g' -e 's,libdir,%{mpi_libdir},g' %{SOURCE4} \
> %{buildroot}%{mpi_bindir}/mpivars.sh > %{buildroot}%{mpi_bindir}/mpivars.sh
@@ -573,56 +466,7 @@ cat <<EOF >%{buildroot}%{_rpmmacrodir}/macros.openmpi
%openmpi_devel_requires Requires: %{name}-devel %openmpi_devel_requires Requires: %{name}-devel
EOF 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}/openmpi-default-hostfile
rm -f %{buildroot}%{_sysconfdir}/openmpi-mca-params.conf
rm -f %{buildroot}%{_sysconfdir}/openmpi-totalview.tcl
%if %{without pmix}
rm -f %{buildroot}%{_sysconfdir}/pmix-mca-params.conf
%endif
%endif
%if %{without hpc}
%post %post
# Always register. We might be already registered in the case of an udate # Always register. We might be already registered in the case of an udate
# but mpi-selector handles it fine # but mpi-selector handles it fine
@@ -643,14 +487,6 @@ fi
%post libs -p /sbin/ldconfig %post libs -p /sbin/ldconfig
%postun 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 %files
%defattr(-, root, root) %defattr(-, root, root)
@@ -663,17 +499,10 @@ fi
%dir %{mpi_mandir} %dir %{mpi_mandir}
%{mpi_bindir}/mpivars.csh %{mpi_bindir}/mpivars.csh
%{mpi_bindir}/mpivars.sh %{mpi_bindir}/mpivars.sh
%if %{without hpc}
%dir %{_libdir}/mpi %dir %{_libdir}/mpi
%dir %{_libdir}/mpi/gcc %dir %{_libdir}/mpi/gcc
%dir %{_datadir}/modules/gnu-openmpi %dir %{_datadir}/modules/gnu-openmpi
%{_datadir}/modules/gnu-openmpi/%{version} %{_datadir}/modules/gnu-openmpi/%{version}
%else # with hpc
%hpc_mpi_dirs
%hpc_modules_files
%endif # with hpc
#
%{mpi_bindir}/mpirun %{mpi_bindir}/mpirun
%{mpi_bindir}/ompi-clean %{mpi_bindir}/ompi-clean
%{mpi_bindir}/ompi-server %{mpi_bindir}/ompi-server
@@ -689,11 +518,8 @@ fi
%{mpi_bindir}/oshrun %{mpi_bindir}/oshrun
%{mpi_bindir}/shmemrun %{mpi_bindir}/shmemrun
%endif %endif
%if %{without hpc}
%{mpi_bindir}/aggregate_profile.pl %{mpi_bindir}/aggregate_profile.pl
%{mpi_bindir}/profile2mat.pl %{mpi_bindir}/profile2mat.pl
%endif
%dir %{mpi_datadir}/openmpi %dir %{mpi_datadir}/openmpi
%dir %{mpi_datadir}/openmpi/amca-param-sets %dir %{mpi_datadir}/openmpi/amca-param-sets
@@ -707,7 +533,7 @@ fi
%{mpi_datadir}/pmix/help-*.txt %{mpi_datadir}/pmix/help-*.txt
%endif %endif
%files %{!?with_hpc:libs}%{?with_hpc:-n lib%{name}} %files libs
%defattr(-,root,root) %defattr(-,root,root)
%dir %mpi_prefix/ %dir %mpi_prefix/
%dir %mpi_libdir/ %dir %mpi_libdir/
@@ -726,10 +552,8 @@ fi
%{mpi_libdir}/*.so %{mpi_libdir}/*.so
%{mpi_libdir}/pkgconfig/*.pc %{mpi_libdir}/pkgconfig/*.pc
%{mpi_libdir}/mpi.mod %{mpi_libdir}/mpi.mod
%if 0%{?suse_version} >= 1320
%{mpi_libdir}/mpi_f08*.mod %{mpi_libdir}/mpi_f08*.mod
%{mpi_libdir}/pmpi_f08*.mod %{mpi_libdir}/pmpi_f08*.mod
%endif
%{mpi_bindir}/mpiCC %{mpi_bindir}/mpiCC
%{mpi_bindir}/mpic++ %{mpi_bindir}/mpic++
%{mpi_bindir}/mpicc %{mpi_bindir}/mpicc
@@ -763,11 +587,7 @@ fi
%files macros-devel %files macros-devel
%defattr(-,root,root,-) %defattr(-,root,root,-)
%if %{with hpc}
%{_rpmmacrodir}/macros.hpc-openmpi
%else
%{_rpmmacrodir}/macros.openmpi %{_rpmmacrodir}/macros.openmpi
%endif
%if 0%{?build_static_devel} %if 0%{?build_static_devel}
%files devel-static %files devel-static
@@ -778,15 +598,13 @@ fi
%{mpi_libdir}/openmpi/*.a %{mpi_libdir}/openmpi/*.a
%endif %endif
%if %{without hpc} %files config
%files -n %{pname}%{m_f_ver}-config
%config %{_sysconfdir}/openmpi-default-hostfile %config %{_sysconfdir}/openmpi-default-hostfile
%config %{_sysconfdir}/openmpi-mca-params.conf %config %{_sysconfdir}/openmpi-mca-params.conf
%if %{without pmix} %if %{without pmix}
%config %{_sysconfdir}/pmix-mca-params.conf %config %{_sysconfdir}/pmix-mca-params.conf
%endif %endif
%{_sysconfdir}/openmpi-totalview.tcl %{_sysconfdir}/openmpi-totalview.tcl
%endif
%endif # !?testsuite %endif # !?testsuite