forked from pool/openmpi4
- Add test-datatype-partial.c-fix-compiler-warnings.patch to fix
testuite compilation with GCC >= 14 OBS-URL: https://build.opensuse.org/package/show/science:HPC/openmpi4?expand=0&rev=38
This commit is contained in:
commit
31165b13c7
23
.gitattributes
vendored
Normal file
23
.gitattributes
vendored
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
## Default LFS
|
||||||
|
*.7z filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.bsp filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.bz2 filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.gem filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.gz filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.jar filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.lz filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.lzma filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.obscpio filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.oxt filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.pdf filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.png filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.rpm filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.tbz filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.tbz2 filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.tgz filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.ttf filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.txz filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.whl filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.xz filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.zip filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.zst filter=lfs diff=lfs merge=lfs -text
|
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
.osc
|
6
_multibuild
Normal file
6
_multibuild
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
<multibuild>
|
||||||
|
<package>standard</package>
|
||||||
|
<package>testsuite</package>
|
||||||
|
<package>gnu-hpc</package>
|
||||||
|
<package>gnu-hpc-testsuite</package>
|
||||||
|
</multibuild>
|
17
_service
Normal file
17
_service
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
<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">439b23db6288f0370f6fcc80c8c0a06ad86d6873</param>
|
||||||
|
</service>
|
||||||
|
<service name="recompress" mode="disabled">
|
||||||
|
<param name="file">openmpi*.tar</param>
|
||||||
|
<param name="compression">bz2</param>
|
||||||
|
</service>
|
||||||
|
</services>
|
39
btl-openib-Add-VF-support-for-ConnectX-4-5-and-6.patch
Normal file
39
btl-openib-Add-VF-support-for-ConnectX-4-5-and-6.patch
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
commit 034e90d7efb94011d7018266586588801c3afdbc
|
||||||
|
Author: Nicolas Morey-Chaisemartin <nmoreychaisemartin@suse.com>
|
||||||
|
Date: Tue Sep 13 15:48:03 2022 +0200
|
||||||
|
|
||||||
|
btl: openib: Add VF support for ConnectX 4, 5 and 6
|
||||||
|
|
||||||
|
Signed-off-by: Nicolas Morey-Chaisemartin <nmoreychaisemartin@suse.com>
|
||||||
|
|
||||||
|
diff --git opal/mca/btl/openib/mca-btl-openib-device-params.ini opal/mca/btl/openib/mca-btl-openib-device-params.ini
|
||||||
|
index c46c303a35d5..b9949de235b8 100644
|
||||||
|
--- opal/mca/btl/openib/mca-btl-openib-device-params.ini
|
||||||
|
+++ opal/mca/btl/openib/mca-btl-openib-device-params.ini
|
||||||
|
@@ -174,7 +174,7 @@ max_inline_data = 256
|
||||||
|
|
||||||
|
[Mellanox ConnectX4]
|
||||||
|
vendor_id = 0x2c9,0x5ad,0x66a,0x8f1,0x1708,0x03ba,0x15b3,0x119f
|
||||||
|
-vendor_part_id = 4115,4117
|
||||||
|
+vendor_part_id = 4115,4116,4117,4118
|
||||||
|
use_eager_rdma = 1
|
||||||
|
mtu = 4096
|
||||||
|
max_inline_data = 256
|
||||||
|
@@ -183,7 +183,7 @@ max_inline_data = 256
|
||||||
|
|
||||||
|
[Mellanox ConnectX5]
|
||||||
|
vendor_id = 0x2c9,0x5ad,0x66a,0x8f1,0x1708,0x03ba,0x15b3,0x119f
|
||||||
|
-vendor_part_id = 4119,4121
|
||||||
|
+vendor_part_id = 4119,4120,4121,4122
|
||||||
|
use_eager_rdma = 1
|
||||||
|
mtu = 4096
|
||||||
|
max_inline_data = 256
|
||||||
|
@@ -192,7 +192,7 @@ max_inline_data = 256
|
||||||
|
|
||||||
|
[Mellanox ConnectX6]
|
||||||
|
vendor_id = 0x2c9,0x5ad,0x66a,0x8f1,0x1708,0x03ba,0x15b3,0x119f
|
||||||
|
-vendor_part_id = 4123
|
||||||
|
+vendor_part_id = 4123,4124
|
||||||
|
use_eager_rdma = 1
|
||||||
|
mtu = 4096
|
||||||
|
max_inline_data = 256
|
21
macros.hpc-openmpi
Normal file
21
macros.hpc-openmpi
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
#
|
||||||
|
# openmpi
|
||||||
|
#
|
||||||
|
|
||||||
|
%hpc_openmpi_init(V:) \
|
||||||
|
%{-V: %define _mf_ver %{-V*}} \
|
||||||
|
%{expand: %%global hpc_openmpi_dep_version %%{?_mf_ver}%%{?!_mf_ver:3}} \
|
||||||
|
%{expand: %%global hpc_openmpi_dir openmpi%{hpc_openmpi_dep_version}} \
|
||||||
|
%{expand: %%global hpc_openmpi_pack_version %{hpc_openmpi_dep_version}} \
|
||||||
|
%{expand: %%global _hpc_openmpi_modules openmpi}
|
||||||
|
|
||||||
|
# We may have to add a version here.
|
||||||
|
%hpc_setup_openmpi \
|
||||||
|
module load openmpi
|
||||||
|
|
||||||
|
%hpc_openmpi_requires \
|
||||||
|
Requires: libopenmpi%{hpc_openmpi_dep_version}-%{hpc_compiler_family}%{hpc_cf_pack_version}-hpc
|
||||||
|
|
||||||
|
%hpc_openmpi_requires_devel \
|
||||||
|
Requires: openmpi%{hpc_openmpi_dep_version}-%{hpc_compiler_family}%{hpc_cf_pack_version}-hpc-devel
|
||||||
|
|
15
mpivars.csh
Normal file
15
mpivars.csh
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
set -f path= ( prefix/bin $path )
|
||||||
|
|
||||||
|
if ($?MANPATH) then
|
||||||
|
if ( "$MANPATH" !~ *prefix/man* ) then
|
||||||
|
setenv MANPATH prefix/man:$MANPATH
|
||||||
|
endif
|
||||||
|
else
|
||||||
|
setenv MANPATH prefix/man:
|
||||||
|
endif
|
||||||
|
|
||||||
|
if ($?LD_LIBRARY_PATH) then
|
||||||
|
setenv LD_LIBRARY_PATH libdir:$LD_LIBRARY_PATH
|
||||||
|
else
|
||||||
|
setenv LD_LIBRARY_PATH libdir
|
||||||
|
endif
|
31
mpivars.sh
Normal file
31
mpivars.sh
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
case $PATH in
|
||||||
|
*prefix/bin*)
|
||||||
|
true
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
PATH=prefix/bin:$PATH
|
||||||
|
esac
|
||||||
|
|
||||||
|
|
||||||
|
case $MANPATH in
|
||||||
|
*prefix/share/man*)
|
||||||
|
true
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
MANPATH=prefix/share/man:$MANPATH
|
||||||
|
export MANPATH
|
||||||
|
esac
|
||||||
|
|
||||||
|
|
||||||
|
case $LD_LIBRARY_PATH in
|
||||||
|
*libdir*)
|
||||||
|
true
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
if [ -z "$LD_LIBRARY_PATH" ]; then
|
||||||
|
LD_LIBRARY_PATH=libdir
|
||||||
|
else
|
||||||
|
LD_LIBRARY_PATH="libdir:$LD_LIBRARY_PATH"
|
||||||
|
fi
|
||||||
|
export LD_LIBRARY_PATH
|
||||||
|
esac
|
BIN
openmpi-4.1.6.0.439b23db6288.tar.bz2
(Stored with Git LFS)
Normal file
BIN
openmpi-4.1.6.0.439b23db6288.tar.bz2
(Stored with Git LFS)
Normal file
Binary file not shown.
96
openmpi4-C99.diff
Normal file
96
openmpi4-C99.diff
Normal file
@ -0,0 +1,96 @@
|
|||||||
|
--- ./opal/mca/pmix/pmix3x/pmix/src/hwloc/hwloc.c~ 2023-09-25 20:20:09.000000000 +0000
|
||||||
|
+++ ./opal/mca/pmix/pmix3x/pmix/src/hwloc/hwloc.c 2024-07-29 16:12:38.161908410 +0000
|
||||||
|
@@ -48,7 +48,7 @@
|
||||||
|
|
||||||
|
#if HWLOC_API_VERSION >= 0x20000
|
||||||
|
static size_t shmemsize = 0;
|
||||||
|
-static size_t shmemaddr;
|
||||||
|
+static uintptr_t shmemaddr;
|
||||||
|
static char *shmemfile = NULL;
|
||||||
|
static int shmemfd = -1;
|
||||||
|
|
||||||
|
@@ -58,10 +58,10 @@
|
||||||
|
pmix_hwloc_vm_map_kind_t *kindp);
|
||||||
|
static int use_hole(unsigned long holebegin,
|
||||||
|
unsigned long holesize,
|
||||||
|
- unsigned long *addrp,
|
||||||
|
+ uintptr_t *addrp,
|
||||||
|
unsigned long size);
|
||||||
|
static int find_hole(pmix_hwloc_vm_hole_kind_t hkind,
|
||||||
|
- size_t *addrp,
|
||||||
|
+ uintptr_t *addrp,
|
||||||
|
size_t size);
|
||||||
|
static int enough_space(const char *filename,
|
||||||
|
size_t space_req,
|
||||||
|
@@ -584,7 +584,7 @@
|
||||||
|
|
||||||
|
static int use_hole(unsigned long holebegin,
|
||||||
|
unsigned long holesize,
|
||||||
|
- unsigned long *addrp,
|
||||||
|
+ uintptr_t *addrp,
|
||||||
|
unsigned long size)
|
||||||
|
{
|
||||||
|
unsigned long aligned;
|
||||||
|
@@ -615,7 +615,7 @@
|
||||||
|
}
|
||||||
|
|
||||||
|
static int find_hole(pmix_hwloc_vm_hole_kind_t hkind,
|
||||||
|
- size_t *addrp, size_t size)
|
||||||
|
+ uintptr_t *addrp, size_t size)
|
||||||
|
{
|
||||||
|
unsigned long biggestbegin = 0;
|
||||||
|
unsigned long biggestsize = 0;
|
||||||
|
--- ./orte/mca/rtc/hwloc/rtc_hwloc.c~ 2023-09-25 20:20:09.000000000 +0000
|
||||||
|
+++ ./orte/mca/rtc/hwloc/rtc_hwloc.c 2024-07-26 16:29:16.763923042 +0000
|
||||||
|
@@ -67,7 +67,7 @@
|
||||||
|
|
||||||
|
#if HWLOC_API_VERSION >= 0x20000
|
||||||
|
static size_t shmemsize = 0;
|
||||||
|
-static size_t shmemaddr;
|
||||||
|
+static uintptr_t shmemaddr;
|
||||||
|
static char *shmemfile = NULL;
|
||||||
|
static int shmemfd = -1;
|
||||||
|
|
||||||
|
@@ -77,10 +77,10 @@
|
||||||
|
orte_rtc_hwloc_vm_map_kind_t *kindp);
|
||||||
|
static int use_hole(unsigned long holebegin,
|
||||||
|
unsigned long holesize,
|
||||||
|
- unsigned long *addrp,
|
||||||
|
+ uintptr_t *addrp,
|
||||||
|
unsigned long size);
|
||||||
|
static int find_hole(orte_rtc_hwloc_vm_hole_kind_t hkind,
|
||||||
|
- size_t *addrp,
|
||||||
|
+ uintptr_t *addrp,
|
||||||
|
size_t size);
|
||||||
|
static int enough_space(const char *filename,
|
||||||
|
size_t space_req,
|
||||||
|
@@ -524,7 +524,7 @@
|
||||||
|
|
||||||
|
static int use_hole(unsigned long holebegin,
|
||||||
|
unsigned long holesize,
|
||||||
|
- unsigned long *addrp,
|
||||||
|
+ uintptr_t *addrp,
|
||||||
|
unsigned long size)
|
||||||
|
{
|
||||||
|
unsigned long aligned;
|
||||||
|
@@ -576,7 +576,7 @@
|
||||||
|
}
|
||||||
|
|
||||||
|
static int find_hole(orte_rtc_hwloc_vm_hole_kind_t hkind,
|
||||||
|
- size_t *addrp, size_t size)
|
||||||
|
+ uintptr_t *addrp, size_t size)
|
||||||
|
{
|
||||||
|
unsigned long biggestbegin = 0;
|
||||||
|
unsigned long biggestsize = 0;
|
||||||
|
--- ./ompi/mca/io/romio321/romio/adio/include/adio.h~ 2023-09-25 20:20:09.000000000 +0000
|
||||||
|
+++ ./ompi/mca/io/romio321/romio/adio/include/adio.h 2024-07-29 15:40:10.597565427 +0000
|
||||||
|
@@ -97,6 +97,9 @@
|
||||||
|
#ifdef MPI_OFFSET_IS_INT
|
||||||
|
typedef int ADIO_Offset;
|
||||||
|
# define ADIO_OFFSET MPI_INT
|
||||||
|
+#elif __SIZEOF_SIZE_T__ == 4
|
||||||
|
+ typedef long ADIO_Offset;
|
||||||
|
+# define ADIO_OFFSET MPI_LONG
|
||||||
|
#elif defined(HAVE_LONG_LONG_64)
|
||||||
|
typedef long long ADIO_Offset;
|
||||||
|
# ifdef HAVE_MPI_LONG_LONG_INT
|
9
openmpi4-rpmlintrc
Normal file
9
openmpi4-rpmlintrc
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
# This line is mandatory to access the configuration functions
|
||||||
|
from Config import *
|
||||||
|
|
||||||
|
addFilter("openmpi.*-config.* useless-provides")
|
||||||
|
addFilter("openmpi.*-devel.* shared-lib-calls-exit")
|
||||||
|
addFilter("openmpi.*-libs.* rpath-in-buildconfig")
|
||||||
|
addFilter("openmpi.*-libs.* shared-lib-calls-exit")
|
||||||
|
addFilter("openmpi.*-libs.* useless-provides")
|
||||||
|
addFilter("libopenmpi.* shlib-policy-name-error")
|
378
openmpi4.changes
Normal file
378
openmpi4.changes
Normal file
@ -0,0 +1,378 @@
|
|||||||
|
-------------------------------------------------------------------
|
||||||
|
Thu Sep 5 06:58:41 UTC 2024 - Nicolas Morey <nicolas.morey@suse.com>
|
||||||
|
|
||||||
|
- Add test-datatype-partial.c-fix-compiler-warnings.patch to fix
|
||||||
|
testuite compilation with GCC >= 14
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Mon Jul 29 16:40:16 UTC 2024 - Martin Jambor <mjambor@suse.com>
|
||||||
|
|
||||||
|
- Add openmpi4-C99.diff to fix the most egregious type violations that
|
||||||
|
not only prevent building the standard flavor with GCC 14 opn i586
|
||||||
|
but that are just bugs too.
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Tue Jun 25 13:24:03 UTC 2024 - Nicolas Morey <nicolas.morey@suse.com>
|
||||||
|
|
||||||
|
- Disable 32b builds of hpc flavours
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Mon Feb 26 12:47:01 UTC 2024 - Dominique Leuenberger <dimstar@opensuse.org>
|
||||||
|
|
||||||
|
- Use %autosetup macro. Allows to eliminate the usage of deprecated
|
||||||
|
PatchN.
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Tue Oct 10 09:44:40 UTC 2023 - Nicolas Morey <nicolas.morey@suse.com>
|
||||||
|
|
||||||
|
- Drop %vers macro so that the Version tag can be parsed more easily
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Mon Oct 2 07:35:01 UTC 2023 - Nicolas Morey <nicolas.morey@suse.com>
|
||||||
|
|
||||||
|
- Update to 4.1.6:
|
||||||
|
- Update embedded PMIx to 3.2.5.
|
||||||
|
- Fix issue with buffered sends and MTL-based interfaces (Libfabric,
|
||||||
|
PSM, Portals).
|
||||||
|
- Add missing MPI_F_STATUS_SIZE to mpi.h.
|
||||||
|
- Update Fortran mpi module configure check to be more correct.
|
||||||
|
- Update to properly handle PMIx v>=4.2.3.
|
||||||
|
- Fix minor issues and add some minor performance optimizations with
|
||||||
|
OFI support.
|
||||||
|
- Support the "striping_factor" and "striping_unit" MPI_Info names
|
||||||
|
recomended by the MPI standard for parallel IO.
|
||||||
|
- Fixed some minor issues with UCX support.
|
||||||
|
- Minor optimization for 0-byte MPI_Alltoallw (i.e., make it a no-op).
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Mon Aug 7 17:02:04 UTC 2023 - Nicolas Morey <nicolas.morey@suse.com>
|
||||||
|
|
||||||
|
- Drop support for TrueScale (bsc#1212146)
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Tue Jul 25 13:04:21 UTC 2023 - Nicolas Morey <nicolas.morey@suse.com>
|
||||||
|
|
||||||
|
- Update to 4.1.5:
|
||||||
|
- Fix crash in one -sided applications for certain process layouts.
|
||||||
|
- Update embedded OpenPMIx to version 3.2.4
|
||||||
|
- Backport patches to Libevent for CVE -2016 -10195, CVE -2016 -10196, and
|
||||||
|
CVE -2016 -10197. Note that Open MPI's internal libevent does not
|
||||||
|
use the impacted portions of the Libevent code base.
|
||||||
|
- SHMEM improvements:
|
||||||
|
- Fix initializer bugs in SHMEM interface.
|
||||||
|
- Fix unsigned type comparisons generating warnings.
|
||||||
|
- Fix use after clear issue in shmem_ds_reset.
|
||||||
|
- UCX improvements
|
||||||
|
- Fix memory registration bug that could occur when UCX was built
|
||||||
|
but not selected.
|
||||||
|
- Reduce overhead of add_procs with intercommunicators.
|
||||||
|
- Enable multi_send_nb by default.
|
||||||
|
- Call opal_progress while waiting for a UCX fence to complete.
|
||||||
|
- Fix data corruption bug in osc/rdma component.
|
||||||
|
- Fix overflow bug in alltoall collective
|
||||||
|
- Fix crash when displaying topology.
|
||||||
|
- Add some MPI_F_XXX constants that were missing from mpi.h.
|
||||||
|
- coll/ucc bug fixes.
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Fri Sep 23 10:24:16 UTC 2022 - Nicolas Morey-Chaisemartin <nmoreychaisemartin@suse.com>
|
||||||
|
|
||||||
|
- Replace btl-openib-Add-VF-support-for-ConnectX-5-and-6.patch
|
||||||
|
by btl-openib-Add-VF-support-for-ConnectX-4-5-and-6.patch to add ConnectX4 VF suppor
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Thu Sep 8 09:32:41 UTC 2022 - Nicolas Morey-Chaisemartin <nmoreychaisemartin@suse.com>
|
||||||
|
|
||||||
|
- Enable libfabric on all arch
|
||||||
|
- Switch to external libevent for all flavors
|
||||||
|
- Switch to external hwloc and PMIx for HPC builds
|
||||||
|
- Update rpmlintrc file to ignore missing libname suffix in libopenmpi packages
|
||||||
|
- Add patch btl-openib-Add-VF-support-for-ConnectX-5-and-6.patch to support
|
||||||
|
ConnectX 5 and 6 VF
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Wed Aug 3 08:18:34 UTC 2022 - Dirk Müller <dmueller@suse.com>
|
||||||
|
|
||||||
|
- update to 4.1.4:
|
||||||
|
* Fix possible length integer overflow in numerous non-blocking collective
|
||||||
|
operations.
|
||||||
|
* Fix segmentation fault in UCX if MPI Tool interface is finalized before
|
||||||
|
MPI_Init is called.
|
||||||
|
* Remove /usr/bin/python dependency in configure.
|
||||||
|
* Fix OMPIO issue with long double etypes.
|
||||||
|
* Update treematch topology component to fix numerous correctness issues.
|
||||||
|
* Fix memory leak in UCX MCA parameter registration.
|
||||||
|
* Fix long operation closing file descriptors on non-Linux systems that
|
||||||
|
can appear as a hang to users.
|
||||||
|
* Fix for attribute handling on GCC 11 due to pointer aliasing.
|
||||||
|
* Fix multithreaded race in UCX PML's datatype handling.
|
||||||
|
* Fix a correctness issue in CUDA Reduce algorithm.
|
||||||
|
* Fix compilation issue with CUDA GPUDirect RDMA support.
|
||||||
|
* Fix to make shmem_calloc(..., 0) conform to the OpenSHMEM specification.
|
||||||
|
* Add UCC collectives component.
|
||||||
|
* Fix divide by zero issue in OMPI IO component.
|
||||||
|
* Fix compile issue with libnl when not in standard search locations.
|
||||||
|
* Fixed a seg fault in the smcuda BTL. Thanks to Moritz Kreutzer and
|
||||||
|
@Stadik for reporting the issue.
|
||||||
|
* Added support for ELEMENTAL to the MPI handle comparison functions
|
||||||
|
in the mpi_f08 module. Thanks to Salvatore Filippone for raising
|
||||||
|
the issue.
|
||||||
|
* Minor datatype performance improvements in the CUDA-based code paths.
|
||||||
|
* Fix MPI_ALLTOALLV when used with MPI_IN_PLACE.
|
||||||
|
* Fix MPI_BOTTOM handling for non-blocking collectives. Thanks to
|
||||||
|
Lisandro Dalcin for reporting the problem.
|
||||||
|
* Enable OPAL memory hooks by default for UCX.
|
||||||
|
* Many compiler warnings fixes, particularly for newer versions of
|
||||||
|
GCC.
|
||||||
|
* Fix intercommunicator overflow with large payload collectives. Also
|
||||||
|
fixed MPI_REDUCE_SCATTER_BLOCK for similar issues with large payload
|
||||||
|
collectives.
|
||||||
|
* Back-port ROMIO 3.3 fix to use stat64() instead of stat() on GPFS.
|
||||||
|
* Fixed several non-blocking MPI collectives to not round fractions
|
||||||
|
based on float precision.
|
||||||
|
* Fix compile failure for --enable-heterogeneous. Also updated the
|
||||||
|
README to clarify that --enable-heterogeneous is functional, but
|
||||||
|
still not recomended for most environments.
|
||||||
|
* Minor fixes to OMPIO, including:
|
||||||
|
- Fixing the open behavior of shared memory shared file pointers.
|
||||||
|
Thanks to Axel Huebl for reporting the issue
|
||||||
|
- Fixes to clean up lockfiles when closing files. Thanks to Eric
|
||||||
|
Chamberland for reporting the issue.
|
||||||
|
* Update LSF configure failure output to be more clear (e.g., on RHEL
|
||||||
|
platforms).
|
||||||
|
* Update if_[in|ex]clude behavior in btl_tcp and oob_tcp to select
|
||||||
|
*all* interfaces that fall within the specified subnet range.
|
||||||
|
* ROMIO portability fix for OpenBSD
|
||||||
|
* Fix handling of MPI_IN_PLACE with MPI_ALLTOALLW and improve performance
|
||||||
|
of MPI_ALLTOALL and MPI_ALLTOALLV for MPI_IN_PLACE.
|
||||||
|
* Fix one-sided issue with empty groups in Post-Start-Wait-Complete
|
||||||
|
synchronization mode.
|
||||||
|
* Fix Fortran status returns in certain use cases involving
|
||||||
|
Generalized Requests
|
||||||
|
* Romio datatype bug fixes.
|
||||||
|
* Fix oshmem_shmem_finalize() when main() returns non-zero value.
|
||||||
|
* Fix wrong affinity under LSF with the membind option.
|
||||||
|
* Fix count==0 cases in MPI_REDUCE and MPI_IREDUCE.
|
||||||
|
* Fix ssh launching on Bourne-flavored shells when the user has "set
|
||||||
|
-u" set in their shell startup files.
|
||||||
|
* Correctly process 0 slots with the mpirun --host option.
|
||||||
|
* Ensure to unlink and rebind socket when the Open MPI session
|
||||||
|
directory already exists.
|
||||||
|
* Fix a segv in mpirun --disable-dissable-map.
|
||||||
|
* Fix a potential hang in the memory hook handling.
|
||||||
|
* Slight performance improvement in MPI_WAITALL when running in
|
||||||
|
MPI_THREAD_MULTIPLE.
|
||||||
|
* Fix hcoll datatype mapping and rooted operation behavior.
|
||||||
|
* Correct some operations modifying MPI_Status.MPI_ERROR when it is
|
||||||
|
disallowed by the MPI standard.
|
||||||
|
* UCX updates:
|
||||||
|
- Fix datatype reference count issues.
|
||||||
|
- Detach dynamic window memory when freeing a window.
|
||||||
|
- Fix memory leak in datatype handling.
|
||||||
|
* Fix various atomic operations issues.
|
||||||
|
* mpirun: try to set the curses winsize to the pty of the spawned
|
||||||
|
task. Thanks to Stack Overflow user @Seriously for reporting the
|
||||||
|
issue.
|
||||||
|
* PMIx updates:
|
||||||
|
- Fix compatibility with external PMIx v4.x installations.
|
||||||
|
- Fix handling of PMIx v3.x compiler/linker flags. Thanks to Erik
|
||||||
|
Schnetter for reporting the issue.
|
||||||
|
- Skip SLURM-provided PMIx detection when appropriate. Thanks to
|
||||||
|
Alexander Grund for reporting the issue.
|
||||||
|
* Fix handling by C++ compilers when they #include the STL "<version>"
|
||||||
|
header file, which ends up including Open MPI's text VERSION file
|
||||||
|
(which is not C code). Thanks to @srpgilles for reporting the
|
||||||
|
issue.
|
||||||
|
* Fix MPI_Op support for MPI_LONG.
|
||||||
|
* Make the MPI C++ bindings library (libmpi_cxx) explicitly depend on
|
||||||
|
the OPAL internal library (libopen-pal). Thanks to Ye Luo for
|
||||||
|
reporting the issue.
|
||||||
|
* Fix configure handling of "--with-libevent=/usr".
|
||||||
|
* Fix memory leak when opening Lustre files. Thanks to Bert Wesarg
|
||||||
|
for submitting the fix.
|
||||||
|
* Fix MPI_SENDRECV_REPLACE to correctly process datatype errors.
|
||||||
|
Thanks to Lisandro Dalcin for reporting the issue.
|
||||||
|
* Fix MPI_SENDRECV_REPLACE to correctly handle large data. Thanks
|
||||||
|
Jakub Benda for reporting this issue and suggesting a fix.
|
||||||
|
* Add workaround for TCP "dropped connection" errors to drastically
|
||||||
|
reduce the possibility of this happening.
|
||||||
|
* OMPIO updates:
|
||||||
|
- Fix handling when AMODE is not set. Thanks to Rainer Keller for
|
||||||
|
reporting the issue and supplying the fix.
|
||||||
|
- Fix FBTL "posix" component linking issue. Thanks for Honggang Li
|
||||||
|
for reporting the issue.
|
||||||
|
- Fixed segv with MPI_FILE_GET_BYTE_OFFSET on 0-sized file view.
|
||||||
|
- Thanks to GitHub user @shanedsnyder for submitting the issue.
|
||||||
|
* OFI updates:
|
||||||
|
- Multi-plane / Multi-Nic nic selection cleanups
|
||||||
|
- Add support for exporting Open MPI memory monitors into
|
||||||
|
Libfabric.
|
||||||
|
- Ensure that Cisco usNIC devices are never selected by the OFI
|
||||||
|
MTL.
|
||||||
|
- Fix buffer overflow in OFI networking setup. Thanks to Alexander
|
||||||
|
Grund for reporting the issue and supplying the fix.
|
||||||
|
* Fix SSEND on tag matching networks.
|
||||||
|
* Fix error handling in several MPI collectives.
|
||||||
|
* Fix the ordering of MPI_COMM_SPLIT_TYPE. Thanks to Wolfgang
|
||||||
|
Bangerth for raising the issue.
|
||||||
|
* No longer install the orted-mpir library (it's an internal / Libtool
|
||||||
|
convenience library). Thanks to Andrew Hesford for the fix.
|
||||||
|
* PSM2 updates:
|
||||||
|
- Allow advanced users to disable PSM2 version checking.
|
||||||
|
- Fix to allow non-default installation locations of psm2.h.
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Wed Apr 28 11:08:54 UTC 2021 - Nicolas Morey-Chaisemartin <nmoreychaisemartin@suse.com>
|
||||||
|
|
||||||
|
- openmpi4 is now the default openmpi for releases > 15.3
|
||||||
|
- Add orted-mpir-add-version-to-shared-library.patch to fix unversionned library
|
||||||
|
- Change RPM macros install path to %{_rpmmacrodir}
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Wed Apr 28 09:24:33 UTC 2021 - Nicolas Morey-Chaisemartin <nmoreychaisemartin@suse.com>
|
||||||
|
|
||||||
|
- Update to version 4.1.1
|
||||||
|
- Fix a number of datatype issues, including an issue with
|
||||||
|
improper handling of partial datatypes that could lead to
|
||||||
|
an unexpected application failure.
|
||||||
|
- Change UCX PML to not warn about MPI_Request leaks during
|
||||||
|
MPI_FINALIZE by default. The old behavior can be restored with
|
||||||
|
the mca_pml_ucx_request_leak_check MCA parameter.
|
||||||
|
- Reverted temporary solution that worked around launch issues in
|
||||||
|
SLURM v20.11.{0,1,2}. SchedMD encourages users to avoid these
|
||||||
|
versions and to upgrade to v20.11.3 or newer.
|
||||||
|
- Updated PMIx to v3.2.2.
|
||||||
|
- Disabled gcc built-in atomics by default on aarch64 platforms.
|
||||||
|
- Disabled UCX PML when UCX v1.8.0 is detected. UCX version 1.8.0 has a bug that
|
||||||
|
may cause data corruption when its TCP transport is used in conjunction with
|
||||||
|
the shared memory transport. UCX versions prior to v1.8.0 are not affected by
|
||||||
|
this issue. Thanks to @ksiazekm for reporting the issue.
|
||||||
|
- Fixed detection of available UCX transports/devices to better inform PML
|
||||||
|
prioritization.
|
||||||
|
- Fixed SLURM support to mark ORTE daemons as non-MPI tasks.
|
||||||
|
- Improved AVX detection to more accurately detect supported
|
||||||
|
platforms. Also improved the generated AVX code, and switched to
|
||||||
|
using word-based MCA params for the op/avx component (vs. numeric
|
||||||
|
big flags).
|
||||||
|
- Improved OFI compatibility support and fixed memory leaks in error
|
||||||
|
handling paths.
|
||||||
|
- Improved HAN collectives with support for Barrier and Scatter. Thanks
|
||||||
|
to @EmmanuelBRELLE for these changes and the relevant bug fixes.
|
||||||
|
- Fixed MPI debugger support (i.e., the MPIR_Breakpoint() symbol).
|
||||||
|
Thanks to @louisespellacy-arm for reporting the issue.
|
||||||
|
- Fixed ORTE bug that prevented debuggers from reading MPIR_Proctable.
|
||||||
|
- Removed PML uniformity check from the UCX PML to address performance
|
||||||
|
regression.
|
||||||
|
- Fixed MPI_Init_thread(3) statement about C++ binding and update
|
||||||
|
references about MPI_THREAD_MULTIPLE. Thanks to Andreas Lösel for
|
||||||
|
bringing the outdated docs to our attention.
|
||||||
|
- Added fence_nb to Flux PMIx support to address segmentation faults.
|
||||||
|
- Ensured progress of AIO requests in the POSIX FBTL component to
|
||||||
|
prevent exceeding maximum number of pending requests on MacOS.
|
||||||
|
- Used OPAL's mutli-thread support in the orted to leverage atomic
|
||||||
|
operations for object refcounting.
|
||||||
|
- Fixed segv when launching with static TCP ports.
|
||||||
|
- Fixed --debug-daemons mpirun CLI option.
|
||||||
|
- Fixed bug where mpirun did not honor --host in a managed job
|
||||||
|
allocation.
|
||||||
|
- Made a managed allocation filter a hostfile/hostlist.
|
||||||
|
- Fixed bug to marked a generalized request as pending once initiated.
|
||||||
|
- Fixed external PMIx v4.x check.
|
||||||
|
- Fixed OSHMEM build with `--enable-mem-debug`.
|
||||||
|
- Fixed a performance regression observed with older versions of GCC when
|
||||||
|
__ATOMIC_SEQ_CST is used. Thanks to @BiplabRaut for reporting the issue.
|
||||||
|
- Fixed buffer allocation bug in the binomial tree scatter algorithm when
|
||||||
|
non-contiguous datatypes are used. Thanks to @sadcat11 for reporting the issue.
|
||||||
|
- Fixed bugs related to the accumulate and atomics functionality in the
|
||||||
|
osc/rdma component.
|
||||||
|
- Fixed race condition in MPI group operations observed with
|
||||||
|
MPI_THREAD_MULTIPLE threading level.
|
||||||
|
- Fixed a deadlock in the TCP BTL's connection matching logic.
|
||||||
|
- Fixed pml/ob1 compilation error when CUDA support is enabled.
|
||||||
|
- Fixed a build issue with Lustre caused by unnecessary header includes.
|
||||||
|
- Fixed a build issue with IMB LSF workload manager.
|
||||||
|
- Fixed linker error with UCX SPML.
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Wed Mar 24 08:01:35 UTC 2021 - Egbert Eich <eich@suse.com>
|
||||||
|
|
||||||
|
- Update to version 4.1.0
|
||||||
|
* collectives: Add HAN and ADAPT adaptive collectives components.
|
||||||
|
Both components are off by default and can be enabled by specifying
|
||||||
|
"mpirun --mca coll_adapt_priority 100 --mca coll_han_priority 100 ...".
|
||||||
|
We intend to enable both by default in Open MPI 5.0.
|
||||||
|
* OMPIO is now the default for MPI-IO on all filesystems, including
|
||||||
|
Lustre (prior to this, ROMIO was the default for Lustre). Many
|
||||||
|
thanks to Mark Dixon for identifying MPI I/O issues and providing
|
||||||
|
access to Lustre systems for testing.
|
||||||
|
* Minor MPI one-sided RDMA performance improvements.
|
||||||
|
* Fix hcoll MPI_SCATTERV with MPI_IN_PLACE.
|
||||||
|
* Add AVX support for MPI collectives.
|
||||||
|
* Updates to mpirun(1) about "slots" and PE=x values.
|
||||||
|
* Fix buffer allocation for large environment variables. Thanks to
|
||||||
|
@zrss for reporting the issue.
|
||||||
|
* Upgrade the embedded OpenPMIx to v3.2.2.
|
||||||
|
* Fix issue with extra-long values in MCA files. Thanks to GitHub
|
||||||
|
user @zrss for bringing the issue to our attention.
|
||||||
|
* UCX: Fix zero-sized datatype transfers.
|
||||||
|
* Fix --cpu-list for non-uniform modes.
|
||||||
|
* Fix issue in PMIx callback caused by missing memory barrier on Arm platforms.
|
||||||
|
* OFI MTL: Various bug fixes.
|
||||||
|
* Fixed issue where MPI_TYPE_CREATE_RESIZED would create a datatype
|
||||||
|
with unexpected extent on oddly-aligned datatypes.
|
||||||
|
* collectives: Adjust default tuning thresholds for many collective
|
||||||
|
algorithms
|
||||||
|
* runtime: fix situation where rank-by argument does not work
|
||||||
|
* Portals4: Clean up error handling corner cases
|
||||||
|
* runtime: Remove --enable-install-libpmix option, which has not
|
||||||
|
worked since it was added
|
||||||
|
* UCX: Allow UCX 1.8 to be used with the btl uct
|
||||||
|
* UCX: Replace usage of the deprecated NB API of UCX with NBX
|
||||||
|
* OMPIO: Add support for the IME file system
|
||||||
|
* OFI/libfabric: Added support for multiple NICs
|
||||||
|
* OFI/libfabric: Added support for Scalable Endpoints
|
||||||
|
* OFI/libfabric: Added btl for one-sided support
|
||||||
|
* OFI/libfabric: Multiple small bugfixes
|
||||||
|
* libnbc: Adding numerous performance-improving algorithms
|
||||||
|
- Removed: reproducible.patch - replaced by spec file settings.
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Tue Sep 8 18:35:17 UTC 2020 - Nicolas Morey-Chaisemartin <nmoreychaisemartin@suse.com>
|
||||||
|
|
||||||
|
- Update to version 4.0.5
|
||||||
|
- See NEWS for the detailled changelog
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Thu Jun 11 08:42:56 UTC 2020 - Nicolas Morey-Chaisemartin <nmoreychaisemartin@suse.com>
|
||||||
|
|
||||||
|
- Update to version 4.0.4
|
||||||
|
- See NEWS for the detailled changelog
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Tue Jun 9 08:40:06 UTC 2020 - Nicolas Morey-Chaisemartin <nmoreychaisemartin@suse.com>
|
||||||
|
|
||||||
|
- Update to version 4.0.3
|
||||||
|
- See NEWS for the detailled changelog
|
||||||
|
- Fixes compilation with UCX 1.8
|
||||||
|
- Drop memory-patcher-fix-compiler-warning.patch which was merged upstream
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Thu Mar 19 08:28:04 UTC 2020 - Nicolas Morey-Chaisemartin <nmoreychaisemartin@suse.com>
|
||||||
|
|
||||||
|
- Drop different package string between SLES and Leap
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Wed Jan 15 09:05:14 UTC 2020 - Nicolas Morey-Chaisemartin <nmoreychaisemartin@suse.com>
|
||||||
|
|
||||||
|
- Add memory-patcher-fix-compiler-warning.patch to fix 64bit portability issues
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Thu Oct 31 17:05:14 UTC 2019 - Nicolas Morey-Chaisemartin <nmoreychaisemartin@suse.com>
|
||||||
|
|
||||||
|
- Link against libnuma (bsc#1155120)
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Thu Oct 24 14:40:07 UTC 2019 - Nicolas Morey-Chaisemartin <nmoreychaisemartin@suse.com>
|
||||||
|
|
||||||
|
- Initial version (4.0.2)
|
||||||
|
- Add reproducible.patch for reproducible builds.
|
793
openmpi4.spec
Normal file
793
openmpi4.spec
Normal file
@ -0,0 +1,793 @@
|
|||||||
|
#
|
||||||
|
# spec file
|
||||||
|
#
|
||||||
|
# Copyright (c) 2024 SUSE LLC
|
||||||
|
# Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana
|
||||||
|
# University Research and Technology
|
||||||
|
# Corporation. All rights reserved.
|
||||||
|
# Copyright (c) 2004-2005 The University of Tennessee and The University
|
||||||
|
# of Tennessee Research Foundation. All rights
|
||||||
|
# reserved.
|
||||||
|
# Copyright (c) 2004-2005 High Performance Computing Center Stuttgart,
|
||||||
|
# University of Stuttgart. All rights reserved.
|
||||||
|
# Copyright (c) 2004-2005 The Regents of the University of California.
|
||||||
|
# All rights reserved.
|
||||||
|
# Copyright (c) 2006-2016 Cisco Systems, Inc. All rights reserved.
|
||||||
|
# Copyright (c) 2013 Mellanox Technologies, Inc.
|
||||||
|
# All rights reserved.
|
||||||
|
# Copyright (c) 2015 Research Organization for Information Science
|
||||||
|
# and Technology (RIST). All rights reserved.
|
||||||
|
# Copyright (c) 2003, The Regents of the University of California, through
|
||||||
|
# Lawrence Berkeley National Laboratory (subject to receipt of any
|
||||||
|
# required approvals from the U.S. Dept. of Energy). All rights reserved.
|
||||||
|
#
|
||||||
|
# All modifications and additions to the file contributed by third parties
|
||||||
|
# remain the property of their copyright owners, unless otherwise agreed
|
||||||
|
# upon. The license for this file, and modifications and additions to the
|
||||||
|
# file, is the same license as for the pristine package itself (unless the
|
||||||
|
# license for the pristine package is not an Open Source License, in which
|
||||||
|
# case the license is the MIT License). An "Open Source License" is a
|
||||||
|
# license that conforms to the Open Source Definition (Version 1.9)
|
||||||
|
# published by the Open Source Initiative.
|
||||||
|
|
||||||
|
# Please submit bugfixes or comments via https://bugs.opensuse.org/
|
||||||
|
#
|
||||||
|
|
||||||
|
|
||||||
|
%global flavor @BUILD_FLAVOR@%{nil}
|
||||||
|
|
||||||
|
# Static libraries are disabled by default
|
||||||
|
# for non HPC builds
|
||||||
|
# To enable them, simply uncomment:
|
||||||
|
# % define build_static_devel 1
|
||||||
|
|
||||||
|
%global pname openmpi
|
||||||
|
%define _vers 4_1_6
|
||||||
|
%define m_f_ver 4
|
||||||
|
%bcond_with ringdisabled
|
||||||
|
|
||||||
|
%if "%flavor" == ""
|
||||||
|
ExclusiveArch: do_not_build
|
||||||
|
%{bcond_with hpc}
|
||||||
|
%define package_name %pname%{m_f_ver}
|
||||||
|
%else
|
||||||
|
# Trickery for OBS Staging. If _with_ringdisabled is set
|
||||||
|
# we only want to build the flavors required by other rings packages.
|
||||||
|
# Do not build any other ones
|
||||||
|
%if %{with ringdisabled}
|
||||||
|
%if "%flavor" != "standard"
|
||||||
|
ExclusiveArch: do_not_build
|
||||||
|
%endif
|
||||||
|
%endif
|
||||||
|
|
||||||
|
%if "%flavor" == "standard" || "%flavor" == "testsuite"
|
||||||
|
%define package_name %{pname}%{m_f_ver}
|
||||||
|
%bcond_with hpc
|
||||||
|
%if "%flavor" == "testsuite"
|
||||||
|
%define testsuite 1
|
||||||
|
%endif
|
||||||
|
%else
|
||||||
|
%bcond_without hpc
|
||||||
|
# Needs to be defined here to avoid hen/egg problem with test packages.
|
||||||
|
%define package_name %{pname}_%{_vers}-%{compiler_family}%{?c_f_ver}-hpc
|
||||||
|
%define build_static_devel 1
|
||||||
|
%endif
|
||||||
|
%endif
|
||||||
|
|
||||||
|
%if "%flavor" == "gnu-hpc"
|
||||||
|
%define compiler_family gnu
|
||||||
|
%undefine c_f_ver
|
||||||
|
%endif
|
||||||
|
|
||||||
|
%if "%flavor" == "gnu7-hpc"
|
||||||
|
%define compiler_family gnu
|
||||||
|
%define c_f_ver 7
|
||||||
|
%endif
|
||||||
|
|
||||||
|
%if "%flavor" == "gnu-hpc-testsuite"
|
||||||
|
%define compiler_family gnu
|
||||||
|
%undefine c_f_ver
|
||||||
|
%define testsuite 1
|
||||||
|
%endif
|
||||||
|
|
||||||
|
%if "%flavor" == "gnu7-hpc-testsuite"
|
||||||
|
%define compiler_family gnu
|
||||||
|
%define c_f_ver 7
|
||||||
|
%define testsuite 1
|
||||||
|
%endif
|
||||||
|
|
||||||
|
%if 0%{?suse_version} >= 1320
|
||||||
|
%ifarch aarch64 %power64 x86_64 s390x
|
||||||
|
%define with_ucx 1
|
||||||
|
%endif
|
||||||
|
%endif
|
||||||
|
|
||||||
|
# Detect whether we are the default openMPI implemantation or not
|
||||||
|
%if "%{flavor}" == "standard" && (%{suse_version} > 1500 || 0%{?sle_version} > 150300)
|
||||||
|
%define default_openmpi 1
|
||||||
|
%else
|
||||||
|
%define default_openmpi 0
|
||||||
|
%endif
|
||||||
|
|
||||||
|
%if %{with hpc}
|
||||||
|
%{!?compiler_family:%global compiler_family gnu}
|
||||||
|
%{hpc_init -M -c %compiler_family %{?c_f_ver:-v %{c_f_ver}} -m openmpi %{?mpi_f_ver:-V %{mpi_f_ver}}}
|
||||||
|
|
||||||
|
%global hpc_openmpi_dep_version %(VER=%m_f_ver; echo -n ${VER})
|
||||||
|
%global hpc_openmpi_dir openmpi%{hpc_openmpi_dep_version}
|
||||||
|
%global hpc_openmpi_pack_version %{hpc_openmpi_dep_version}
|
||||||
|
%{bcond_without pmix}
|
||||||
|
%{bcond_without hwloc}
|
||||||
|
ExcludeArch: i586 %arm s390
|
||||||
|
%else
|
||||||
|
%{bcond_with pmix}
|
||||||
|
%{bcond_with hwloc}
|
||||||
|
%endif
|
||||||
|
|
||||||
|
%define git_ver .0.439b23db6288
|
||||||
|
|
||||||
|
#############################################################################
|
||||||
|
#
|
||||||
|
# Preamble Section
|
||||||
|
#
|
||||||
|
#############################################################################
|
||||||
|
|
||||||
|
Name: %{package_name}%{?testsuite:-testsuite}
|
||||||
|
Version: 4.1.6
|
||||||
|
Release: 0
|
||||||
|
Summary: An implementation of MPI/SHMEM (Version %{m_f_ver})
|
||||||
|
License: BSD-3-Clause
|
||||||
|
Group: Development/Libraries/Parallel
|
||||||
|
URL: https://www.open-mpi.org/
|
||||||
|
Source0: openmpi-%{version}%{git_ver}.tar.bz2
|
||||||
|
Source2: openmpi4-rpmlintrc
|
||||||
|
Source3: macros.hpc-openmpi
|
||||||
|
Source4: mpivars.sh
|
||||||
|
Source5: mpivars.csh
|
||||||
|
Patch1: orted-mpir-add-version-to-shared-library.patch
|
||||||
|
Patch2: btl-openib-Add-VF-support-for-ConnectX-4-5-and-6.patch
|
||||||
|
Patch3: openmpi4-C99.diff
|
||||||
|
Patch4: test-datatype-partial.c-fix-compiler-warnings.patch
|
||||||
|
Provides: mpi
|
||||||
|
BuildRoot: %{_tmppath}/%{name}-%{version}-build
|
||||||
|
BuildRequires: autoconf
|
||||||
|
BuildRequires: automake
|
||||||
|
BuildRequires: fdupes
|
||||||
|
BuildRequires: flex
|
||||||
|
BuildRequires: hostname
|
||||||
|
BuildRequires: libevent-devel
|
||||||
|
BuildRequires: libfabric-devel
|
||||||
|
BuildRequires: libibumad-devel
|
||||||
|
BuildRequires: libibverbs-devel
|
||||||
|
BuildRequires: libtool
|
||||||
|
# net-tools is required to run hostname
|
||||||
|
BuildRequires: net-tools
|
||||||
|
%if 0%{?testsuite}
|
||||||
|
BuildArch: noarch
|
||||||
|
BuildRequires: %{package_name} = %{version}
|
||||||
|
%endif
|
||||||
|
%if 0%{?with_ucx}
|
||||||
|
BuildRequires: libucm-devel
|
||||||
|
BuildRequires: libucp-devel
|
||||||
|
BuildRequires: libucs-devel
|
||||||
|
BuildRequires: libuct-devel
|
||||||
|
%endif
|
||||||
|
%if %{with hwloc}
|
||||||
|
BuildRequires: hwloc-devel
|
||||||
|
%endif
|
||||||
|
%if %{with pmix}
|
||||||
|
BuildRequires: pmix-devel
|
||||||
|
%endif
|
||||||
|
%if %{without hpc}
|
||||||
|
BuildRequires: Modules
|
||||||
|
BuildRequires: gcc-c++
|
||||||
|
BuildRequires: gcc-fortran
|
||||||
|
BuildRequires: mpi-selector
|
||||||
|
Requires: mpi-selector
|
||||||
|
Requires(preun):mpi-selector
|
||||||
|
Requires: %{package_name}-libs = %{version}
|
||||||
|
%else
|
||||||
|
BuildRequires: %{compiler_family}%{?c_f_ver}-compilers-hpc-macros-devel
|
||||||
|
BuildRequires: lua-lmod
|
||||||
|
BuildRequires: suse-hpc
|
||||||
|
%if 0%{!?testsuite:1}
|
||||||
|
Requires: lib%{package_name} = %{version}
|
||||||
|
%endif
|
||||||
|
%hpc_requires
|
||||||
|
%endif
|
||||||
|
|
||||||
|
%ifarch x86_64
|
||||||
|
BuildRequires: libnuma-devel
|
||||||
|
BuildRequires: libpsm2-devel
|
||||||
|
BuildRequires: numactl
|
||||||
|
%endif
|
||||||
|
|
||||||
|
Requires: openmpi-runtime-config
|
||||||
|
Recommends: openmpi%{m_f_ver}-config
|
||||||
|
%if 0%{?default_openmpi}
|
||||||
|
Provides: openmpi = %{version}
|
||||||
|
%endif
|
||||||
|
# OpenMPI requires ssh (or rsh) to run even on a single host
|
||||||
|
# Force ssh to make sure the install works out of the box
|
||||||
|
Requires: openssh
|
||||||
|
|
||||||
|
%if %{without hpc}
|
||||||
|
%define mpi_prefix %{_libdir}/mpi/gcc/openmpi%{m_f_ver}
|
||||||
|
|
||||||
|
%define mpi_bindir %{mpi_prefix}/bin
|
||||||
|
%define mpi_libdir %{mpi_prefix}/%{_lib}
|
||||||
|
%define mpi_datadir %{mpi_prefix}/share
|
||||||
|
%define mpi_helpdir %{mpi_datadir}/%{pname}%{m_f_ver}
|
||||||
|
%define mpi_includedir %{mpi_prefix}/include
|
||||||
|
%define mpi_mandir %{mpi_prefix}/share/man
|
||||||
|
%else
|
||||||
|
%define mpi_prefix %hpc_prefix
|
||||||
|
|
||||||
|
%define mpi_bindir %hpc_bindir
|
||||||
|
%define mpi_libdir %hpc_libdir
|
||||||
|
%define mpi_datadir %hpc_datadir
|
||||||
|
%define mpi_helpdir %{mpi_datadir}/openmpi
|
||||||
|
%define mpi_includedir %hpc_includedir
|
||||||
|
%define mpi_mandir %hpc_mandir
|
||||||
|
|
||||||
|
%endif
|
||||||
|
|
||||||
|
%description
|
||||||
|
%if 0%{?testsuite}
|
||||||
|
This package is just needed to run the testsuite and does not contain
|
||||||
|
anything interesting.
|
||||||
|
%else
|
||||||
|
OpenMPI is an implementation of the Message Passing Interface, a
|
||||||
|
standardized API typically used for parallel and/or distributed
|
||||||
|
computing. OpenMPI is the merged result of four prior implementations
|
||||||
|
where the team found for them to excel in one or more areas,
|
||||||
|
such as latency or throughput.
|
||||||
|
|
||||||
|
OpenMPI also includes an implementation of the OpenSHMEM parallel
|
||||||
|
programming API, which is a Partitioned Global Address Space (PGAS)
|
||||||
|
abstraction layer providing inter-process communication using
|
||||||
|
one-sided communication techniques.
|
||||||
|
|
||||||
|
This package provides general tools (mpirun, mpiexec, etc.) and the
|
||||||
|
Module Component Architecture (MCA) base and plugins necessary for
|
||||||
|
running Open MPI/OpenSHMEM version %{m_f_ver} jobs.
|
||||||
|
%endif
|
||||||
|
|
||||||
|
%if 0%{!?testsuite:1}
|
||||||
|
%package %{!?with_hpc:libs}%{?with_hpc:-n lib%{name}}
|
||||||
|
Summary: OpenMPI runtime libraries for OpenMPI %{?with_hpc:HPC} version %{version}
|
||||||
|
Group: System/Libraries
|
||||||
|
Requires: %{name} = %{version}
|
||||||
|
%if 0%{?default_openmpi}
|
||||||
|
Provides: openmpi-libs = %{version}
|
||||||
|
%endif
|
||||||
|
%{?with_hpc:%hpc_requires}
|
||||||
|
|
||||||
|
%description %{!?with_hpc:libs}%{?with_hpc:-n lib%{name}}
|
||||||
|
OpenMPI is an implementation of the Message Passing Interface, a
|
||||||
|
standardized API typically used for parallel and/or distributed
|
||||||
|
computing. OpenMPI is the merged result of four prior implementations
|
||||||
|
where the team found for them to excel in one or more areas,
|
||||||
|
such as latency or throughput.
|
||||||
|
|
||||||
|
OpenMPI also includes an implementation of the OpenSHMEM parallel
|
||||||
|
programming API, which is a Partitioned Global Address Space (PGAS)
|
||||||
|
abstraction layer providing inter-process communication using
|
||||||
|
one-sided communication techniques.
|
||||||
|
|
||||||
|
This package provides the Open MPI/OpenSHMEM version %{m_f_ver}
|
||||||
|
shared libraries.
|
||||||
|
|
||||||
|
%package devel
|
||||||
|
Summary: SDK for openMPI %{?with_hpc:HPC} version %{version}
|
||||||
|
Group: Development/Libraries/Parallel
|
||||||
|
Requires: libibumad-devel
|
||||||
|
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
|
||||||
|
OpenMPI is an implementation of the Message Passing Interface, a
|
||||||
|
standardized API typically used for parallel and/or distributed
|
||||||
|
computing. OpenMPI is the merged result of four prior implementations
|
||||||
|
where the team found for them to excel in one or more areas,
|
||||||
|
such as latency or throughput.
|
||||||
|
|
||||||
|
OpenMPI also includes an implementation of the OpenSHMEM parallel
|
||||||
|
programming API, which is a Partitioned Global Address Space (PGAS)
|
||||||
|
abstraction layer providing inter-process communication using
|
||||||
|
one-sided communication techniques.
|
||||||
|
|
||||||
|
This package provides the development files for Open MPI/OpenSHMEM
|
||||||
|
version %{m_f_ver}, such as wrapper compilers and header files for
|
||||||
|
MPI/OpenSHMEM development.
|
||||||
|
|
||||||
|
%package docs
|
||||||
|
Summary: Documentation for Open MPI/SHMEM %{?with_hpc:HPC} version %{version}
|
||||||
|
Group: Documentation/Man
|
||||||
|
Requires: %{name} = %{version}
|
||||||
|
|
||||||
|
%description docs
|
||||||
|
OpenMPI is an implementation of the Message Passing Interface, a
|
||||||
|
standardized API typically used for parallel and/or distributed
|
||||||
|
computing. OpenMPI is the merged result of four prior implementations
|
||||||
|
where the team found for them to excel in one or more areas,
|
||||||
|
such as latency or throughput.
|
||||||
|
|
||||||
|
OpenMPI also includes an implementation of the OpenSHMEM parallel
|
||||||
|
programming API, which is a Partitioned Global Address Space (PGAS)
|
||||||
|
abstraction layer providing inter-process communication using
|
||||||
|
one-sided communication techniques.
|
||||||
|
|
||||||
|
This subpackage provides the documentation for Open MPI/OpenSHMEM.
|
||||||
|
|
||||||
|
%package macros-devel
|
||||||
|
Summary: Macros for openMPI version %{version}
|
||||||
|
Group: Development/Libraries/Parallel
|
||||||
|
Requires: %{name}-devel = %{version}
|
||||||
|
# Make sure no two openmpi macro file can be installed at once
|
||||||
|
Provides: %{pname}-macros-provider = %{version}
|
||||||
|
Conflicts: otherproviders(%{pname}-macros-provider)
|
||||||
|
# Conflict (without providing) with the older openmpi-hpc-macros-devel flag
|
||||||
|
# to avoid issue with older packages
|
||||||
|
Conflicts: otherproviders(%{pname}-hpc-macros-devel)
|
||||||
|
|
||||||
|
%if 0%{?default_openmpi}
|
||||||
|
Provides: openmpi-macros-devel = %{version}
|
||||||
|
%endif
|
||||||
|
|
||||||
|
%description macros-devel
|
||||||
|
Macros for building RPM packages for OpenMPI version %{version}.
|
||||||
|
|
||||||
|
%if 0%{?build_static_devel}
|
||||||
|
%package devel-static
|
||||||
|
Summary: Static libraries for openMPI %{?with_hpc:HPC} version %{version}
|
||||||
|
Group: Development/Libraries/Parallel
|
||||||
|
Requires: %{name}-devel = %{version}
|
||||||
|
%if 0%{?default_openmpi}
|
||||||
|
Provides: openmpi-devel-static = %{version}
|
||||||
|
%endif
|
||||||
|
|
||||||
|
%description devel-static
|
||||||
|
OpenMPI is an implementation of the Message Passing Interface, a
|
||||||
|
standardized API typically used for parallel and/or distributed
|
||||||
|
computing. OpenMPI is the merged result of four prior implementations
|
||||||
|
where the team found for them to excel in one or more areas,
|
||||||
|
such as latency or throughput.
|
||||||
|
|
||||||
|
This RPM contains the static library files, which are packaged separately from
|
||||||
|
the dynamic library and headers.
|
||||||
|
%endif
|
||||||
|
|
||||||
|
%if %{without hpc}
|
||||||
|
%package -n %{pname}%{m_f_ver}-config
|
||||||
|
Summary: Runtime configuration files for openMPI %{?with_hpc:HPC} version %{version}
|
||||||
|
Group: Development/Libraries/Parallel
|
||||||
|
Provides: openmpi-runtime-config = %{version}
|
||||||
|
Conflicts: otherproviders(openmpi-runtime-config)
|
||||||
|
%if %{without pmix}
|
||||||
|
# OpenMPI4 is PMIx enabled
|
||||||
|
Provides: pmix-runtime-config = %{version}
|
||||||
|
Conflicts: otherproviders(pmix-runtime-config)
|
||||||
|
%endif
|
||||||
|
|
||||||
|
%description -n %{pname}%{m_f_ver}-config
|
||||||
|
OpenMPI is an implementation of the Message Passing Interface, a
|
||||||
|
standardized API typically used for parallel and/or distributed
|
||||||
|
computing. OpenMPI is the merged result of four prior implementations
|
||||||
|
where the team found for them to excel in one or more areas,
|
||||||
|
such as latency or throughput.
|
||||||
|
|
||||||
|
This RPM contains the configuration files for OpenMPI runtime (Version 3).
|
||||||
|
%endif
|
||||||
|
|
||||||
|
%if %{with hpc}
|
||||||
|
%{hpc_master_package -L -a}
|
||||||
|
%{hpc_master_package -l}
|
||||||
|
%{hpc_master_package devel}
|
||||||
|
%{hpc_master_package docs}
|
||||||
|
%{hpc_master_package macros-devel}
|
||||||
|
%{hpc_master_package -a devel-static}
|
||||||
|
%endif # ?with_hpc
|
||||||
|
%endif # !testsuite
|
||||||
|
|
||||||
|
%if "%(echo %version | tr '.' '_')" != "%_vers"
|
||||||
|
%{error: Fix _vers variable to match package version!}
|
||||||
|
%endif
|
||||||
|
|
||||||
|
#############################################################################
|
||||||
|
#
|
||||||
|
# Prepatory Section
|
||||||
|
#
|
||||||
|
#############################################################################
|
||||||
|
%prep
|
||||||
|
echo FLAVOR %{flavor}
|
||||||
|
%if %{with hpc}
|
||||||
|
echo with HPC
|
||||||
|
%endif
|
||||||
|
%if %{without hpc}
|
||||||
|
echo without HPC
|
||||||
|
%endif
|
||||||
|
%autosetup -p0 -n openmpi-%{version}%{git_ver}
|
||||||
|
|
||||||
|
%if %{without hpc}
|
||||||
|
cat > %{_sourcedir}/baselibs.conf <<EOF
|
||||||
|
openmpi%{m_f_ver}-libs
|
||||||
|
EOF
|
||||||
|
%endif
|
||||||
|
|
||||||
|
# Live patch the VERSION file
|
||||||
|
sed -i -e 's/^greek=.*$/greek=%{git_ver}/' -e 's/^repo_rev=.*$/repo_rev=%{version}%{git_ver}/' \
|
||||||
|
-e 's/^date=.*$/date="OpenMPI %{version} Distribution for SUSE"/' VERSION
|
||||||
|
|
||||||
|
#############################################################################
|
||||||
|
#
|
||||||
|
# Build Section
|
||||||
|
#
|
||||||
|
#############################################################################
|
||||||
|
|
||||||
|
%build
|
||||||
|
# make build reproducible
|
||||||
|
export USER=OBS
|
||||||
|
export HOSTNAME=OBS
|
||||||
|
# OBS sets SOURCE_DATE_EPOCH
|
||||||
|
%global _lto_cflags %{_lto_cflags} -ffat-lto-objects
|
||||||
|
%{?with_hpc:%hpc_debug}
|
||||||
|
./autogen.pl --force
|
||||||
|
%if %{with hpc}
|
||||||
|
%{hpc_setup}
|
||||||
|
%{hpc_configure} \
|
||||||
|
%else
|
||||||
|
%{configure} \
|
||||||
|
--prefix="%{mpi_prefix}" \
|
||||||
|
--exec-prefix="%{mpi_prefix}" \
|
||||||
|
--bindir="%{mpi_bindir}" \
|
||||||
|
--datadir="%{mpi_datadir}" \
|
||||||
|
--includedir="%{mpi_includedir}" \
|
||||||
|
--libdir="%{mpi_libdir}" \
|
||||||
|
--mandir="%{mpi_mandir}" \
|
||||||
|
%endif
|
||||||
|
%{?build_static_devel:--enable-static} \
|
||||||
|
%{!?build_static_devel:--disable-static} \
|
||||||
|
--enable-builtin-atomics \
|
||||||
|
--with-libltdl=%{_prefix} \
|
||||||
|
--with-verbs \
|
||||||
|
--with-libfabric \
|
||||||
|
--enable-mpi-thread-multiple \
|
||||||
|
--disable-wrapper-rpath \
|
||||||
|
--with-slurm \
|
||||||
|
--with-libevent=external \
|
||||||
|
%if %{with hwloc}
|
||||||
|
--with-hwloc=external \
|
||||||
|
%endif
|
||||||
|
%if %{with pmix}
|
||||||
|
--with-pmix=external \
|
||||||
|
%endif
|
||||||
|
%if 0%{?with_ucx}
|
||||||
|
--with-ucx \
|
||||||
|
--with-ucx-libdir=/usr/%_lib \
|
||||||
|
%endif
|
||||||
|
%ifarch x86_64
|
||||||
|
--with-psm2 \
|
||||||
|
%endif
|
||||||
|
--disable-silent-rules \
|
||||||
|
--enable-mpirun-prefix-by-default \
|
||||||
|
--with-package-string="Open MPI Distribution for SUSE" \
|
||||||
|
--disable-wrapper-runpath
|
||||||
|
make %{?_smp_mflags}
|
||||||
|
|
||||||
|
%if 0%{?testsuite}
|
||||||
|
%check
|
||||||
|
make check
|
||||||
|
|
||||||
|
%install
|
||||||
|
|
||||||
|
%files
|
||||||
|
%defattr(-, root, root)
|
||||||
|
%doc README
|
||||||
|
%doc test/util/test-suite.log
|
||||||
|
|
||||||
|
%else # ?testsuite
|
||||||
|
|
||||||
|
#############################################################################
|
||||||
|
#
|
||||||
|
# Install Section
|
||||||
|
#
|
||||||
|
#############################################################################
|
||||||
|
|
||||||
|
%install
|
||||||
|
%{?with_hpc:%{hpc_setup_compiler}}
|
||||||
|
make install DESTDIR="%buildroot"
|
||||||
|
|
||||||
|
# sanitize .la files
|
||||||
|
list="$(find %{buildroot} -name "*.la" -printf "%%h\n" | sort | uniq)"
|
||||||
|
for dir in ${list}
|
||||||
|
do
|
||||||
|
deps="${deps} -L${dir##%{buildroot}}"
|
||||||
|
done
|
||||||
|
for dir in ${list}
|
||||||
|
do
|
||||||
|
%if !0%{?build_static_devel}
|
||||||
|
rm -f ${dir}/*.la
|
||||||
|
%else
|
||||||
|
for file in ${dir}/*.la
|
||||||
|
do
|
||||||
|
sed -i -e "s@ [^[:space:]]*home[^[:space:]\']*@${deps}@" \
|
||||||
|
-e "s@ [^[:space:]]*home[^[:space:]\']*@@g" \
|
||||||
|
-e "s@-L.*.libs @@g" ${file}
|
||||||
|
done
|
||||||
|
%endif
|
||||||
|
done
|
||||||
|
##even with disable static this one gets generated
|
||||||
|
%{!?build_static_devel:rm -f %{buildroot}%{mpi_libdir}/libvt-pomp.a}
|
||||||
|
|
||||||
|
# GCC 5 builds the ignore-tkr extension and there is no way to
|
||||||
|
# turn that off
|
||||||
|
rm -f %{buildroot}%{mpi_libdir}/mpi_ext.mod
|
||||||
|
|
||||||
|
%fdupes %{buildroot}%{mpi_mandir}
|
||||||
|
%fdupes %{buildroot}%{mpi_datadir}
|
||||||
|
%fdupes %{buildroot}%{mpi_libdir}/pkgconfig
|
||||||
|
|
||||||
|
%if %{without hpc}
|
||||||
|
# make and install mpivars files
|
||||||
|
sed -e 's,prefix,%{mpi_prefix},g' -e 's,libdir,%{mpi_libdir},g' %{SOURCE4} \
|
||||||
|
> %{buildroot}%{mpi_bindir}/mpivars.sh
|
||||||
|
sed -e 's,prefix,%{mpi_prefix},g' -e 's,libdir,%{mpi_libdir},g' %{SOURCE5} \
|
||||||
|
> %{buildroot}%{mpi_bindir}/mpivars.csh
|
||||||
|
|
||||||
|
mkdir -p %{buildroot}%{_datadir}/modules/gnu-openmpi
|
||||||
|
cat << EOF > %{buildroot}%{_datadir}/modules/gnu-openmpi/%{version}
|
||||||
|
#%%Module
|
||||||
|
proc ModulesHelp { } {
|
||||||
|
global dotversion
|
||||||
|
puts stderr "\tLoads the gnu - openmpi %{version} Environment"
|
||||||
|
}
|
||||||
|
|
||||||
|
module-whatis "Loads the gnu openmpi %{version} Environment."
|
||||||
|
conflict gnu-openmpi
|
||||||
|
prepend-path PATH %{mpi_bindir}
|
||||||
|
prepend-path INCLUDE %{mpi_includedir}
|
||||||
|
prepend-path INCLUDE %{mpi_libdir}
|
||||||
|
prepend-path MANPATH %{mpi_mandir}
|
||||||
|
prepend-path LD_LIBRARY_PATH %{mpi_libdir}
|
||||||
|
|
||||||
|
EOF
|
||||||
|
|
||||||
|
mkdir -p %{buildroot}%{_rpmmacrodir}
|
||||||
|
cat <<EOF >%{buildroot}%{_rpmmacrodir}/macros.openmpi
|
||||||
|
#
|
||||||
|
# openmpi
|
||||||
|
#
|
||||||
|
%openmpi_prefix %{mpi_prefix}
|
||||||
|
%setup_openmpi source %{mpi_bindir}/mpivars.sh
|
||||||
|
|
||||||
|
%openmpi_requires Requires: %{name}-libs
|
||||||
|
%openmpi_devel_requires Requires: %{name}-devel
|
||||||
|
|
||||||
|
EOF
|
||||||
|
%else
|
||||||
|
%hpc_write_modules_files
|
||||||
|
#%%Module1.0#####################################################################
|
||||||
|
|
||||||
|
proc ModulesHelp { } {
|
||||||
|
|
||||||
|
puts stderr " "
|
||||||
|
puts stderr "This module loads the %{pname} library built with the %{compiler_family} toolchain."
|
||||||
|
puts stderr "\nVersion %{version}\n"
|
||||||
|
|
||||||
|
}
|
||||||
|
module-whatis "Name: %{pname} built with %{compiler_family} toolchain"
|
||||||
|
module-whatis "Version: %{version}"
|
||||||
|
module-whatis "Category: runtime library"
|
||||||
|
module-whatis "Description: %{SUMMARY:0}"
|
||||||
|
module-whatis "URL: %{url}"
|
||||||
|
|
||||||
|
set version %{version}
|
||||||
|
|
||||||
|
setenv MPI_DIR %{hpc_mpi_install_path}
|
||||||
|
prepend-path PATH %{hpc_bindir}
|
||||||
|
prepend-path MANPATH %{hpc_mandir}
|
||||||
|
prepend-path LD_LIBRARY_PATH %{hpc_libdir}
|
||||||
|
prepend-path MODULEPATH %{hpc_modulepath}
|
||||||
|
%{hpc_modulefile_add_pkgconfig_path}
|
||||||
|
|
||||||
|
family "MPI"
|
||||||
|
EOF
|
||||||
|
cat <<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
|
||||||
|
# Always register. We might be already registered in the case of an udate
|
||||||
|
# but mpi-selector handles it fine
|
||||||
|
/usr/bin/mpi-selector \
|
||||||
|
--register %{name} \
|
||||||
|
--source-dir %{mpi_bindir} \
|
||||||
|
--yes
|
||||||
|
|
||||||
|
%preun
|
||||||
|
# Only unregister when uninstalling
|
||||||
|
if [ "$1" = "0" ]; then
|
||||||
|
/usr/bin/mpi-selector --unregister %{name} --yes
|
||||||
|
# Deregister the default if we are uninstalling it
|
||||||
|
if [ "$(/usr/bin/mpi-selector --system --query)" = "%{name}" ]; then
|
||||||
|
/usr/bin/mpi-selector --system --unset --yes
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
%post libs -p /sbin/ldconfig
|
||||||
|
%postun libs -p /sbin/ldconfig
|
||||||
|
%else #!?with_hpc
|
||||||
|
# make it default
|
||||||
|
%post -n lib%{name} -p /sbin/ldconfig
|
||||||
|
%postun -n lib%{name} -p /sbin/ldconfig
|
||||||
|
|
||||||
|
%postun
|
||||||
|
%hpc_module_delete_if_default
|
||||||
|
%endif #!?with_hpc
|
||||||
|
|
||||||
|
%files
|
||||||
|
%defattr(-, root, root)
|
||||||
|
%doc NEWS README
|
||||||
|
%license LICENSE
|
||||||
|
%dir %{mpi_prefix}
|
||||||
|
%dir %{mpi_bindir}
|
||||||
|
%dir %{mpi_libdir}
|
||||||
|
%dir %{mpi_datadir}
|
||||||
|
%dir %{mpi_mandir}
|
||||||
|
%{mpi_bindir}/mpivars.csh
|
||||||
|
%{mpi_bindir}/mpivars.sh
|
||||||
|
|
||||||
|
%if %{without hpc}
|
||||||
|
%dir %{_libdir}/mpi
|
||||||
|
%dir %{_libdir}/mpi/gcc
|
||||||
|
%dir %{_datadir}/modules/gnu-openmpi
|
||||||
|
%{_datadir}/modules/gnu-openmpi/%{version}
|
||||||
|
%else # with hpc
|
||||||
|
%hpc_mpi_dirs
|
||||||
|
%hpc_modules_files
|
||||||
|
%endif # with hpc
|
||||||
|
#
|
||||||
|
%{mpi_bindir}/mpirun
|
||||||
|
%{mpi_bindir}/ompi-clean
|
||||||
|
%{mpi_bindir}/ompi-server
|
||||||
|
%{mpi_bindir}/ompi_info
|
||||||
|
%{mpi_bindir}/orte-clean
|
||||||
|
%{mpi_bindir}/orte-info
|
||||||
|
%{mpi_bindir}/orte-server
|
||||||
|
%{mpi_bindir}/orted
|
||||||
|
%{mpi_bindir}/orterun
|
||||||
|
|
||||||
|
%if 0%{?with_ucx}
|
||||||
|
%{mpi_bindir}/oshmem_info
|
||||||
|
%{mpi_bindir}/oshrun
|
||||||
|
%{mpi_bindir}/shmemrun
|
||||||
|
%endif
|
||||||
|
|
||||||
|
%if %{without hpc}
|
||||||
|
%{mpi_bindir}/aggregate_profile.pl
|
||||||
|
%{mpi_bindir}/profile2mat.pl
|
||||||
|
%endif
|
||||||
|
|
||||||
|
%dir %{mpi_datadir}/openmpi
|
||||||
|
%dir %{mpi_datadir}/openmpi/amca-param-sets
|
||||||
|
%{mpi_datadir}/openmpi/amca-param-sets/btl-openib-benchmark
|
||||||
|
%{mpi_datadir}/openmpi/amca-param-sets/example.conf
|
||||||
|
%{mpi_datadir}/openmpi/mca-btl-openib-device-params.ini
|
||||||
|
%{mpi_datadir}/openmpi/*-data.txt
|
||||||
|
%{mpi_datadir}/openmpi/help-*.txt
|
||||||
|
%if %{without pmix}
|
||||||
|
%dir %{mpi_datadir}/pmix
|
||||||
|
%{mpi_datadir}/pmix/help-*.txt
|
||||||
|
%endif
|
||||||
|
|
||||||
|
%files %{!?with_hpc:libs}%{?with_hpc:-n lib%{name}}
|
||||||
|
%defattr(-,root,root)
|
||||||
|
%dir %mpi_prefix/
|
||||||
|
%dir %mpi_libdir/
|
||||||
|
%mpi_libdir/*.so.*
|
||||||
|
%{mpi_libdir}/openmpi/*.so
|
||||||
|
%if %{without pmix}
|
||||||
|
%dir %mpi_libdir/pmix/
|
||||||
|
%{mpi_libdir}/pmix/*.so
|
||||||
|
%endif
|
||||||
|
|
||||||
|
%files devel
|
||||||
|
%defattr(-, root, root)
|
||||||
|
%dir %{mpi_libdir}/openmpi
|
||||||
|
%dir %{mpi_libdir}/pkgconfig
|
||||||
|
%{mpi_includedir}
|
||||||
|
%{mpi_libdir}/*.so
|
||||||
|
%{mpi_libdir}/pkgconfig/*.pc
|
||||||
|
%{mpi_libdir}/mpi.mod
|
||||||
|
%if 0%{?suse_version} >= 1320
|
||||||
|
%{mpi_libdir}/mpi_f08*.mod
|
||||||
|
%{mpi_libdir}/pmpi_f08*.mod
|
||||||
|
%endif
|
||||||
|
%{mpi_bindir}/mpiCC
|
||||||
|
%{mpi_bindir}/mpic++
|
||||||
|
%{mpi_bindir}/mpicc
|
||||||
|
%{mpi_bindir}/mpicxx
|
||||||
|
%{mpi_bindir}/mpiexec
|
||||||
|
%{mpi_bindir}/mpif77
|
||||||
|
%{mpi_bindir}/mpif90
|
||||||
|
%{mpi_bindir}/mpifort
|
||||||
|
%{mpi_bindir}/opal_wrapper
|
||||||
|
%{mpi_bindir}/ortecc
|
||||||
|
%if 0%{?with_ucx}
|
||||||
|
%{mpi_bindir}/oshcc
|
||||||
|
%{mpi_bindir}/oshCC
|
||||||
|
%{mpi_bindir}/oshc++
|
||||||
|
%{mpi_bindir}/oshcxx
|
||||||
|
%{mpi_bindir}/oshfort
|
||||||
|
%{mpi_bindir}/shmemcc
|
||||||
|
%{mpi_bindir}/shmemCC
|
||||||
|
%{mpi_bindir}/shmemc++
|
||||||
|
%{mpi_bindir}/shmemcxx
|
||||||
|
%{mpi_bindir}/shmemfort
|
||||||
|
%endif
|
||||||
|
%{mpi_datadir}/openmpi/openmpi-valgrind.supp
|
||||||
|
%if %{without pmix}
|
||||||
|
%{mpi_datadir}/pmix/pmix-valgrind.supp
|
||||||
|
%endif
|
||||||
|
|
||||||
|
%files docs
|
||||||
|
%defattr(-, root, root, -)
|
||||||
|
%{mpi_mandir}
|
||||||
|
|
||||||
|
%files macros-devel
|
||||||
|
%defattr(-,root,root,-)
|
||||||
|
%if %{with hpc}
|
||||||
|
%{_rpmmacrodir}/macros.hpc-openmpi
|
||||||
|
%else
|
||||||
|
%{_rpmmacrodir}/macros.openmpi
|
||||||
|
%endif
|
||||||
|
|
||||||
|
%if 0%{?build_static_devel}
|
||||||
|
%files devel-static
|
||||||
|
%defattr(-, root, root)
|
||||||
|
%{mpi_libdir}/*.la
|
||||||
|
%{mpi_libdir}/openmpi/*.la
|
||||||
|
%{mpi_libdir}/*.a
|
||||||
|
%{mpi_libdir}/openmpi/*.a
|
||||||
|
%endif
|
||||||
|
|
||||||
|
%if %{without hpc}
|
||||||
|
%files -n %{pname}%{m_f_ver}-config
|
||||||
|
%config %{_sysconfdir}/openmpi-default-hostfile
|
||||||
|
%config %{_sysconfdir}/openmpi-mca-params.conf
|
||||||
|
%if %{without pmix}
|
||||||
|
%config %{_sysconfdir}/pmix-mca-params.conf
|
||||||
|
%endif
|
||||||
|
%{_sysconfdir}/openmpi-totalview.tcl
|
||||||
|
%endif
|
||||||
|
|
||||||
|
%endif # !?testsuite
|
||||||
|
|
||||||
|
%changelog
|
22
orted-mpir-add-version-to-shared-library.patch
Normal file
22
orted-mpir-add-version-to-shared-library.patch
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
commit bd2ceac4315c772e02cbb070e443d1acf2512da1
|
||||||
|
Author: Andrew J. Hesford <ajh@sideband.org>
|
||||||
|
Date: Thu Apr 29 15:13:23 2021 -0400
|
||||||
|
|
||||||
|
orted-mpir: add version to shared library
|
||||||
|
|
||||||
|
Because orted-mpir is installed in the public library direrctory, it
|
||||||
|
should have a version. Assign the library libopen_rte_so_version to be
|
||||||
|
consistent with the rest of the RTE.
|
||||||
|
|
||||||
|
Signed-off-by: Andrew J. Hesford <ajh@sideband.org>
|
||||||
|
|
||||||
|
diff --git orte/orted/orted-mpir/Makefile.am orte/orted/orted-mpir/Makefile.am
|
||||||
|
index 5c0dd335644a..8105dd4a6b83 100644
|
||||||
|
--- orte/orted/orted-mpir/Makefile.am
|
||||||
|
+++ orte/orted/orted-mpir/Makefile.am
|
||||||
|
@@ -19,4 +19,4 @@ lib_LTLIBRARIES = lib@ORTE_LIB_PREFIX@open-orted-mpir.la
|
||||||
|
lib@ORTE_LIB_PREFIX@open_orted_mpir_la_SOURCES = \
|
||||||
|
orted_mpir_breakpoint.c \
|
||||||
|
orted_mpir.h
|
||||||
|
-lib@ORTE_LIB_PREFIX@open_orted_mpir_la_LDFLAGS = -avoid-version
|
||||||
|
+lib@ORTE_LIB_PREFIX@open_orted_mpir_la_LDFLAGS = -version-info $(libopen_rte_so_version)
|
80
test-datatype-partial.c-fix-compiler-warnings.patch
Normal file
80
test-datatype-partial.c-fix-compiler-warnings.patch
Normal file
@ -0,0 +1,80 @@
|
|||||||
|
commit e74008f6c67c104f1eb59c488e2c22c0302c87e0
|
||||||
|
Author: Jeff Squyres <jsquyres@cisco.com>
|
||||||
|
Date: Fri Nov 18 06:50:24 2022 -0500
|
||||||
|
|
||||||
|
test/datatype/partial.c: fix compiler warnings
|
||||||
|
|
||||||
|
There are a bunch of other warnings in tests, but I was recently
|
||||||
|
working with a user in this specific test, and the warnings annoyed
|
||||||
|
me. So I fixed them in this test (but not other tests).
|
||||||
|
|
||||||
|
Signed-off-by: Jeff Squyres <jsquyres@cisco.com>
|
||||||
|
(cherry picked from commit 98abc08a6e2a0a4181a823c1b81a238964710240)
|
||||||
|
|
||||||
|
diff --git test/datatype/partial.c test/datatype/partial.c
|
||||||
|
index c064db7193dd..15ea0cad7800 100644
|
||||||
|
--- test/datatype/partial.c
|
||||||
|
+++ test/datatype/partial.c
|
||||||
|
@@ -5,6 +5,7 @@
|
||||||
|
* reserved.
|
||||||
|
* Copyright (c) 2018 Triad National Security, LLC. All rights
|
||||||
|
* reserved.
|
||||||
|
+ * Copyright (c) 2022 Cisco Systems, Inc. All rights reserved.
|
||||||
|
* $COPYRIGHT$
|
||||||
|
*
|
||||||
|
* Additional copyrights may follow
|
||||||
|
@@ -52,7 +53,7 @@ static void show_neighborhood(double* ptr, int how_many, bool show_hex)
|
||||||
|
printf("\n : ");
|
||||||
|
for( i = -how_many; i < how_many; i++ ) {
|
||||||
|
if( 0 == i ) printf(" <");
|
||||||
|
- for( int j = 0; j < sizeof(double); j++ ) {
|
||||||
|
+ for( size_t j = 0; j < sizeof(double); j++ ) {
|
||||||
|
printf("%02x", cptr[i * sizeof(double)+j]);
|
||||||
|
}
|
||||||
|
if( 0 == i ) printf("> ");
|
||||||
|
@@ -71,7 +72,7 @@ static void show_neighborhood(double* ptr, int how_many, bool show_hex)
|
||||||
|
|
||||||
|
int main( int argc, char* argv[] )
|
||||||
|
{
|
||||||
|
- opal_datatype_t* vector;
|
||||||
|
+ ompi_datatype_t* vector;
|
||||||
|
ompi_datatype_t* base;
|
||||||
|
uint32_t iov_count;
|
||||||
|
size_t max_data, size, length;
|
||||||
|
@@ -88,13 +89,13 @@ int main( int argc, char* argv[] )
|
||||||
|
ompi_datatype_create_vector(TYPE_COUNT, TYPE_BLEN, TYPE_STRIDE, MPI_DOUBLE, &base);
|
||||||
|
ompi_datatype_create_contiguous(CONT_COUNT, base, &vector);
|
||||||
|
|
||||||
|
- opal_datatype_commit( vector );
|
||||||
|
+ opal_datatype_commit(&vector->super);
|
||||||
|
|
||||||
|
ompi_datatype_dump(vector);
|
||||||
|
|
||||||
|
- opal_datatype_type_size(vector, &size);
|
||||||
|
- opal_datatype_type_extent(vector, &extent);
|
||||||
|
- opal_datatype_type_extent(base, &base_extent);
|
||||||
|
+ opal_datatype_type_size(&vector->super, &size);
|
||||||
|
+ opal_datatype_type_extent(&vector->super, &extent);
|
||||||
|
+ opal_datatype_type_extent(&base->super, &base_extent);
|
||||||
|
|
||||||
|
array = (double*)malloc( extent * COUNT );
|
||||||
|
packed = (double*)malloc( size * COUNT );
|
||||||
|
@@ -113,7 +114,7 @@ int main( int argc, char* argv[] )
|
||||||
|
* of the buffered operation.
|
||||||
|
*/
|
||||||
|
convertor = opal_convertor_create( opal_local_arch, 0 );
|
||||||
|
- opal_convertor_prepare_for_recv( convertor, vector, COUNT, array );
|
||||||
|
+ opal_convertor_prepare_for_recv(convertor, &vector->super, COUNT, array);
|
||||||
|
|
||||||
|
for( length = 0; length < (size * COUNT); ) {
|
||||||
|
iov[0].iov_base = bpacked + length;
|
||||||
|
@@ -124,7 +125,8 @@ int main( int argc, char* argv[] )
|
||||||
|
opal_convertor_unpack( convertor, iov, &iov_count, &max_data );
|
||||||
|
length += max_data;
|
||||||
|
|
||||||
|
- int idx = 0, checked = 0;
|
||||||
|
+ int idx = 0;
|
||||||
|
+ size_t checked = 0;
|
||||||
|
for( int m = 0; m < COUNT; m++ ) {
|
||||||
|
char* mptr = (char*)array + m * extent;
|
||||||
|
for( int k = 0; k < CONT_COUNT; k++ ) {
|
Loading…
Reference in New Issue
Block a user