Sync from SUSE:ALP:Source:Standard:1.0 openmpi3 revision 56d0e18e68cd0578aefcd56822ab3531
This commit is contained in:
commit
f3b360fa79
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
|
30
Always-include-the-stddef.h-header.patch
Normal file
30
Always-include-the-stddef.h-header.patch
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
commit 14fde40ec7066c788b27fac7d6de64e8ada43520
|
||||||
|
Author: George Bosilca <bosilca@icl.utk.edu>
|
||||||
|
Date: Fri Mar 12 13:38:10 2021 -0500
|
||||||
|
|
||||||
|
Always include the stddef.h header.
|
||||||
|
|
||||||
|
Signed-off-by: George Bosilca <bosilca@icl.utk.edu>
|
||||||
|
|
||||||
|
diff --git configure.ac configure.ac
|
||||||
|
index f553cff725af..fa1adf12bd2c 100644
|
||||||
|
--- configure.ac
|
||||||
|
+++ configure.ac
|
||||||
|
@@ -1290,10 +1290,13 @@ OPAL_SETUP_WRAPPER_FINAL
|
||||||
|
# autoconf macro defines in mpi.h. Since AC sometimes changes whether
|
||||||
|
# things are defined as null tokens or an integer result, two projects
|
||||||
|
# with different versions of AC can cause problems.
|
||||||
|
-if test $ac_cv_header_stdc = yes; then
|
||||||
|
- AC_DEFINE(OPAL_STDC_HEADERS, 1,
|
||||||
|
- [Do not use outside of mpi.h. Define to 1 if you have the ANSI C header files.])
|
||||||
|
-fi
|
||||||
|
+
|
||||||
|
+# According to the autoconf 2.67 documentation the AC_HEADER_STDC macro,
|
||||||
|
+# and therefore the ac_cv_header_stdc cache variable, is obsolescent, as
|
||||||
|
+# current systems have conforming header files. Instead of removing the
|
||||||
|
+# protection completely, let's just make sure it is always on.
|
||||||
|
+AC_DEFINE(OPAL_STDC_HEADERS, 1,
|
||||||
|
+ [Do not use outside of mpi.h. Define to 1 if you have the ANSI C header files.])
|
||||||
|
if test $ac_cv_header_sys_time_h = yes ; then
|
||||||
|
AC_DEFINE(OPAL_HAVE_SYS_TIME_H, 1,
|
||||||
|
[Do not use outside of mpi.h. Define to 1 if you have the <sys/time.h> header file.])
|
38
Build-warning-stringop-overflow-in.patch
Normal file
38
Build-warning-stringop-overflow-in.patch
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
commit 8c2b56a209b309e07058c48780339804cb4bdbb0
|
||||||
|
Author: John L. Jolly <jjolly@suse.com>
|
||||||
|
Date: Tue May 22 10:04:40 2018 -0600
|
||||||
|
|
||||||
|
- Build warning: stringop-overflow in
|
||||||
|
get_dynamic_win_info() at osc_ucx_comm.c
|
||||||
|
|
||||||
|
In file included from /usr/include/string.h:494:0,
|
||||||
|
from ../../../../ompi/info/info.h:29,
|
||||||
|
from ../../../../ompi/mca/osc/base/base.h:24,
|
||||||
|
from osc_ucx_comm.c:13:
|
||||||
|
In function 'memcpy',
|
||||||
|
inlined from 'get_dynamic_win_info' at osc_ucx_comm.c:359:5,
|
||||||
|
inlined from 'ompi_osc_ucx_put' at osc_ucx_comm.c:401:18:
|
||||||
|
/usr/include/bits/string_fortified.h:34:10: warning: '__builtin___memcpy_chk' writing 8 bytes into a region of size 4 overflows the destination [-Wstringop-overflow=]
|
||||||
|
return __builtin___memcpy_chk (__dest, __src, __len, __bos0 (__dest));
|
||||||
|
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
This is caused by a type size mismatch in a call to memcpy
|
||||||
|
|
||||||
|
This fix corrects the type definition of the win_count variable.
|
||||||
|
|
||||||
|
Signed-off-by: John Jolly <jjolly@suse.com>
|
||||||
|
|
||||||
|
diff --git ompi/mca/osc/ucx/osc_ucx_comm.c ompi/mca/osc/ucx/osc_ucx_comm.c
|
||||||
|
index 22f4ce1e9430..e9e2b40f8222 100644
|
||||||
|
--- ompi/mca/osc/ucx/osc_ucx_comm.c
|
||||||
|
+++ ompi/mca/osc/ucx/osc_ucx_comm.c
|
||||||
|
@@ -332,7 +332,8 @@ static inline int get_dynamic_win_info(uint64_t remote_addr, ompi_osc_ucx_module
|
||||||
|
size_t len = sizeof(uint64_t) + sizeof(ompi_osc_dynamic_win_info_t) * OMPI_OSC_UCX_ATTACH_MAX;
|
||||||
|
char *temp_buf = malloc(len);
|
||||||
|
ompi_osc_dynamic_win_info_t *temp_dynamic_wins;
|
||||||
|
- int win_count, contain, insert = -1;
|
||||||
|
+ uint64_t win_count;
|
||||||
|
+ int contain, insert = -1;
|
||||||
|
ucs_status_t status;
|
||||||
|
|
||||||
|
if ((module->win_info_array[target]).rkey_init == true) {
|
@ -0,0 +1,23 @@
|
|||||||
|
commit eef11c98b878e63c4742523a965da5d91f62d73b
|
||||||
|
Author: Christoph Niethammer <niethammer@hlrs.de>
|
||||||
|
Date: Tue Jan 19 22:56:19 2021 +0100
|
||||||
|
|
||||||
|
Fix error with stricter quoting requirements of autoconf-2.70
|
||||||
|
|
||||||
|
Signed-off-by: Christoph Niethammer <niethammer@hlrs.de>
|
||||||
|
|
||||||
|
diff --git config/opal_check_cuda.m4 config/opal_check_cuda.m4
|
||||||
|
index fd7816e3ea7a..67059a8c851e 100644
|
||||||
|
--- config/opal_check_cuda.m4
|
||||||
|
+++ config/opal_check_cuda.m4
|
||||||
|
@@ -91,8 +91,8 @@ AS_IF([test "$opal_check_cuda_happy" = "yes"],
|
||||||
|
# If we have CUDA support, check to see if we have support for SYNC_MEMOPS
|
||||||
|
# which was first introduced in CUDA 6.0.
|
||||||
|
AS_IF([test "$opal_check_cuda_happy"="yes"],
|
||||||
|
- AC_CHECK_DECL([CU_POINTER_ATTRIBUTE_SYNC_MEMOPS], [CUDA_SYNC_MEMOPS=1], [CUDA_SYNC_MEMOPS=0],
|
||||||
|
- [#include <$opal_cuda_incdir/cuda.h>]),
|
||||||
|
+ [AC_CHECK_DECL([CU_POINTER_ATTRIBUTE_SYNC_MEMOPS], [CUDA_SYNC_MEMOPS=1], [CUDA_SYNC_MEMOPS=0],
|
||||||
|
+ [#include <$opal_cuda_incdir/cuda.h>])],
|
||||||
|
[])
|
||||||
|
|
||||||
|
# If we have CUDA support, check to see if we have CUDA 6.0 or later.
|
@ -0,0 +1,35 @@
|
|||||||
|
commit b80cf0f5de7720f71189f594125f986193c12f81
|
||||||
|
Author: Nicolas Morey-Chaisemartin <nmoreychaisemartin@suse.com>
|
||||||
|
Date: Tue Jul 12 09:36:25 2022 +0200
|
||||||
|
|
||||||
|
Revert "hwloc: bring back the configure error when external hwloc is >= 2.0"
|
||||||
|
|
||||||
|
This reverts commit 9eb37be46c75662eb4f6c945144121e3e55360be.
|
||||||
|
|
||||||
|
diff --git opal/mca/hwloc/external/configure.m4 opal/mca/hwloc/external/configure.m4
|
||||||
|
index d951c9a92f1b..411d8ad1c1f2 100644
|
||||||
|
--- opal/mca/hwloc/external/configure.m4
|
||||||
|
+++ opal/mca/hwloc/external/configure.m4
|
||||||
|
@@ -184,21 +184,7 @@ AC_DEFUN([MCA_opal_hwloc_external_CONFIG],[
|
||||||
|
[AC_MSG_RESULT([yes])],
|
||||||
|
[AC_MSG_RESULT([no])
|
||||||
|
AC_MSG_ERROR([Cannot continue])])
|
||||||
|
- AC_MSG_CHECKING([if external hwloc version is lower than 2.0])
|
||||||
|
- AS_IF([test "$opal_hwloc_dir" != ""],
|
||||||
|
- [opal_hwloc_external_CFLAGS_save=$CFLAGS
|
||||||
|
- CFLAGS="-I$opal_hwloc_dir/include $opal_hwloc_external_CFLAGS_save"])
|
||||||
|
- AC_COMPILE_IFELSE(
|
||||||
|
- [AC_LANG_PROGRAM([[#include <hwloc.h>]],
|
||||||
|
- [[
|
||||||
|
-#if HWLOC_API_VERSION >= 0x00020000
|
||||||
|
-#error "hwloc API version is greater or equal than 0x00020000"
|
||||||
|
-#endif
|
||||||
|
- ]])],
|
||||||
|
- [AC_MSG_RESULT([yes])],
|
||||||
|
- [AC_MSG_RESULT([no])
|
||||||
|
- AC_MSG_ERROR([OMPI does not currently support hwloc v2 API
|
||||||
|
-Cannot continue])])
|
||||||
|
+
|
||||||
|
AS_IF([test "$opal_hwloc_dir" != ""],
|
||||||
|
[CFLAGS=$opal_hwloc_external_CFLAGS_save])
|
||||||
|
|
13
_constraints
Normal file
13
_constraints
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
<constraints>
|
||||||
|
<overwrite>
|
||||||
|
<conditions>
|
||||||
|
<arch>ppc64le</arch>
|
||||||
|
</conditions>
|
||||||
|
<hardware>
|
||||||
|
<disk>
|
||||||
|
<size unit="G">4</size>
|
||||||
|
</disk>
|
||||||
|
</hardware>
|
||||||
|
</overwrite>
|
||||||
|
</constraints>
|
||||||
|
|
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">ea348728b4c856973b48252c8b843078b4784cc3</param>
|
||||||
|
</service>
|
||||||
|
<service name="recompress" mode="disabled">
|
||||||
|
<param name="file">openmpi*.tar</param>
|
||||||
|
<param name="compression">bz2</param>
|
||||||
|
</service>
|
||||||
|
</services>
|
55
btl-openib-Add-support-for-newer-hardware.patch
Normal file
55
btl-openib-Add-support-for-newer-hardware.patch
Normal file
@ -0,0 +1,55 @@
|
|||||||
|
commit 64434b46183221882cb767dc29b25cc90576b9ef
|
||||||
|
Author: Nicolas Morey-Chaisemartin <nmoreychaisemartin@suse.com>
|
||||||
|
Date: Tue Sep 13 15:48:59 2022 +0200
|
||||||
|
|
||||||
|
btl: openib: Add support for newer hardware
|
||||||
|
|
||||||
|
- ConnectX4 VF
|
||||||
|
- ConnectX5 VF
|
||||||
|
- ConnectX6 VF
|
||||||
|
- New broadcom PCI Ids
|
||||||
|
|
||||||
|
Signed-off-by: Nicolas Morey-Chaisemartin <nmoreychaisemartin@suse.com>
|
||||||
|
|
||||||
|
fix
|
||||||
|
|
||||||
|
diff --git opal/mca/btl/openib/mca-btl-openib-device-params.ini opal/mca/btl/openib/mca-btl-openib-device-params.ini
|
||||||
|
index b51a7dcdde78..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
|
||||||
|
@@ -345,7 +345,7 @@ max_inline_data = 72
|
||||||
|
|
||||||
|
[Broadcom BCM57XXX]
|
||||||
|
vendor_id = 0x14e4
|
||||||
|
-vendor_part_id = 0x1605,0x1606,0x1614,0x16c0,0x16c1,0x16ce,0x16cf,0x16d6,0x16d7,0x16d8,0x16d9,0x16df,0x16e2,0x16e3,0x16e5,0x16eb,0x16ed,0x16ef,0x16f0,0x16f1,0x1750
|
||||||
|
+vendor_part_id = 0x1605,0x1606,0x1614,0x16c0,0x16c1,0x16ce,0x16cf,0x16d6,0x16d7,0x16d8,0x16d9,0x16df,0x16e2,0x16e3,0x16e5,0x16eb,0x16ed,0x16ef,0x16f0,0x16f1
|
||||||
|
use_eager_rdma = 1
|
||||||
|
mtu = 1024
|
||||||
|
receive_queues = P,65536,256,192,128
|
47
fix-rdma-component-selection.patch
Normal file
47
fix-rdma-component-selection.patch
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
commit 923ca7c6424d0cf0b5139be316b651d54d90d5f5
|
||||||
|
Author: Nicolas Morey-Chaisemartin <nmoreychaisemartin@suse.com>
|
||||||
|
Date: Wed Mar 28 11:17:17 2018 +0200
|
||||||
|
|
||||||
|
fix rdma component selection
|
||||||
|
|
||||||
|
Github issue#4976
|
||||||
|
bsc#1087031
|
||||||
|
|
||||||
|
Signed-off-by: Nicolas Morey-Chaisemartin <nmoreychaisemartin@suse.com>
|
||||||
|
|
||||||
|
diff --git ompi/mca/osc/rdma/osc_rdma_component.c ompi/mca/osc/rdma/osc_rdma_component.c
|
||||||
|
index 45da5aafab4d..9cb8535683c1 100644
|
||||||
|
--- ompi/mca/osc/rdma/osc_rdma_component.c
|
||||||
|
+++ ompi/mca/osc/rdma/osc_rdma_component.c
|
||||||
|
@@ -355,6 +355,8 @@ static int ompi_osc_rdma_component_query (struct ompi_win_t *win, void **base, s
|
||||||
|
int flavor)
|
||||||
|
{
|
||||||
|
|
||||||
|
+ int rc;
|
||||||
|
+
|
||||||
|
if (MPI_WIN_FLAVOR_SHARED == flavor) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
@@ -368,15 +370,18 @@ static int ompi_osc_rdma_component_query (struct ompi_win_t *win, void **base, s
|
||||||
|
}
|
||||||
|
#endif /* OPAL_CUDA_SUPPORT */
|
||||||
|
|
||||||
|
- if (OMPI_SUCCESS == ompi_osc_rdma_query_mtls ()) {
|
||||||
|
+ rc = ompi_osc_rdma_query_mtls ();
|
||||||
|
+ rc = comm->c_coll->coll_allreduce(MPI_IN_PLACE, &rc, 1, MPI_INT, MPI_MIN, comm, comm->c_coll->coll_allreduce_module);
|
||||||
|
+ if (OMPI_SUCCESS == rc) {
|
||||||
|
return 5; /* this has to be lower that osc pt2pt default priority */
|
||||||
|
}
|
||||||
|
-
|
||||||
|
- if (OMPI_SUCCESS != ompi_osc_rdma_query_btls (comm, NULL)) {
|
||||||
|
+
|
||||||
|
+ rc = ompi_osc_rdma_query_btls (comm, NULL);
|
||||||
|
+ rc = comm->c_coll->coll_allreduce(MPI_IN_PLACE, &rc, 1, MPI_INT, MPI_MIN, comm, comm->c_coll->coll_allreduce_module);
|
||||||
|
+ if (OMPI_SUCCESS != rc) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
-
|
||||||
|
return mca_osc_rdma_component.priority;
|
||||||
|
}
|
||||||
|
|
74
hwloc-fix-hwloc-shmem.h-in-the-external-case.patch
Normal file
74
hwloc-fix-hwloc-shmem.h-in-the-external-case.patch
Normal file
@ -0,0 +1,74 @@
|
|||||||
|
commit 6a2d129fd28ca90c5c3f857eeb5ff933abc33470
|
||||||
|
Author: Brice Goglin <Brice.Goglin@inria.fr>
|
||||||
|
Date: Fri Jan 26 15:44:15 2018 +0100
|
||||||
|
|
||||||
|
hwloc: fix hwloc/shmem.h in the external case
|
||||||
|
|
||||||
|
Signed-off-by: Brice Goglin <Brice.Goglin@inria.fr>
|
||||||
|
|
||||||
|
diff --git opal/mca/hwloc/base/hwloc_base_util.c opal/mca/hwloc/base/hwloc_base_util.c
|
||||||
|
index f8ca72c182d1..dd483a7dc1be 100644
|
||||||
|
--- opal/mca/hwloc/base/hwloc_base_util.c
|
||||||
|
+++ opal/mca/hwloc/base/hwloc_base_util.c
|
||||||
|
@@ -27,6 +27,7 @@
|
||||||
|
* $HEADER$
|
||||||
|
*/
|
||||||
|
|
||||||
|
+#define OPAL_HWLOC_WANT_SHMEM 1
|
||||||
|
|
||||||
|
#include "opal_config.h"
|
||||||
|
|
||||||
|
diff --git opal/mca/hwloc/external/configure.m4 opal/mca/hwloc/external/configure.m4
|
||||||
|
index 411d8ad1c1f2..b8214099ef84 100644
|
||||||
|
--- opal/mca/hwloc/external/configure.m4
|
||||||
|
+++ opal/mca/hwloc/external/configure.m4
|
||||||
|
@@ -63,12 +63,17 @@ AC_DEFUN([MCA_opal_hwloc_external_POST_CONFIG],[
|
||||||
|
# the MCA_hwloc_external_openfabrics_helper define).
|
||||||
|
AS_IF([test "$opal_hwloc_dir" != ""],
|
||||||
|
[opal_hwloc_include="$opal_hwloc_dir/include/hwloc.h"
|
||||||
|
+ opal_hwloc_shmem_include="$opal_hwloc_dir/include/hwloc/shmem.h",
|
||||||
|
opal_hwloc_openfabrics_include="$opal_hwloc_dir/include/hwloc/openfabrics-verbs.h"],
|
||||||
|
[opal_hwloc_include="hwloc.h"
|
||||||
|
+ opal_hwloc_shmem_include="hwloc/shmem.h"
|
||||||
|
opal_hwloc_openfabrics_include="hwloc/openfabrics-verbs.h"])
|
||||||
|
AC_DEFINE_UNQUOTED(MCA_hwloc_external_header,
|
||||||
|
["$opal_hwloc_include"],
|
||||||
|
[Location of external hwloc header])
|
||||||
|
+ AC_DEFINE_UNQUOTED(MCA_hwloc_external_shmem_header,
|
||||||
|
+ ["$opal_hwloc_shmem_include"],
|
||||||
|
+ [Location of external hwloc shmem header])
|
||||||
|
AC_DEFINE_UNQUOTED(MCA_hwloc_external_openfabrics_header,
|
||||||
|
["$opal_hwloc_openfabrics_include"],
|
||||||
|
[Location of external hwloc OpenFabrics header])
|
||||||
|
diff --git opal/mca/hwloc/external/external.h opal/mca/hwloc/external/external.h
|
||||||
|
index 6558a0bcbd14..0e1a91fcf470 100644
|
||||||
|
--- opal/mca/hwloc/external/external.h
|
||||||
|
+++ opal/mca/hwloc/external/external.h
|
||||||
|
@@ -43,6 +43,14 @@ BEGIN_C_DECLS
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
+#if defined(OPAL_HWLOC_WANT_SHMEM) && OPAL_HWLOC_WANT_SHMEM
|
||||||
|
+# if HWLOC_API_VERSION >= 0x20000
|
||||||
|
+# include MCA_hwloc_external_shmem_header
|
||||||
|
+# else
|
||||||
|
+# error Tried to include hwloc shmem header, but hwloc < 2.0 found
|
||||||
|
+# endif
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
#if HWLOC_API_VERSION < 0x00010b00
|
||||||
|
#define HWLOC_OBJ_NUMANODE HWLOC_OBJ_NODE
|
||||||
|
#define HWLOC_OBJ_PACKAGE HWLOC_OBJ_SOCKET
|
||||||
|
diff --git orte/mca/rtc/hwloc/rtc_hwloc.c orte/mca/rtc/hwloc/rtc_hwloc.c
|
||||||
|
index b832d4cf6bc9..8acdf572b577 100644
|
||||||
|
--- orte/mca/rtc/hwloc/rtc_hwloc.c
|
||||||
|
+++ orte/mca/rtc/hwloc/rtc_hwloc.c
|
||||||
|
@@ -9,6 +9,8 @@
|
||||||
|
* $HEADER$
|
||||||
|
*/
|
||||||
|
|
||||||
|
+#define OPAL_HWLOC_WANT_SHMEM 1
|
||||||
|
+
|
||||||
|
#include "orte_config.h"
|
||||||
|
#include "orte/constants.h"
|
||||||
|
#include "orte/types.h"
|
134
hwloc-updates-for-hwloc-2.0.x-API.patch
Normal file
134
hwloc-updates-for-hwloc-2.0.x-API.patch
Normal file
@ -0,0 +1,134 @@
|
|||||||
|
commit 287d7866d3bd70c1a8d412ffb8e6b12cd7e903d5
|
||||||
|
Author: Jeff Squyres <jsquyres@cisco.com>
|
||||||
|
Date: Thu Jan 4 09:58:50 2018 -0800
|
||||||
|
|
||||||
|
hwloc: updates for hwloc 2.0.x API
|
||||||
|
|
||||||
|
Signed-off-by: Jeff Squyres <jsquyres@cisco.com>
|
||||||
|
|
||||||
|
diff --git opal/mca/btl/openib/btl_openib_component.c opal/mca/btl/openib/btl_openib_component.c
|
||||||
|
index c482dcdbcda7..facf338a5373 100644
|
||||||
|
--- opal/mca/btl/openib/btl_openib_component.c
|
||||||
|
+++ opal/mca/btl/openib/btl_openib_component.c
|
||||||
|
@@ -10,7 +10,7 @@
|
||||||
|
* University of Stuttgart. All rights reserved.
|
||||||
|
* Copyright (c) 2004-2005 The Regents of the University of California.
|
||||||
|
* All rights reserved.
|
||||||
|
- * Copyright (c) 2006-2017 Cisco Systems, Inc. All rights reserved
|
||||||
|
+ * Copyright (c) 2006-2018 Cisco Systems, Inc. All rights reserved
|
||||||
|
* Copyright (c) 2006-2015 Mellanox Technologies. All rights reserved.
|
||||||
|
* Copyright (c) 2006-2015 Los Alamos National Security, LLC. All rights
|
||||||
|
* reserved.
|
||||||
|
@@ -1524,7 +1524,11 @@ static uint64_t calculate_total_mem (void)
|
||||||
|
if (NULL == machine) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
+#if HWLOC_API_VERSION < 0x20000
|
||||||
|
return machine->memory.total_memory;
|
||||||
|
+#else
|
||||||
|
+ return machine->total_memory;
|
||||||
|
+#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
/* couldn't find it */
|
||||||
|
diff --git opal/mca/hwloc/base/hwloc_base_util.c opal/mca/hwloc/base/hwloc_base_util.c
|
||||||
|
index dd483a7dc1be..61d8b779888c 100644
|
||||||
|
--- opal/mca/hwloc/base/hwloc_base_util.c
|
||||||
|
+++ opal/mca/hwloc/base/hwloc_base_util.c
|
||||||
|
@@ -10,7 +10,7 @@
|
||||||
|
* University of Stuttgart. All rights reserved.
|
||||||
|
* Copyright (c) 2004-2005 The Regents of the University of California.
|
||||||
|
* All rights reserved.
|
||||||
|
- * Copyright (c) 2011-2017 Cisco Systems, Inc. All rights reserved
|
||||||
|
+ * Copyright (c) 2011-2018 Cisco Systems, Inc. All rights reserved
|
||||||
|
* Copyright (c) 2012-2017 Los Alamos National Security, LLC.
|
||||||
|
* All rights reserved.
|
||||||
|
* Copyright (c) 2013-2018 Intel, Inc. All rights reserved.
|
||||||
|
@@ -59,6 +59,11 @@
|
||||||
|
#include "opal/mca/hwloc/hwloc-internal.h"
|
||||||
|
#include "opal/mca/hwloc/base/base.h"
|
||||||
|
|
||||||
|
+#if HWLOC_API_VERSION >= 0x20000
|
||||||
|
+// JMS Is this right?
|
||||||
|
+#include "hwloc/shmem.h"
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
static bool topo_in_shmem = false;
|
||||||
|
|
||||||
|
/*
|
||||||
|
@@ -154,7 +159,7 @@ int opal_hwloc_base_filter_cpus(hwloc_topology_t topo)
|
||||||
|
avail = hwloc_bitmap_alloc();
|
||||||
|
hwloc_bitmap_and(avail, root->online_cpuset, root->allowed_cpuset);
|
||||||
|
#else
|
||||||
|
- avail = hwloc_bitmap_dup(root->allowed_cpuset);
|
||||||
|
+ avail = hwloc_bitmap_dup(root->cpuset);
|
||||||
|
#endif
|
||||||
|
OPAL_OUTPUT_VERBOSE((5, opal_hwloc_base_framework.framework_output,
|
||||||
|
"hwloc:base: no cpus specified - using root available cpuset"));
|
||||||
|
@@ -178,7 +183,7 @@ int opal_hwloc_base_filter_cpus(hwloc_topology_t topo)
|
||||||
|
hwloc_bitmap_and(pucpus, pu->online_cpuset, pu->allowed_cpuset);
|
||||||
|
#else
|
||||||
|
hwloc_bitmap_free(pucpus);
|
||||||
|
- pucpus = hwloc_bitmap_dup(pu->allowed_cpuset);
|
||||||
|
+ pucpus = hwloc_bitmap_dup(pu->cpuset);
|
||||||
|
#endif
|
||||||
|
hwloc_bitmap_or(res, avail, pucpus);
|
||||||
|
hwloc_bitmap_copy(avail, res);
|
||||||
|
@@ -200,7 +205,7 @@ int opal_hwloc_base_filter_cpus(hwloc_topology_t topo)
|
||||||
|
hwloc_bitmap_and(pucpus, pu->online_cpuset, pu->allowed_cpuset);
|
||||||
|
#else
|
||||||
|
hwloc_bitmap_free(pucpus);
|
||||||
|
- pucpus = hwloc_bitmap_dup(pu->allowed_cpuset);
|
||||||
|
+ pucpus = hwloc_bitmap_dup(pu->cpuset);
|
||||||
|
#endif
|
||||||
|
hwloc_bitmap_or(res, avail, pucpus);
|
||||||
|
hwloc_bitmap_copy(avail, res);
|
||||||
|
diff --git orte/mca/rtc/hwloc/rtc_hwloc.c orte/mca/rtc/hwloc/rtc_hwloc.c
|
||||||
|
index 8acdf572b577..16d5b825e0c7 100644
|
||||||
|
--- orte/mca/rtc/hwloc/rtc_hwloc.c
|
||||||
|
+++ orte/mca/rtc/hwloc/rtc_hwloc.c
|
||||||
|
@@ -1,6 +1,6 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2014-2017 Intel, Inc. All rights reserved.
|
||||||
|
- * Copyright (c) 2017 Cisco Systems, Inc. All rights reserved
|
||||||
|
+ * Copyright (c) 2017-2018 Cisco Systems, Inc. All rights reserved
|
||||||
|
* Copyright (c) 2017 Inria. All rights reserved.
|
||||||
|
* $COPYRIGHT$
|
||||||
|
*
|
||||||
|
@@ -50,6 +50,11 @@
|
||||||
|
#include "orte/mca/rtc/base/base.h"
|
||||||
|
#include "rtc_hwloc.h"
|
||||||
|
|
||||||
|
+#if HWLOC_API_VERSION >= 0x20000
|
||||||
|
+// JMS Is this right?
|
||||||
|
+#include "hwloc/shmem.h"
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
static int init(void);
|
||||||
|
static void finalize(void);
|
||||||
|
static void assign(orte_job_t *jdata);
|
||||||
|
diff --git orte/orted/pmix/pmix_server_register_fns.c orte/orted/pmix/pmix_server_register_fns.c
|
||||||
|
index 25fb26475918..ff98f6de59cb 100644
|
||||||
|
--- orte/orted/pmix/pmix_server_register_fns.c
|
||||||
|
+++ orte/orted/pmix/pmix_server_register_fns.c
|
||||||
|
@@ -11,7 +11,7 @@
|
||||||
|
* All rights reserved.
|
||||||
|
* Copyright (c) 2006-2013 Los Alamos National Security, LLC.
|
||||||
|
* All rights reserved.
|
||||||
|
- * Copyright (c) 2009 Cisco Systems, Inc. All rights reserved.
|
||||||
|
+ * Copyright (c) 2009-2018 Cisco Systems, Inc. All rights reserved
|
||||||
|
* Copyright (c) 2011 Oak Ridge National Labs. All rights reserved.
|
||||||
|
* Copyright (c) 2013-2017 Intel, Inc. All rights reserved.
|
||||||
|
* Copyright (c) 2014 Mellanox Technologies, Inc.
|
||||||
|
@@ -276,7 +276,11 @@ int orte_pmix_server_register_nspace(orte_job_t *jdata, bool force)
|
||||||
|
kv = OBJ_NEW(opal_value_t);
|
||||||
|
kv->key = strdup(OPAL_PMIX_AVAIL_PHYS_MEMORY);
|
||||||
|
kv->type = OPAL_UINT64;
|
||||||
|
+#if HWLOC_API_VERSION < 0x20000
|
||||||
|
kv->data.uint64 = machine->memory.total_memory;
|
||||||
|
+#else
|
||||||
|
+ kv->data.uint64 = machine->total_memory;
|
||||||
|
+#endif
|
||||||
|
opal_list_append(info, &kv->super);
|
||||||
|
}
|
||||||
|
|
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
|
||||||
|
|
24
memory-patcher-fix-compiler-warning.patch
Normal file
24
memory-patcher-fix-compiler-warning.patch
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
commit a0242346788a31050effb025b43da5f3e6a1bb9b
|
||||||
|
Author: Maxwell Coil <mcoil@nd.edu>
|
||||||
|
Date: Sun Dec 8 13:56:00 2019 -0500
|
||||||
|
|
||||||
|
memory/patcher: fix compiler warning
|
||||||
|
|
||||||
|
syscall() returns a long, but we are invoking shmat(), which returns
|
||||||
|
a void*.
|
||||||
|
|
||||||
|
Signed-off-by: Maxwell Coil <mcoil@nd.edu>
|
||||||
|
|
||||||
|
diff --git opal/mca/memory/patcher/memory_patcher_component.c opal/mca/memory/patcher/memory_patcher_component.c
|
||||||
|
index 687d430fa362..272ec721225b 100644
|
||||||
|
--- opal/mca/memory/patcher/memory_patcher_component.c
|
||||||
|
+++ opal/mca/memory/patcher/memory_patcher_component.c
|
||||||
|
@@ -440,7 +440,7 @@ static void *_intercept_shmat(int shmid, const void *shmaddr, int shmflg)
|
||||||
|
|
||||||
|
if (!original_shmat) {
|
||||||
|
#if defined(SYS_shmat)
|
||||||
|
- result = memory_patcher_syscall(SYS_shmat, shmid, shmaddr, shmflg);
|
||||||
|
+ result = (void*) memory_patcher_syscall(SYS_shmat, shmid, shmaddr, shmflg);
|
||||||
|
#else // IPCOP_shmat
|
||||||
|
unsigned long ret;
|
||||||
|
ret = memory_patcher_syscall(SYS_ipc, IPCOP_shmat,
|
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-3.1.6.0.ea348728b4c8.tar.bz2
(Stored with Git LFS)
Normal file
BIN
openmpi-3.1.6.0.ea348728b4c8.tar.bz2
(Stored with Git LFS)
Normal file
Binary file not shown.
6
openmpi3-rpmlintrc
Normal file
6
openmpi3-rpmlintrc
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
# This line is mandatory to access the configuration functions
|
||||||
|
from Config import *
|
||||||
|
|
||||||
|
addFilter("openmpi3-libs.* rpath-in-buildconfig")
|
||||||
|
addFilter("openmpi3-devel.* shared-lib-calls-exit")
|
||||||
|
addFilter("libopenmpi.* shlib-policy-name-error")
|
392
openmpi3.changes
Normal file
392
openmpi3.changes
Normal file
@ -0,0 +1,392 @@
|
|||||||
|
-------------------------------------------------------------------
|
||||||
|
Thu Nov 3 09:37:32 UTC 2022 - Nicolas Morey-Chaisemartin <nmoreychaisemartin@suse.com>
|
||||||
|
|
||||||
|
- Add rmaps-simplify-the-lookup-for-the-binding-object-and-fix-for-hwloc-2.0.patch
|
||||||
|
to fix compatibility with hwloc >= 2.0 (bsc#1204982)
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Wed Jul 6 12:29:12 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
|
||||||
|
- Add patches to fix compilation against hwloc v2.x
|
||||||
|
- Revert-hwloc-bring-back-the-configure-error-when-external-hwloc-is-2.0.patch
|
||||||
|
- hwloc-fix-hwloc-shmem.h-in-the-external-case.patch
|
||||||
|
- hwloc-updates-for-hwloc-2.0.x-API.patch
|
||||||
|
- Backport upstream patches for external PMIx support
|
||||||
|
- pmix-pmix2x-Fix-the-PMIx-discovery-logic.patch
|
||||||
|
- pmix-Fix-detection-of-Externally-built-PMIx.patch
|
||||||
|
- Update rpmlintrc file to ignore missing libname suffix in libopenmpi packages
|
||||||
|
- Add patch btl-openib-Add-support-for-newer-hardware.patch to support
|
||||||
|
newer RDMA hardware (ConnectX 4 and 5 VF, ConnectX6 PF + VF and Broadcom adapters)
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Mon Jun 13 06:38:32 UTC 2022 - Nicolas Morey-Chaisemartin <nmoreychaisemartin@suse.com>
|
||||||
|
|
||||||
|
- Backport upstream patchs to fix compilation with autoconf >= 2.70 and GCC12
|
||||||
|
- Fix-error-with-stricter-quoting-requirements-of-autoconf-2.70.patch
|
||||||
|
- Always-include-the-stddef.h-header.patch
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Mon Mar 7 16:54:42 UTC 2022 - Nicolas Morey-Chaisemartin <nmoreychaisemartin@suse.com>
|
||||||
|
|
||||||
|
- Add fix-rdma-component-selection.patch to fix bad rdma component selection
|
||||||
|
which can cause stall when running on multiple IB nodes (bsc#1196838).
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Tue Oct 19 15:24:25 UTC 2021 - Nicolas Morey-Chaisemartin <nmoreychaisemartin@suse.com>
|
||||||
|
|
||||||
|
- Move rpm macros to %_rpmmacrodir (bsc#1191390)
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Thu Jul 23 16:00:23 UTC 2020 - Egbert Eich <eich@suse.com>
|
||||||
|
|
||||||
|
- Add build support for gcc8/9/10 to HPC build (bsc#1174439).
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Fri Mar 20 11:26:15 UTC 2020 - Nicolas Morey-Chaisemartin <nmoreychaisemartin@suse.com>
|
||||||
|
|
||||||
|
- Update to openmpi3 3.1.6
|
||||||
|
- See changelog in NEWS
|
||||||
|
- Remove add-gen-p5-chip-pci-id-to-ini-file.patch that was merged upstream
|
||||||
|
- Add patch memory-patcher-fix-compiler-warning.patch to fix cast warning
|
||||||
|
causing RPM to fail building
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Thu Mar 19 08:26:16 UTC 2020 - Nicolas Morey-Chaisemartin <nmoreychaisemartin@suse.com>
|
||||||
|
|
||||||
|
- Drop different package string between SLES and Leap (jsc#SLE-11848)
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Mon Jan 13 09:56:29 UTC 2020 - Nicolas Morey-Chaisemartin <nmoreychaisemartin@suse.com>
|
||||||
|
|
||||||
|
- Have openmpi3-config provide pmix-runtime-config
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Thu Dec 5 10:36:33 UTC 2019 - Michel Normand <normand@linux.vnet.ibm.com>
|
||||||
|
|
||||||
|
- Add _constraints file for ppc64le for disk > 4G
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Thu Oct 31 16:54:27 UTC 2019 - Nicolas Morey-Chaisemartin <nmoreychaisemartin@suse.com>
|
||||||
|
|
||||||
|
- Link against libnuma (bsc#1155120)
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Tue Oct 22 09:11:49 UTC 2019 - Christian Goll <cgoll@suse.com>
|
||||||
|
|
||||||
|
- added --with-slurm (its enabled by default), but if this behavior
|
||||||
|
is changed the binding should not away
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Thu Oct 10 06:09:30 UTC 2019 - Nicolas Morey-Chaisemartin <nmoreychaisemartin@suse.com>
|
||||||
|
|
||||||
|
- Add missing Provides when openmpi3 is the default openmpi
|
||||||
|
- Add conflict with the older hpc-macros-devel providers to avoid issues during updates
|
||||||
|
- Add openmpi_prefix macro to openmpi-macros-devel
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Fri Sep 27 11:17:24 UTC 2019 - Nicolas Morey-Chaisemartin <nmoreychaisemartin@suse.com>
|
||||||
|
|
||||||
|
- Add macro file for non-hpc flavour
|
||||||
|
- Enable build on ppc64
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Fri Sep 6 11:14:12 UTC 2019 - Nicolas Morey-Chaisemartin <nmoreychaisemartin@suse.com>
|
||||||
|
|
||||||
|
- Use FAT LTO objects in order to provide proper static library.
|
||||||
|
- Mark LICENSE with %license
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Tue Apr 23 07:42:08 UTC 2019 - Nicolas Morey-Chaisemartin <nmoreychaisemartin@suse.com>
|
||||||
|
|
||||||
|
- Fix bad INCLUDE path in module (bsc#1132949)
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Fri Apr 19 05:56:35 UTC 2019 - Nicolas Morey-Chaisemartin <nmoreychaisemartin@suse.com>
|
||||||
|
|
||||||
|
- Update to openmpi 3.1.4
|
||||||
|
- See changelog in NEWS
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Mon Apr 1 05:20:04 UTC 2019 - Nicolas Morey-Chaisemartin <nmoreychaisemartin@suse.com>
|
||||||
|
|
||||||
|
- Add add-gen-p5-chip-pci-id-to-ini-file.patch:
|
||||||
|
- Adds support for Broadcom 57500 adapters (bsc#1125651)
|
||||||
|
- Update to openmpi 3.1.3
|
||||||
|
- See changelog in NEWS
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Sun Nov 18 14:27:03 UTC 2018 - eich@suse.com
|
||||||
|
|
||||||
|
- Add macro _hpc_openmpi_modules for modules support (bsc#1116458).
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Mon Sep 10 12:15:48 UTC 2018 - nmoreychaisemartin@suse.com
|
||||||
|
|
||||||
|
- Remove bashism in preun scriptlet
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Wed Sep 5 06:53:37 UTC 2018 - nmoreychaisemartin@suse.com
|
||||||
|
|
||||||
|
- Fix handling of mpi-selector during updates (bsc#1098653)
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Mon Sep 3 08:47:46 UTC 2018 - bwiedemann@suse.com
|
||||||
|
|
||||||
|
- Add reproducible.patch to drop build time and hostname to make
|
||||||
|
package build reproducible (boo#1047218, boo#1084909)
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Sun Aug 19 09:25:46 UTC 2018 - eich@suse.com
|
||||||
|
|
||||||
|
- macros.hpc-openmpi3:
|
||||||
|
replace %%compiler_family by %%hpc_compiler_family
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Thu Jul 5 12:29:43 UTC 2018 - nmoreychaisemartin@suse.com
|
||||||
|
|
||||||
|
- Update to openmpi 3.1.1
|
||||||
|
3.1.1 -- June, 2018
|
||||||
|
-------------------
|
||||||
|
- Fix potential hang in UCX PML during MPI_FINALIZE
|
||||||
|
- Update internal PMIx to v2.1.2rc2 to fix forward version compatibility.
|
||||||
|
- Add new MCA parameter osc_sm_backing_store to allow users to specify
|
||||||
|
where in the filesystem the backing file for the shared memory
|
||||||
|
one-sided component should live. Defaults to /dev/shm on Linux.
|
||||||
|
- Fix potential hang on non-x86 platforms when using builds with
|
||||||
|
optimization flags turned off.
|
||||||
|
- Disable osc/pt2pt when using MPI_THREAD_MULTIPLE due to numerous
|
||||||
|
race conditions in the component.
|
||||||
|
- Fix dummy variable names for the mpi and mpi_f08 Fortran bindings to
|
||||||
|
match the MPI standard. This may break applications which use
|
||||||
|
name-based parameters in Fortran which used our internal names
|
||||||
|
rather than those documented in the MPI standard.
|
||||||
|
- Revamp Java detection to properly handle new Java versions which do
|
||||||
|
not provide a javah wrapper.
|
||||||
|
- Fix RMA function signatures for use-mpi-f08 bindings to have the
|
||||||
|
asynchonous property on all buffers.
|
||||||
|
- Improved configure logic for finding the UCX library.
|
||||||
|
|
||||||
|
3.1.0 -- May, 2018
|
||||||
|
------------------
|
||||||
|
- Various OpenSHMEM bug fixes.
|
||||||
|
- Properly handle array_of_commands argument to Fortran version of
|
||||||
|
MPI_COMM_SPAWN_MULTIPLE.
|
||||||
|
- Fix bug with MODE_SEQUENTIAL and the sharedfp MPI-IO component.
|
||||||
|
- Use "javac -h" instead of "javah" when building the Java bindings
|
||||||
|
with a recent version of Java.
|
||||||
|
- Fix mis-handling of jostepid under SLURM that could cause problems
|
||||||
|
with PathScale/OmniPath NICs.
|
||||||
|
- Disable the POWER 7/BE block in configure. Note that POWER 7/BE is
|
||||||
|
still not a supported platform, but it is no longer automatically
|
||||||
|
disabled. See
|
||||||
|
https://github.com/open-mpi/ompi/issues/4349#issuecomment-374970982
|
||||||
|
for more information.
|
||||||
|
- The output-filename option for mpirun is now converted to an
|
||||||
|
absolute path before being passed to other nodes.
|
||||||
|
- Add monitoring component for PML, OSC, and COLL to track data
|
||||||
|
movement of MPI applications. See
|
||||||
|
ompi/mca/commmon/monitoring/HowTo_pml_monitoring.tex for more
|
||||||
|
information about the monitoring framework.
|
||||||
|
- Add support for communicator assertions: mpi_assert_no_any_tag,
|
||||||
|
mpi_assert_no_any_source, mpi_assert_exact_length, and
|
||||||
|
mpi_assert_allow_overtaking.
|
||||||
|
- Update PMIx to version 2.1.1.
|
||||||
|
- Update hwloc to 1.11.7.
|
||||||
|
- Many one-sided behavior fixes.
|
||||||
|
- Improved performance for Reduce and Allreduce using Rabenseifner's algorithm.
|
||||||
|
- Revamped mpirun --help output to make it a bit more manageable.
|
||||||
|
- Portals4 MTL improvements: Fix race condition in rendezvous protocol and
|
||||||
|
retry logic.
|
||||||
|
- UCX OSC: initial implementation.
|
||||||
|
- UCX PML improvements: add multi-threading support.
|
||||||
|
- Yalla PML improvements: Fix error with irregular contiguous datatypes.
|
||||||
|
- Openib BTL: disable XRC support by default.
|
||||||
|
- TCP BTL: Add check to detect and ignore connections from processes
|
||||||
|
that aren't MPI (such as IDS probes) and verify that source and
|
||||||
|
destination are using the same version of Open MPI, fix issue with very
|
||||||
|
large message transfer.
|
||||||
|
- ompi_info parsable output now escapes double quotes in values, and
|
||||||
|
also quotes values can contains colons. Thanks to Lev Givon for the
|
||||||
|
suggestion.
|
||||||
|
- CUDA-aware support can now handle GPUs within a node that do not
|
||||||
|
support CUDA IPC. Earlier versions would get error and abort.
|
||||||
|
- Add a mca parameter ras_base_launch_orted_on_hn to allow for launching
|
||||||
|
MPI processes on the same node where mpirun is executing using a separate
|
||||||
|
orte daemon, rather than the mpirun process. This may be useful to set to
|
||||||
|
true when using SLURM, as it improves interoperability with SLURM's signal
|
||||||
|
propagation tools. By default it is set to false, except for Cray XC systems.
|
||||||
|
- Remove LoadLeveler RAS support.
|
||||||
|
- Remove IB XRC support from the OpenIB BTL due to lack of support.
|
||||||
|
- Add functionality for IBM s390 platforms. Note that regular
|
||||||
|
regression testing does not occur on the s390 and it is not
|
||||||
|
considered a supported platform.
|
||||||
|
- Remove support for big endian PowerPC.
|
||||||
|
- Remove support for XL compilers older than v13.1.
|
||||||
|
- Remove support for atomic operations using MacOS atomics library.
|
||||||
|
- Drop btl-vader-change-the-way-fast-boxes-are-used.patch which was merged upstream
|
||||||
|
- Add Build-warning-stringop-overflow-in.patch to fix a potential buffer overflow warning.
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Wed May 2 18:24:56 UTC 2018 - eich@suse.com
|
||||||
|
|
||||||
|
- Create missing docs master package (bsc#1091714)
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Mon Mar 26 11:31:06 UTC 2018 - nmoreychaisemartin@suse.com
|
||||||
|
|
||||||
|
- Enable --enable-mpirun-prefix-by-default (bsc#1086821)
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Fri Feb 9 12:05:35 UTC 2018 - cgoll@suse.com
|
||||||
|
|
||||||
|
- Fix summary in module files (bnc#1080259)
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Tue Jan 30 20:03:24 UTC 2018 - eich@suse.com
|
||||||
|
|
||||||
|
- Use macro in mpivars.(c)sh to be independent of changes to the module
|
||||||
|
setup for the compiler (boo#1078364).
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Wed Jan 17 09:54:18 UTC 2018 - nmoreychaisemartin@suse.com
|
||||||
|
|
||||||
|
- Only build openmpi3-config for the standard flavor
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Fri Jan 5 19:02:20 UTC 2018 - eich@suse.com
|
||||||
|
|
||||||
|
- Switch from gcc6 to gcc7 as additional compiler flavor for HPC on SLES.
|
||||||
|
- Fix library package requires - use HPC macro (boo#1074890).
|
||||||
|
- Fix rpm macro file.
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Thu Dec 7 10:58:31 UTC 2017 - nmoreychaisemartin@suse.com
|
||||||
|
|
||||||
|
- Add btl-vader-change-the-way-fast-boxes-are-used.patch to
|
||||||
|
fix a SEGV on i386 systems
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Tue Oct 10 13:16:11 UTC 2017 - nmoreychaisemartin@suse.com
|
||||||
|
|
||||||
|
- Add a ringdisabled flag to allow building only the standard flavor
|
||||||
|
so not all flavors are pulled into staging rings
|
||||||
|
- Fix baselibs.conf generation (wrong directory and name)
|
||||||
|
- Fix pre/post install call to ldconfig
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Fri Oct 6 13:58:00 UTC 2017 - nmoreychaisemartin@suse.com
|
||||||
|
|
||||||
|
- Add conflicts between the macros-devel packages
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Wed Sep 27 11:59:34 UTC 2017 - nmoreychaisemartin@suse.com
|
||||||
|
|
||||||
|
- Converted to multibuild.
|
||||||
|
- Add HPC build using environment modules (FATE#321711).
|
||||||
|
- Resync spec file with openmpi and openmpi2
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Mon Sep 25 15:45:23 UTC 2017 - nmoreychaisemartin@suse.com
|
||||||
|
|
||||||
|
- Fix VERSION file during build so that ompi_info reports good infos
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Tue Sep 19 15:04:51 UTC 2017 - nmoreychaisemartin@suse.com
|
||||||
|
|
||||||
|
- Remove --disable-mca-dso
|
||||||
|
Related bug was due to openmpi/*.so wrongly packaged as devel
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Wed Sep 13 07:27:16 UTC 2017 - nmoreychaisemartin@suse.com
|
||||||
|
|
||||||
|
- Update to OpenMPI 3.0.0
|
||||||
|
- Enable fortan08 bindings
|
||||||
|
- Disable devel headers
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Mon Aug 21 11:52:26 UTC 2017 - nmoreychaisemartin@suse.com
|
||||||
|
|
||||||
|
- Update to openMPI 3.0.0rc3
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Mon Jul 3 13:05:34 UTC 2017 - nmoreychaisemartin@suse.com
|
||||||
|
|
||||||
|
- Build with openucx support
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Mon Jul 3 13:52:53 CEST 2017 - pth@suse.de
|
||||||
|
|
||||||
|
- Initial packaging of openMPI 3.0.0rc1.
|
||||||
|
* Use UCX allocator for OSHMEM symmetric heap allocations to optimize intra-node
|
||||||
|
data transfers. UCX SPML only.
|
||||||
|
* Use UCX multi-threaded API in the UCX PML. Requires UCX 1.0 or later.
|
||||||
|
* Fix file list and call fdupes.
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Wed Jun 28 06:31:04 UTC 2017 - jengelh@inai.de
|
||||||
|
|
||||||
|
- Trim filler wording from description
|
||||||
|
- Replace uses of old $RPM_ variables, remove redundant %clean
|
||||||
|
section, abolish %__-type macro indirection,
|
||||||
|
remove excess piping to xargs
|
||||||
|
- Add missing %_smp_mflags.
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Thu Jun 15 12:06:33 UTC 2017 - nmoreychaisemartin@suse.com
|
||||||
|
|
||||||
|
- Add support for openmpi2 over PSM2 and libfabric
|
||||||
|
- Reference baselibs.conf and openmpi2-rpmlintrc in spec
|
||||||
|
- Add _service to fetch from upstream github repo
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Thu Jun 8 11:39:44 UTC 2017 - nmoreychaisemartin@suse.com
|
||||||
|
|
||||||
|
- Remove version dependencies to libibumad and libibverbs
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Wed May 31 12:30:39 UTC 2017 - nmoreychaisemartin@suse.com
|
||||||
|
|
||||||
|
- Fix module file paths
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Tue May 30 14:21:28 UTC 2017 - nmoreychaisemartin@suse.com
|
||||||
|
|
||||||
|
- Add openmpi2-config package which contains runtime configuration
|
||||||
|
files for OpenMPI 1 and/or 2
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Wed May 17 09:17:16 UTC 2017 - nmoreychaisemartin@suse.com
|
||||||
|
|
||||||
|
- Update to OpenMPI 2.1.1
|
||||||
|
* Fix a problem with one of Open MPI's fifo data structures which led to
|
||||||
|
hangs in a make check test.
|
||||||
|
* Add missing MPI_AINT_ADD/MPI_AINT_DIFF function definitions to mpif.h.
|
||||||
|
* Fix the error return from MPI_WIN_LOCK when rank argument is invalid.
|
||||||
|
* Fix a problem with mpirun/orterun when started under a debugger.
|
||||||
|
* Add configury option to disable use of CMA by the vader BTL.
|
||||||
|
* Add configury check for MPI_DOUBLE_COMPLEX datatype support.
|
||||||
|
* Fix memory allocated by MPI_WIN_ALLOCATE_SHARED to
|
||||||
|
be 64 byte aligned.
|
||||||
|
* Update MPI_WTICK man page to reflect possibly higher
|
||||||
|
resolution than 10e-6.
|
||||||
|
* Add missing MPI_T_PVAR_SESSION_NULL definition to mpi.h
|
||||||
|
include file.
|
||||||
|
* Enhance the Open MPI spec file to install modulefile in /opt
|
||||||
|
if installed in a non-default location.
|
||||||
|
* Fix a problem with conflicting PMI symbols when linking statically.
|
||||||
|
* S390/S390x support
|
||||||
|
- Drop openmpi2-ia32-fix-atomic.patch openmpi2-s390.patch as they are now
|
||||||
|
fixed/supported upstream.
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Tue May 2 15:45:26 UTC 2017 - nmoreychaisemartin@suse.com
|
||||||
|
|
||||||
|
- Add testsuite package
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Mon Apr 24 18:22:22 UTC 2017 - nmoreychaisemartin@suse.com
|
||||||
|
|
||||||
|
- Initial packaging of OpenMPI 2.1.0
|
||||||
|
|
843
openmpi3.spec
Normal file
843
openmpi3.spec
Normal file
@ -0,0 +1,843 @@
|
|||||||
|
#
|
||||||
|
# spec file
|
||||||
|
#
|
||||||
|
# Copyright (c) 2022 SUSE LLC
|
||||||
|
# Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana
|
||||||
|
# University Research and Technology
|
||||||
|
# Corporation. All rights reserved.
|
||||||
|
# Copyright (c) 2004-2005 The University of Tennessee and The University
|
||||||
|
# of Tennessee Research Foundation. All rights
|
||||||
|
# reserved.
|
||||||
|
# Copyright (c) 2004-2005 High Performance Computing Center Stuttgart,
|
||||||
|
# University of Stuttgart. All rights reserved.
|
||||||
|
# Copyright (c) 2004-2005 The Regents of the University of California.
|
||||||
|
# All rights reserved.
|
||||||
|
# Copyright (c) 2006-2016 Cisco Systems, Inc. All rights reserved.
|
||||||
|
# Copyright (c) 2013 Mellanox Technologies, Inc.
|
||||||
|
# All rights reserved.
|
||||||
|
# Copyright (c) 2015 Research Organization for Information Science
|
||||||
|
# and Technology (RIST). All rights reserved.
|
||||||
|
# Copyright (c) 2003, The Regents of the University of California, through
|
||||||
|
# Lawrence Berkeley National Laboratory (subject to receipt of any
|
||||||
|
# required approvals from the U.S. Dept. of Energy). All rights reserved.
|
||||||
|
#
|
||||||
|
# All modifications and additions to the file contributed by third parties
|
||||||
|
# remain the property of their copyright owners, unless otherwise agreed
|
||||||
|
# upon. The license for this file, and modifications and additions to the
|
||||||
|
# file, is the same license as for the pristine package itself (unless the
|
||||||
|
# license for the pristine package is not an Open Source License, in which
|
||||||
|
# case the license is the MIT License). An "Open Source License" is a
|
||||||
|
# license that conforms to the Open Source Definition (Version 1.9)
|
||||||
|
# published by the Open Source Initiative.
|
||||||
|
|
||||||
|
# Please submit bugfixes or comments via https://bugs.opensuse.org/
|
||||||
|
#
|
||||||
|
|
||||||
|
|
||||||
|
%global flavor @BUILD_FLAVOR@%{nil}
|
||||||
|
|
||||||
|
# Static libraries are disabled by default
|
||||||
|
# for non HPC builds
|
||||||
|
# To enable them, simply uncomment:
|
||||||
|
# % define build_static_devel 1
|
||||||
|
|
||||||
|
%define pname openmpi
|
||||||
|
%define vers 3.1.6
|
||||||
|
%define _vers 3_1_6
|
||||||
|
%define m_f_ver 3
|
||||||
|
%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" == "gnu-hpc-testsuite"
|
||||||
|
%define compiler_family gnu
|
||||||
|
%undefine c_f_ver
|
||||||
|
%define testsuite 1
|
||||||
|
%endif
|
||||||
|
|
||||||
|
%if "%flavor" == "gnu7-hpc"
|
||||||
|
%define compiler_family gnu
|
||||||
|
%define c_f_ver 7
|
||||||
|
%endif
|
||||||
|
|
||||||
|
%if "%flavor" == "gnu7-hpc-testsuite"
|
||||||
|
%define compiler_family gnu
|
||||||
|
%define c_f_ver 7
|
||||||
|
%define testsuite 1
|
||||||
|
%endif
|
||||||
|
|
||||||
|
%if "%flavor" == "gnu8-hpc"
|
||||||
|
%define compiler_family gnu
|
||||||
|
%define c_f_ver 8
|
||||||
|
%endif
|
||||||
|
|
||||||
|
%if "%flavor" == "gnu8-hpc-testsuite"
|
||||||
|
%define compiler_family gnu
|
||||||
|
%define c_f_ver 8
|
||||||
|
%define testsuite 1
|
||||||
|
%endif
|
||||||
|
|
||||||
|
%if "%flavor" == "gnu9-hpc"
|
||||||
|
%define compiler_family gnu
|
||||||
|
%define c_f_ver 9
|
||||||
|
%endif
|
||||||
|
|
||||||
|
%if "%flavor" == "gnu9-hpc-testsuite"
|
||||||
|
%define compiler_family gnu
|
||||||
|
%define c_f_ver 9
|
||||||
|
%define testsuite 1
|
||||||
|
%endif
|
||||||
|
|
||||||
|
%if "%flavor" == "gnu10-hpc"
|
||||||
|
%define compiler_family gnu
|
||||||
|
%define c_f_ver 10
|
||||||
|
%endif
|
||||||
|
|
||||||
|
%if "%flavor" == "gnu10-hpc-testsuite"
|
||||||
|
%define compiler_family gnu
|
||||||
|
%define c_f_ver 10
|
||||||
|
%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
|
||||||
|
%define default_openmpi 0
|
||||||
|
|
||||||
|
%if %{with hpc}
|
||||||
|
%{!?compiler_family:%global compiler_family gnu}
|
||||||
|
%{hpc_init -M -c %compiler_family %{?c_f_ver:-v %{c_f_ver}} -m openmpi %{?mpi_f_ver:-V %{mpi_f_ver}}}
|
||||||
|
|
||||||
|
%global hpc_openmpi_dep_version %(VER=%m_f_ver; echo -n ${VER})
|
||||||
|
%global hpc_openmpi_dir openmpi%{hpc_openmpi_dep_version}
|
||||||
|
%global hpc_openmpi_pack_version %{hpc_openmpi_dep_version}
|
||||||
|
%{bcond_without pmix}
|
||||||
|
%{bcond_without hwloc}
|
||||||
|
%else
|
||||||
|
%{bcond_with pmix}
|
||||||
|
%{bcond_with hwloc}
|
||||||
|
%endif
|
||||||
|
|
||||||
|
%define git_ver .0.ea348728b4c8
|
||||||
|
|
||||||
|
#############################################################################
|
||||||
|
#
|
||||||
|
# Preamble Section
|
||||||
|
#
|
||||||
|
#############################################################################
|
||||||
|
|
||||||
|
Name: %{package_name}%{?testsuite:-testsuite}
|
||||||
|
Version: %{vers}
|
||||||
|
Release: 0
|
||||||
|
Summary: An implementation of MPI/SHMEM
|
||||||
|
License: BSD-3-Clause
|
||||||
|
Group: Development/Libraries/Parallel
|
||||||
|
URL: http://www.open-mpi.org/
|
||||||
|
Source0: openmpi-%{version}%{git_ver}.tar.bz2
|
||||||
|
Source2: openmpi3-rpmlintrc
|
||||||
|
Source3: macros.hpc-openmpi
|
||||||
|
Source4: mpivars.sh
|
||||||
|
Source5: mpivars.csh
|
||||||
|
Patch0: Build-warning-stringop-overflow-in.patch
|
||||||
|
Patch1: reproducible.patch
|
||||||
|
Patch2: memory-patcher-fix-compiler-warning.patch
|
||||||
|
Patch3: fix-rdma-component-selection.patch
|
||||||
|
Patch4: Fix-error-with-stricter-quoting-requirements-of-autoconf-2.70.patch
|
||||||
|
Patch5: Always-include-the-stddef.h-header.patch
|
||||||
|
Patch6: Revert-hwloc-bring-back-the-configure-error-when-external-hwloc-is-2.0.patch
|
||||||
|
Patch7: hwloc-fix-hwloc-shmem.h-in-the-external-case.patch
|
||||||
|
Patch8: hwloc-updates-for-hwloc-2.0.x-API.patch
|
||||||
|
Patch9: pmix-pmix2x-Fix-the-PMIx-discovery-logic.patch
|
||||||
|
Patch10: pmix-Fix-detection-of-Externally-built-PMIx.patch
|
||||||
|
Patch11: btl-openib-Add-support-for-newer-hardware.patch
|
||||||
|
Patch12: rmaps-simplify-the-lookup-for-the-binding-object-and-fix-for-hwloc-2.0.patch
|
||||||
|
Provides: mpi
|
||||||
|
BuildRoot: %{_tmppath}/%{name}-%{version}-build
|
||||||
|
BuildRequires: autoconf
|
||||||
|
BuildRequires: automake
|
||||||
|
BuildRequires: fdupes
|
||||||
|
BuildRequires: flex
|
||||||
|
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 %{ix86} x86_64
|
||||||
|
BuildRequires: infinipath-psm-devel
|
||||||
|
%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 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 subpackage provides the OpenMPI 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 subpackage provides the development files for Open MPI/OpenSHMEM,
|
||||||
|
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: Development/Documentation
|
||||||
|
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}
|
||||||
|
# OpenMPI3 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
|
||||||
|
|
||||||
|
#############################################################################
|
||||||
|
#
|
||||||
|
# Prepatory Section
|
||||||
|
#
|
||||||
|
#############################################################################
|
||||||
|
%prep
|
||||||
|
echo FLAVOR %{flavor}
|
||||||
|
%if %{with hpc}
|
||||||
|
echo with HPC
|
||||||
|
%endif
|
||||||
|
%if %{without hpc}
|
||||||
|
echo without HPC
|
||||||
|
%endif
|
||||||
|
%setup -q -n openmpi-%{version}%{git_ver}
|
||||||
|
%patch0
|
||||||
|
%if %{without hpc}
|
||||||
|
cat > %{_sourcedir}/baselibs.conf <<EOF
|
||||||
|
openmpi%{m_f_ver}-libs
|
||||||
|
EOF
|
||||||
|
%endif
|
||||||
|
%patch1 -p1
|
||||||
|
%patch2
|
||||||
|
%patch3
|
||||||
|
%patch4
|
||||||
|
%patch5
|
||||||
|
%patch6
|
||||||
|
%patch7
|
||||||
|
%patch8
|
||||||
|
%patch9
|
||||||
|
%patch10
|
||||||
|
%patch11
|
||||||
|
%patch12
|
||||||
|
|
||||||
|
# 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
|
||||||
|
export USER=OBS
|
||||||
|
export HOSTNAME=OBS
|
||||||
|
%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 %{ix86} x86_64
|
||||||
|
--with-psm \
|
||||||
|
%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}
|
||||||
|
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-dvm
|
||||||
|
%{mpi_bindir}/ompi-ps
|
||||||
|
%{mpi_bindir}/ompi-server
|
||||||
|
%{mpi_bindir}/ompi-top
|
||||||
|
%{mpi_bindir}/ompi_info
|
||||||
|
%{mpi_bindir}/orte-clean
|
||||||
|
%{mpi_bindir}/orte-dvm
|
||||||
|
%{mpi_bindir}/orte-info
|
||||||
|
%{mpi_bindir}/orte-ps
|
||||||
|
%{mpi_bindir}/orte-server
|
||||||
|
%{mpi_bindir}/orte-top
|
||||||
|
%{mpi_bindir}/orted
|
||||||
|
%{mpi_bindir}/orterun
|
||||||
|
%{mpi_bindir}/oshmem_info
|
||||||
|
%{mpi_bindir}/oshrun
|
||||||
|
%{mpi_bindir}/prun
|
||||||
|
%{mpi_bindir}/shmemrun
|
||||||
|
%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
|
||||||
|
%{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
|
||||||
|
%{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
|
||||||
|
%{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}
|
||||||
|
%config %{_rpmmacrodir}/macros.hpc-openmpi
|
||||||
|
%else
|
||||||
|
%config %{_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
|
24
pmix-Fix-detection-of-Externally-built-PMIx.patch
Normal file
24
pmix-Fix-detection-of-Externally-built-PMIx.patch
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
commit ed3ecbc8be313cb3613d6022548deb41750b7725
|
||||||
|
Author: Artem Polyakov <artpol84@gmail.com>
|
||||||
|
Date: Tue Apr 20 15:16:24 2021 -0700
|
||||||
|
|
||||||
|
pmix: Fix detection of Externally-built PMIx
|
||||||
|
|
||||||
|
See https://github.com/open-mpi/ompi/issues/8823 for more details.
|
||||||
|
|
||||||
|
Signed-off-by: Artem Polyakov <artpol84@gmail.com>
|
||||||
|
|
||||||
|
diff --git opal/mca/pmix/ext1x/pmix1x_component.c opal/mca/pmix/ext1x/pmix1x_component.c
|
||||||
|
index 747f95cc6139..57e91305fd85 100644
|
||||||
|
--- opal/mca/pmix/ext1x/pmix1x_component.c
|
||||||
|
+++ opal/mca/pmix/ext1x/pmix1x_component.c
|
||||||
|
@@ -95,8 +95,7 @@ static int external_component_query(mca_base_module_t **module, int *priority)
|
||||||
|
char *t, *id;
|
||||||
|
|
||||||
|
/* see if a PMIx server is present */
|
||||||
|
- if (NULL != (t = getenv("PMIX_SERVER_URI")) ||
|
||||||
|
- NULL != (id = getenv("PMIX_ID"))) {
|
||||||
|
+ if (NULL != (t = getenv("PMIX_NAMESPACE"))) {
|
||||||
|
/* if PMIx is present, then we are a client and need to use it */
|
||||||
|
*priority = 100;
|
||||||
|
} else {
|
25
pmix-pmix2x-Fix-the-PMIx-discovery-logic.patch
Normal file
25
pmix-pmix2x-Fix-the-PMIx-discovery-logic.patch
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
commit 4bb0f4200ae67d203d59f19c7d38c01cc320ee03
|
||||||
|
Author: Artem Polyakov <artpol84@gmail.com>
|
||||||
|
Date: Tue Apr 20 09:17:32 2021 -0700
|
||||||
|
|
||||||
|
pmix/pmix2x: Fix the PMIx discovery logic
|
||||||
|
|
||||||
|
See https://github.com/open-mpi/ompi/issues/8823 for the details.
|
||||||
|
|
||||||
|
Signed-off-by: Artem Polyakov <artpol84@gmail.com>
|
||||||
|
|
||||||
|
diff --git opal/mca/pmix/pmix2x/pmix2x_component.c opal/mca/pmix/pmix2x/pmix2x_component.c
|
||||||
|
index 74a08a77058b..0771331a0679 100644
|
||||||
|
--- opal/mca/pmix/pmix2x/pmix2x_component.c
|
||||||
|
+++ opal/mca/pmix/pmix2x/pmix2x_component.c
|
||||||
|
@@ -118,9 +118,7 @@ static int external_component_query(mca_base_module_t **module, int *priority)
|
||||||
|
char *t, *id;
|
||||||
|
|
||||||
|
/* see if a PMIx server is present */
|
||||||
|
- if (NULL != (t = getenv("PMIX_SERVER_URI")) ||
|
||||||
|
- NULL != (t = getenv("PMIX_SERVER_URI2")) ||
|
||||||
|
- NULL != (id = getenv("PMIX_ID"))) {
|
||||||
|
+ if (NULL != (t = getenv("PMIX_NAMESPACE"))) {
|
||||||
|
/* if PMIx is present, then we are a client and need to use it */
|
||||||
|
*priority = 100;
|
||||||
|
} else {
|
126
reproducible.patch
Normal file
126
reproducible.patch
Normal file
@ -0,0 +1,126 @@
|
|||||||
|
Author: Bernhard M. Wiedemann <bwiedemann suse de>
|
||||||
|
Date: 2017-06-29
|
||||||
|
|
||||||
|
make package build reproducible
|
||||||
|
by using fixed date + hostname
|
||||||
|
|
||||||
|
https://github.com/open-mpi/ompi/issues/3759
|
||||||
|
https://bugzilla.opensuse.org/show_bug.cgi?id=1047218 packages do not build reproducibly from including build time
|
||||||
|
https://bugzilla.opensuse.org/show_bug.cgi?id=1084909 +hostname
|
||||||
|
|
||||||
|
Index: openmpi-3.1.1.0.155d2134a776/autogen.pl
|
||||||
|
===================================================================
|
||||||
|
--- openmpi-3.1.1.0.155d2134a776.orig/autogen.pl
|
||||||
|
+++ openmpi-3.1.1.0.155d2134a776/autogen.pl
|
||||||
|
@@ -85,7 +85,7 @@ if ($^O eq "solaris") {
|
||||||
|
}
|
||||||
|
|
||||||
|
$username = getpwuid($>);
|
||||||
|
-$full_hostname = `hostname`;
|
||||||
|
+$full_hostname = "openSUSEnohostname";
|
||||||
|
chomp($full_hostname);
|
||||||
|
$hostname = $full_hostname;
|
||||||
|
$hostname =~ s/^([\w\-]+)\..+/\1/;
|
||||||
|
@@ -1190,7 +1190,7 @@ if (-e "orcm") {
|
||||||
|
|
||||||
|
#---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
-$full_hostname = `hostname`;
|
||||||
|
+$full_hostname = "openSUSEnohostname";
|
||||||
|
chomp($full_hostname);
|
||||||
|
|
||||||
|
$m4 = "dnl
|
||||||
|
Index: openmpi-3.1.1.0.155d2134a776/config/opal_functions.m4
|
||||||
|
===================================================================
|
||||||
|
--- openmpi-3.1.1.0.155d2134a776.orig/config/opal_functions.m4
|
||||||
|
+++ openmpi-3.1.1.0.155d2134a776/config/opal_functions.m4
|
||||||
|
@@ -94,9 +94,9 @@ EOF
|
||||||
|
# Save some stats about this build
|
||||||
|
#
|
||||||
|
|
||||||
|
-OPAL_CONFIGURE_USER="`whoami`"
|
||||||
|
-OPAL_CONFIGURE_HOST="`(hostname || uname -n) 2> /dev/null | sed 1q`"
|
||||||
|
-OPAL_CONFIGURE_DATE="`date`"
|
||||||
|
+OPAL_CONFIGURE_USER="openSUSEnowhoami"
|
||||||
|
+OPAL_CONFIGURE_HOST="openSUSEnohostname"
|
||||||
|
+OPAL_CONFIGURE_DATE="openSUSEnodate"
|
||||||
|
|
||||||
|
OPAL_LIBNL_SANITY_INIT
|
||||||
|
|
||||||
|
@@ -116,9 +116,9 @@ AC_DEFUN([OPAL_BASIC_SETUP],[
|
||||||
|
# Save some stats about this build
|
||||||
|
#
|
||||||
|
|
||||||
|
-OPAL_CONFIGURE_USER="`whoami`"
|
||||||
|
-OPAL_CONFIGURE_HOST="`(hostname || uname -n) 2> /dev/null | sed 1q`"
|
||||||
|
-OPAL_CONFIGURE_DATE="`date`"
|
||||||
|
+OPAL_CONFIGURE_USER="openSUSEnowhoami"
|
||||||
|
+OPAL_CONFIGURE_HOST="openSUSEnohostname"
|
||||||
|
+OPAL_CONFIGURE_DATE="openSUSEnodate"
|
||||||
|
|
||||||
|
#
|
||||||
|
# Make automake clean emacs ~ files for "make clean"
|
||||||
|
Index: openmpi-3.1.1.0.155d2134a776/config/opal_get_version.m4
|
||||||
|
===================================================================
|
||||||
|
--- openmpi-3.1.1.0.155d2134a776.orig/config/opal_get_version.m4
|
||||||
|
+++ openmpi-3.1.1.0.155d2134a776/config/opal_get_version.m4
|
||||||
|
@@ -91,7 +91,7 @@ m4_define([OPAL_GET_VERSION],[
|
||||||
|
$2_REPO_REV=`git describe --tags --always`
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
- $2_REPO_REV="date`date '+%Y-%m-%d'`"
|
||||||
|
+ $2_REPO_REV="date"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
Index: openmpi-3.1.1.0.155d2134a776/ompi/tools/ompi_info/Makefile.am
|
||||||
|
===================================================================
|
||||||
|
--- openmpi-3.1.1.0.155d2134a776.orig/ompi/tools/ompi_info/Makefile.am
|
||||||
|
+++ openmpi-3.1.1.0.155d2134a776/ompi/tools/ompi_info/Makefile.am
|
||||||
|
@@ -27,9 +27,9 @@ AM_CFLAGS = \
|
||||||
|
-DOPAL_CONFIGURE_USER="\"@OPAL_CONFIGURE_USER@\"" \
|
||||||
|
-DOPAL_CONFIGURE_HOST="\"@OPAL_CONFIGURE_HOST@\"" \
|
||||||
|
-DOPAL_CONFIGURE_DATE="\"@OPAL_CONFIGURE_DATE@\"" \
|
||||||
|
- -DOMPI_BUILD_USER="\"$$USER\"" \
|
||||||
|
- -DOMPI_BUILD_HOST="\"`(hostname || uname -n) 2> /dev/null | sed 1q`\"" \
|
||||||
|
- -DOMPI_BUILD_DATE="\"`date`\"" \
|
||||||
|
+ -DOMPI_BUILD_USER="\"USER\"" \
|
||||||
|
+ -DOMPI_BUILD_HOST="\"openSUSEnohostname\"" \
|
||||||
|
+ -DOMPI_BUILD_DATE="\"`date -u -r ../../../NEWS`\"" \
|
||||||
|
-DOMPI_BUILD_CFLAGS="\"@CFLAGS@\"" \
|
||||||
|
-DOMPI_BUILD_CPPFLAGS="\"@CPPFLAGS@\"" \
|
||||||
|
-DOMPI_BUILD_CXXFLAGS="\"@CXXFLAGS@\"" \
|
||||||
|
Index: openmpi-3.1.1.0.155d2134a776/orte/tools/orte-info/Makefile.am
|
||||||
|
===================================================================
|
||||||
|
--- openmpi-3.1.1.0.155d2134a776.orig/orte/tools/orte-info/Makefile.am
|
||||||
|
+++ openmpi-3.1.1.0.155d2134a776/orte/tools/orte-info/Makefile.am
|
||||||
|
@@ -24,9 +24,9 @@ AM_CFLAGS = \
|
||||||
|
-DOPAL_CONFIGURE_USER="\"@OPAL_CONFIGURE_USER@\"" \
|
||||||
|
-DOPAL_CONFIGURE_HOST="\"@OPAL_CONFIGURE_HOST@\"" \
|
||||||
|
-DOPAL_CONFIGURE_DATE="\"@OPAL_CONFIGURE_DATE@\"" \
|
||||||
|
- -DOMPI_BUILD_USER="\"$$USER\"" \
|
||||||
|
- -DOMPI_BUILD_HOST="\"`(hostname || uname -n) | sed 1q`\"" \
|
||||||
|
- -DOMPI_BUILD_DATE="\"`date`\"" \
|
||||||
|
+ -DOMPI_BUILD_USER="\"USER\"" \
|
||||||
|
+ -DOMPI_BUILD_HOST="\"openSUSEnohostname\"" \
|
||||||
|
+ -DOMPI_BUILD_DATE="\"`date -u -r ../../../NEWS`\"" \
|
||||||
|
-DOMPI_BUILD_CFLAGS="\"@CFLAGS@\"" \
|
||||||
|
-DOMPI_BUILD_CPPFLAGS="\"@CPPFLAGS@\"" \
|
||||||
|
-DOMPI_BUILD_CXXFLAGS="\"@CXXFLAGS@\"" \
|
||||||
|
Index: openmpi-3.1.1.0.155d2134a776/oshmem/tools/oshmem_info/Makefile.am
|
||||||
|
===================================================================
|
||||||
|
--- openmpi-3.1.1.0.155d2134a776.orig/oshmem/tools/oshmem_info/Makefile.am
|
||||||
|
+++ openmpi-3.1.1.0.155d2134a776/oshmem/tools/oshmem_info/Makefile.am
|
||||||
|
@@ -16,9 +16,9 @@ AM_CPPFLAGS = \
|
||||||
|
-DOPAL_CONFIGURE_USER="\"@OPAL_CONFIGURE_USER@\"" \
|
||||||
|
-DOPAL_CONFIGURE_HOST="\"@OPAL_CONFIGURE_HOST@\"" \
|
||||||
|
-DOPAL_CONFIGURE_DATE="\"@OPAL_CONFIGURE_DATE@\"" \
|
||||||
|
- -DOMPI_BUILD_USER="\"$$USER\"" \
|
||||||
|
- -DOMPI_BUILD_HOST="\"`(hostname || uname -n) 2> /dev/null | sed 1q`\"" \
|
||||||
|
- -DOMPI_BUILD_DATE="\"`date`\"" \
|
||||||
|
+ -DOMPI_BUILD_USER="\"USER\"" \
|
||||||
|
+ -DOMPI_BUILD_HOST="\"openSUSEnohostname\"" \
|
||||||
|
+ -DOMPI_BUILD_DATE="\"`date -u -r ../../../NEWS`\"" \
|
||||||
|
-DOMPI_BUILD_CFLAGS="\"@CFLAGS@\"" \
|
||||||
|
-DOMPI_BUILD_CPPFLAGS="\"@CPPFLAGS@\"" \
|
||||||
|
-DOMPI_BUILD_CXXFLAGS="\"@CXXFLAGS@\"" \
|
@ -0,0 +1,306 @@
|
|||||||
|
commit 8992b7c5996de5e261bbfc9e57b270c8717852f9
|
||||||
|
Author: Brice Goglin <Brice.Goglin@inria.fr>
|
||||||
|
Date: Fri Jan 26 16:19:52 2018 +0100
|
||||||
|
|
||||||
|
rmaps: simplify the lookup for the binding object and fix for hwloc 2.0
|
||||||
|
|
||||||
|
Don't bother doing a lookup upwards or downwards for the target object type.
|
||||||
|
Just use the target depth, iterate over the level until we find the min_bound
|
||||||
|
object that intersects the locale cpuset.
|
||||||
|
|
||||||
|
Signed-off-by: Brice Goglin <Brice.Goglin@inria.fr>
|
||||||
|
|
||||||
|
diff --git orte/mca/rmaps/base/rmaps_base_binding.c orte/mca/rmaps/base/rmaps_base_binding.c
|
||||||
|
index df3799947514..d6781608f36f 100644
|
||||||
|
--- orte/mca/rmaps/base/rmaps_base_binding.c
|
||||||
|
+++ orte/mca/rmaps/base/rmaps_base_binding.c
|
||||||
|
@@ -15,6 +15,7 @@
|
||||||
|
* Copyright (c) 2013-2017 Intel, Inc. All rights reserved.
|
||||||
|
* Copyright (c) 2015-2017 Research Organization for Information Science
|
||||||
|
* and Technology (RIST). All rights reserved.
|
||||||
|
+ * Copyright (c) 2018 Inria. All rights reserved.
|
||||||
|
* $COPYRIGHT$
|
||||||
|
*
|
||||||
|
* Additional copyrights may follow
|
||||||
|
@@ -120,142 +121,21 @@ static void unbind_procs(orte_job_t *jdata)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
-static int bind_upwards(orte_job_t *jdata,
|
||||||
|
+static int bind_generic(orte_job_t *jdata,
|
||||||
|
orte_node_t *node,
|
||||||
|
- hwloc_obj_type_t target,
|
||||||
|
- unsigned cache_level)
|
||||||
|
-{
|
||||||
|
- /* traverse the hwloc topology tree on each node upwards
|
||||||
|
- * until we find an object of type target - and then bind
|
||||||
|
- * the process to that target
|
||||||
|
- */
|
||||||
|
- int j;
|
||||||
|
- orte_job_map_t *map;
|
||||||
|
- orte_proc_t *proc;
|
||||||
|
- hwloc_obj_t obj;
|
||||||
|
- unsigned int idx, ncpus;
|
||||||
|
- opal_hwloc_obj_data_t *data;
|
||||||
|
- hwloc_obj_t locale;
|
||||||
|
- char *cpu_bitmap;
|
||||||
|
-
|
||||||
|
- opal_output_verbose(5, orte_rmaps_base_framework.framework_output,
|
||||||
|
- "mca:rmaps: bind upwards for job %s with bindings %s",
|
||||||
|
- ORTE_JOBID_PRINT(jdata->jobid),
|
||||||
|
- opal_hwloc_base_print_binding(jdata->map->binding));
|
||||||
|
- /* initialize */
|
||||||
|
- map = jdata->map;
|
||||||
|
-
|
||||||
|
-
|
||||||
|
- /* cycle thru the procs */
|
||||||
|
- for (j=0; j < node->procs->size; j++) {
|
||||||
|
- if (NULL == (proc = (orte_proc_t*)opal_pointer_array_get_item(node->procs, j))) {
|
||||||
|
- continue;
|
||||||
|
- }
|
||||||
|
- /* ignore procs from other jobs */
|
||||||
|
- if (proc->name.jobid != jdata->jobid) {
|
||||||
|
- continue;
|
||||||
|
- }
|
||||||
|
- /* bozo check */
|
||||||
|
- if (!orte_get_attribute(&proc->attributes, ORTE_PROC_HWLOC_LOCALE, (void**)&locale, OPAL_PTR)) {
|
||||||
|
- orte_show_help("help-orte-rmaps-base.txt", "rmaps:no-locale", true, ORTE_NAME_PRINT(&proc->name));
|
||||||
|
- return ORTE_ERR_SILENT;
|
||||||
|
- }
|
||||||
|
- /* starting at the locale, move up thru the parents
|
||||||
|
- * to find the target object type
|
||||||
|
- */
|
||||||
|
- cpu_bitmap = NULL;
|
||||||
|
- for (obj = locale->parent; NULL != obj; obj = obj->parent) {
|
||||||
|
- opal_output_verbose(5, orte_rmaps_base_framework.framework_output,
|
||||||
|
- "%s bind:upward target %s type %s",
|
||||||
|
- ORTE_NAME_PRINT(ORTE_PROC_MY_NAME),
|
||||||
|
- hwloc_obj_type_string(target),
|
||||||
|
- hwloc_obj_type_string(obj->type));
|
||||||
|
- if (target == obj->type) {
|
||||||
|
-#if HWLOC_API_VERSION < 0x20000
|
||||||
|
- if (HWLOC_OBJ_CACHE == target && cache_level != obj->attr->cache.depth) {
|
||||||
|
- continue;
|
||||||
|
- }
|
||||||
|
-#endif
|
||||||
|
- /* get its index */
|
||||||
|
- if (UINT_MAX == (idx = opal_hwloc_base_get_obj_idx(node->topology->topo, obj, OPAL_HWLOC_AVAILABLE))) {
|
||||||
|
- ORTE_ERROR_LOG(ORTE_ERR_BAD_PARAM);
|
||||||
|
- return ORTE_ERR_SILENT;
|
||||||
|
- }
|
||||||
|
- /* track the number bound */
|
||||||
|
- data = (opal_hwloc_obj_data_t*)obj->userdata;
|
||||||
|
- data->num_bound++;
|
||||||
|
- /* get the number of cpus under this location */
|
||||||
|
- if (0 == (ncpus = opal_hwloc_base_get_npus(node->topology->topo, obj))) {
|
||||||
|
- orte_show_help("help-orte-rmaps-base.txt", "rmaps:no-available-cpus", true, node->name);
|
||||||
|
- return ORTE_ERR_SILENT;
|
||||||
|
- }
|
||||||
|
- /* error out if adding a proc would cause overload and that wasn't allowed,
|
||||||
|
- * and it wasn't a default binding policy (i.e., the user requested it)
|
||||||
|
- */
|
||||||
|
- if (ncpus < data->num_bound &&
|
||||||
|
- !OPAL_BIND_OVERLOAD_ALLOWED(jdata->map->binding)) {
|
||||||
|
- if (OPAL_BINDING_POLICY_IS_SET(jdata->map->binding)) {
|
||||||
|
- /* if the user specified a binding policy, then we cannot meet
|
||||||
|
- * it since overload isn't allowed, so error out - have the
|
||||||
|
- * message indicate that setting overload allowed will remove
|
||||||
|
- * this restriction */
|
||||||
|
- orte_show_help("help-orte-rmaps-base.txt", "rmaps:binding-overload", true,
|
||||||
|
- opal_hwloc_base_print_binding(map->binding), node->name,
|
||||||
|
- data->num_bound, ncpus);
|
||||||
|
- return ORTE_ERR_SILENT;
|
||||||
|
- } else {
|
||||||
|
- /* if we have the default binding policy, then just don't bind */
|
||||||
|
- OPAL_SET_BINDING_POLICY(map->binding, OPAL_BIND_TO_NONE);
|
||||||
|
- unbind_procs(jdata);
|
||||||
|
- return ORTE_SUCCESS;
|
||||||
|
- }
|
||||||
|
- }
|
||||||
|
- /* bind it here */
|
||||||
|
- hwloc_bitmap_list_asprintf(&cpu_bitmap, obj->cpuset);
|
||||||
|
- orte_set_attribute(&proc->attributes, ORTE_PROC_CPU_BITMAP, ORTE_ATTR_GLOBAL, cpu_bitmap, OPAL_STRING);
|
||||||
|
- /* record the location */
|
||||||
|
- orte_set_attribute(&proc->attributes, ORTE_PROC_HWLOC_BOUND, ORTE_ATTR_LOCAL, obj, OPAL_PTR);
|
||||||
|
- opal_output_verbose(5, orte_rmaps_base_framework.framework_output,
|
||||||
|
- "%s BOUND PROC %s TO %s[%s:%u] on node %s",
|
||||||
|
- ORTE_NAME_PRINT(ORTE_PROC_MY_NAME),
|
||||||
|
- ORTE_NAME_PRINT(&proc->name),
|
||||||
|
- cpu_bitmap,
|
||||||
|
- hwloc_obj_type_string(target),
|
||||||
|
- idx, node->name);
|
||||||
|
- break;
|
||||||
|
- }
|
||||||
|
- }
|
||||||
|
- if (NULL == cpu_bitmap && OPAL_BINDING_REQUIRED(jdata->map->binding)) {
|
||||||
|
- /* didn't find anyone to bind to - this is an error
|
||||||
|
- * unless the user specified if-supported
|
||||||
|
- */
|
||||||
|
- orte_show_help("help-orte-rmaps-base.txt", "rmaps:binding-target-not-found", true,
|
||||||
|
- opal_hwloc_base_print_binding(map->binding), node->name);
|
||||||
|
- return ORTE_ERR_SILENT;
|
||||||
|
- }
|
||||||
|
- if (NULL != cpu_bitmap) {
|
||||||
|
- free(cpu_bitmap);
|
||||||
|
- }
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
- return ORTE_SUCCESS;
|
||||||
|
-}
|
||||||
|
-
|
||||||
|
-static int bind_downwards(orte_job_t *jdata,
|
||||||
|
- orte_node_t *node,
|
||||||
|
- hwloc_obj_type_t target,
|
||||||
|
- unsigned cache_level)
|
||||||
|
+ int target_depth)
|
||||||
|
{
|
||||||
|
int j;
|
||||||
|
orte_job_map_t *map;
|
||||||
|
orte_proc_t *proc;
|
||||||
|
- hwloc_obj_t trg_obj, nxt_obj;
|
||||||
|
+ hwloc_obj_t trg_obj, tmp_obj, nxt_obj;
|
||||||
|
unsigned int ncpus;
|
||||||
|
opal_hwloc_obj_data_t *data;
|
||||||
|
int total_cpus;
|
||||||
|
hwloc_cpuset_t totalcpuset;
|
||||||
|
hwloc_obj_t locale;
|
||||||
|
char *cpu_bitmap;
|
||||||
|
+ unsigned min_bound;
|
||||||
|
|
||||||
|
opal_output_verbose(5, orte_rmaps_base_framework.framework_output,
|
||||||
|
"mca:rmaps: bind downward for job %s with bindings %s",
|
||||||
|
@@ -282,12 +162,24 @@ static int bind_downwards(orte_job_t *jdata,
|
||||||
|
hwloc_bitmap_free(totalcpuset);
|
||||||
|
return ORTE_ERR_SILENT;
|
||||||
|
}
|
||||||
|
- /* we don't know if the target is a direct child of this locale,
|
||||||
|
- * or if it is some depth below it, so we have to conduct a bit
|
||||||
|
- * of a search. Let hwloc find the min usage one for us.
|
||||||
|
- */
|
||||||
|
- trg_obj = opal_hwloc_base_find_min_bound_target_under_obj(node->topology->topo, locale,
|
||||||
|
- target, cache_level);
|
||||||
|
+
|
||||||
|
+ /* use the min_bound object that intersects locale->cpuset at target_depth */
|
||||||
|
+ tmp_obj = NULL;
|
||||||
|
+ trg_obj = NULL;
|
||||||
|
+ min_bound = UINT_MAX;
|
||||||
|
+ while (tmp_obj = hwloc_get_next_obj_by_depth(node->topology->topo, target_depth, tmp_obj)) {
|
||||||
|
+ if (!hwloc_bitmap_intersects(locale->cpuset, tmp_obj->cpuset))
|
||||||
|
+ continue;
|
||||||
|
+ data = (opal_hwloc_obj_data_t*)tmp_obj->userdata;
|
||||||
|
+ if (NULL == data) {
|
||||||
|
+ data = OBJ_NEW(opal_hwloc_obj_data_t);
|
||||||
|
+ tmp_obj->userdata = data;
|
||||||
|
+ }
|
||||||
|
+ if (data->num_bound < min_bound) {
|
||||||
|
+ min_bound = data->num_bound;
|
||||||
|
+ trg_obj = tmp_obj;
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
if (NULL == trg_obj) {
|
||||||
|
/* there aren't any such targets under this object */
|
||||||
|
orte_show_help("help-orte-rmaps-base.txt", "rmaps:no-available-cpus", true, node->name);
|
||||||
|
@@ -296,6 +188,7 @@ static int bind_downwards(orte_job_t *jdata,
|
||||||
|
}
|
||||||
|
/* record the location */
|
||||||
|
orte_set_attribute(&proc->attributes, ORTE_PROC_HWLOC_BOUND, ORTE_ATTR_LOCAL, trg_obj, OPAL_PTR);
|
||||||
|
+
|
||||||
|
/* start with a clean slate */
|
||||||
|
hwloc_bitmap_zero(totalcpuset);
|
||||||
|
total_cpus = 0;
|
||||||
|
@@ -685,7 +578,7 @@ int orte_rmaps_base_compute_bindings(orte_job_t *jdata)
|
||||||
|
int i, rc;
|
||||||
|
struct hwloc_topology_support *support;
|
||||||
|
bool force_down = false;
|
||||||
|
- int bind_depth, map_depth;
|
||||||
|
+ int bind_depth;
|
||||||
|
|
||||||
|
opal_output_verbose(5, orte_rmaps_base_framework.framework_output,
|
||||||
|
"mca:rmaps: compute bindings for job %s with policy %s[%x]",
|
||||||
|
@@ -904,62 +797,35 @@ int orte_rmaps_base_compute_bindings(orte_job_t *jdata)
|
||||||
|
*/
|
||||||
|
reset_usage(node, jdata->jobid);
|
||||||
|
|
||||||
|
- if (force_down) {
|
||||||
|
- if (ORTE_SUCCESS != (rc = bind_downwards(jdata, node, hwb, clvl))) {
|
||||||
|
- ORTE_ERROR_LOG(rc);
|
||||||
|
- return rc;
|
||||||
|
- }
|
||||||
|
- } else {
|
||||||
|
- /* determine the relative depth on this node */
|
||||||
|
+ /* determine the relative depth on this node */
|
||||||
|
#if HWLOC_API_VERSION < 0x20000
|
||||||
|
- if (HWLOC_OBJ_CACHE == hwb) {
|
||||||
|
- /* must use a unique function because blasted hwloc
|
||||||
|
- * just doesn't deal with caches very well...sigh
|
||||||
|
- */
|
||||||
|
- bind_depth = hwloc_get_cache_type_depth(node->topology->topo, clvl, (hwloc_obj_cache_type_t)-1);
|
||||||
|
- } else
|
||||||
|
+ if (HWLOC_OBJ_CACHE == hwb) {
|
||||||
|
+ /* must use a unique function because blasted hwloc
|
||||||
|
+ * just doesn't deal with caches very well...sigh
|
||||||
|
+ */
|
||||||
|
+ bind_depth = hwloc_get_cache_type_depth(node->topology->topo, clvl, (hwloc_obj_cache_type_t)-1);
|
||||||
|
+ } else
|
||||||
|
#endif
|
||||||
|
- bind_depth = hwloc_get_type_depth(node->topology->topo, hwb);
|
||||||
|
- if (0 > bind_depth) {
|
||||||
|
- /* didn't find such an object */
|
||||||
|
- orte_show_help("help-orte-rmaps-base.txt", "orte-rmaps-base:no-objects",
|
||||||
|
- true, hwloc_obj_type_string(hwb), node->name);
|
||||||
|
- return ORTE_ERR_SILENT;
|
||||||
|
- }
|
||||||
|
+ bind_depth = hwloc_get_type_depth(node->topology->topo, hwb);
|
||||||
|
#if HWLOC_API_VERSION < 0x20000
|
||||||
|
- if (HWLOC_OBJ_CACHE == hwm) {
|
||||||
|
- /* must use a unique function because blasted hwloc
|
||||||
|
- * just doesn't deal with caches very well...sigh
|
||||||
|
- */
|
||||||
|
- map_depth = hwloc_get_cache_type_depth(node->topology->topo, clvm, (hwloc_obj_cache_type_t)-1);
|
||||||
|
- } else
|
||||||
|
+ if (0 > bind_depth)
|
||||||
|
#else
|
||||||
|
- /* do something with clvm to silence compiler warnings */
|
||||||
|
- ++clvm;
|
||||||
|
+ if (0 > bind_depth && HWLOC_TYPE_DEPTH_NUMANODE != bind_depth)
|
||||||
|
#endif
|
||||||
|
- map_depth = hwloc_get_type_depth(node->topology->topo, hwm);
|
||||||
|
- if (0 > map_depth) {
|
||||||
|
- /* didn't find such an object */
|
||||||
|
- orte_show_help("help-orte-rmaps-base.txt", "orte-rmaps-base:no-objects",
|
||||||
|
- true, hwloc_obj_type_string(hwm), node->name);
|
||||||
|
- return ORTE_ERR_SILENT;
|
||||||
|
- }
|
||||||
|
- opal_output_verbose(5, orte_rmaps_base_framework.framework_output,
|
||||||
|
- "%s bind_depth: %d map_depth %d",
|
||||||
|
- ORTE_NAME_PRINT(ORTE_PROC_MY_NAME),
|
||||||
|
- bind_depth, map_depth);
|
||||||
|
- if (bind_depth > map_depth) {
|
||||||
|
- if (ORTE_SUCCESS != (rc = bind_downwards(jdata, node, hwb, clvl))) {
|
||||||
|
- ORTE_ERROR_LOG(rc);
|
||||||
|
- return rc;
|
||||||
|
- }
|
||||||
|
- } else {
|
||||||
|
- if (ORTE_SUCCESS != (rc = bind_upwards(jdata, node, hwb, clvl))) {
|
||||||
|
- ORTE_ERROR_LOG(rc);
|
||||||
|
- return rc;
|
||||||
|
- }
|
||||||
|
- }
|
||||||
|
- }
|
||||||
|
+ {
|
||||||
|
+ /* didn't find such an object */
|
||||||
|
+ orte_show_help("help-orte-rmaps-base.txt", "orte-rmaps-base:no-objects",
|
||||||
|
+ true, hwloc_obj_type_string(hwb), node->name);
|
||||||
|
+ return ORTE_ERR_SILENT;
|
||||||
|
+ }
|
||||||
|
+ opal_output_verbose(5, orte_rmaps_base_framework.framework_output,
|
||||||
|
+ "%s bind_depth: %d",
|
||||||
|
+ ORTE_NAME_PRINT(ORTE_PROC_MY_NAME),
|
||||||
|
+ bind_depth);
|
||||||
|
+ if (ORTE_SUCCESS != (rc = bind_generic(jdata, node, bind_depth))) {
|
||||||
|
+ ORTE_ERROR_LOG(rc);
|
||||||
|
+ return rc;
|
||||||
|
+ }
|
||||||
|
}
|
||||||
|
|
||||||
|
return ORTE_SUCCESS;
|
Loading…
Reference in New Issue
Block a user