Sync from SUSE:ALP:Source:Standard:1.0 mvapich2 revision 23a918e1d193c9ba0a2aae79d001f45d

This commit is contained in:
Adrian Schröter 2023-11-14 13:46:14 +01:00
commit a0f03d9ac6
18 changed files with 2399 additions and 0 deletions

23
.gitattributes vendored Normal file
View 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

59
0001-Drop-GCC-check.patch Normal file
View File

@ -0,0 +1,59 @@
commit b609280fc0d0f0f5a728b08e874977cb16f921b8
Author: Nicolas Morey-Chaisemartin <nmoreychaisemartin@suse.com>
Date: Thu May 2 08:17:42 2019 +0200
0001 Drop GCC check
Skip GCC badly written GCC check intended for older released that may cause
bugs during future GCC updates
Signed-off-by: Nicolas Morey-Chaisemartin <nmoreychaisemartin@suse.com>
diff --git autogen.sh autogen.sh
index a0b3d897d15b..f13f3ad543f0 100755
--- autogen.sh
+++ autogen.sh
@@ -516,7 +516,7 @@ fi
echo_n "Checking for automake version... "
recreate_tmp
-ver=1.15
+ver=1.13
cat > .tmp/configure.ac<<EOF
AC_INIT(testver,1.0)
AC_CONFIG_AUX_DIR([m4])
@@ -554,7 +554,7 @@ fi
echo_n "Checking for libtool version... "
recreate_tmp
-ver=2.4.4
+ver=2.4.2
cat <<EOF >.tmp/configure.ac
AC_INIT(testver,1.0)
AC_CONFIG_AUX_DIR([m4])
diff --git src/binding/cxx/buildiface src/binding/cxx/buildiface
index 3afd823c8bd0..9f73c84d7eb8 100755
--- src/binding/cxx/buildiface
+++ src/binding/cxx/buildiface
@@ -1454,21 +1454,6 @@ sub printDefineChecks {
#endif\n\n";
}
- # GCC changed the calling convention between 3.2.3 and 3.4.3 (!!!)
- # check for that
- print $OUTFD "
-// Check for incompatible GCC versions
-// GCC (specifically) g++ changed the calling convention
-// between 3.2.3 and 3.4.3 (!!) Normally such changes
-// should only occur at major releases (e.g., version 3 to 4)
-#ifdef __GNUC__
-# if __GNUC__ >= \@GNUCXX_VERSION\@
-# if __GNUC_MINOR__ > 2 && \@GNUCXX_MINORVERSION\@ == 2
-# error 'Please use the same version of GCC and g++ for compiling MPICH and user MPI programs'
-# endif
-# endif
-#endif\n";
-
print $OUTFD "
/*
* Because the API is defined, some methods have parameters that are

281
0001-Drop-Real-16.patch Normal file
View File

@ -0,0 +1,281 @@
commit 55d03ccf1f3969b185f00e5572c5a0675e000264
Author: Nicolas Morey-Chaisemartin <nmoreychaisemartin@suse.com>
Date: Fri Jun 5 10:11:12 2020 +0200
0001 Drop Real(16)
Real(16) does not work on armv7
Signed-off-by: Nicolas Morey-Chaisemartin <nmoreychaisemartin@suse.com>
diff --git src/binding/fortran/mpif_h/Makefile.mk src/binding/fortran/mpif_h/Makefile.mk
index d2de6bc779ac..73049dbd9379 100644
--- src/binding/fortran/mpif_h/Makefile.mk
+++ src/binding/fortran/mpif_h/Makefile.mk
@@ -390,7 +390,6 @@ mpi_f77_sources += src/binding/fortran/mpif_h/sendf.c \
src/binding/fortran/mpif_h/null_type_copy_fnf.c
mpi_core_sources += src/binding/fortran/mpif_h/fdebug.c \
src/binding/fortran/mpif_h/setbot.c \
- src/binding/fortran/mpif_h/fortran_ops.F \
src/binding/fortran/mpif_h/setbotf.f
mpi_sources += src/binding/fortran/mpif_h/statusf2c.c src/binding/fortran/mpif_h/statusc2f.c
diff --git src/binding/fortran/mpif_h/buildiface src/binding/fortran/mpif_h/buildiface
index 2b7a77f22c90..9eebc69a4359 100755
--- src/binding/fortran/mpif_h/buildiface
+++ src/binding/fortran/mpif_h/buildiface
@@ -1045,7 +1045,6 @@ EOT
print MAKEFD <<EOT;
mpi_core_sources += src/binding/fortran/mpif_h/fdebug.c \\
src/binding/fortran/mpif_h/setbot.c \\
- src/binding/fortran/mpif_h/fortran_ops.F \\
src/binding/fortran/mpif_h/setbotf.f
mpi_sources += src/binding/fortran/mpif_h/statusf2c.c src/binding/fortran/mpif_h/statusc2f.c
diff --git src/mpi/coll/opland.c src/mpi/coll/opland.c
index 2fecd3d5fc59..59b208809471 100644
--- src/mpi/coll/opland.c
+++ src/mpi/coll/opland.c
@@ -79,7 +79,7 @@ void MPIR_LAND (
#undef MPIR_OP_TYPE_MACRO
/* --BEGIN ERROR HANDLING-- */
#ifdef HAVE_FORTRAN_BINDING
-#ifndef __PGI
+#if !defined(__PGI) && !defined(__ARM_ARCH_7A__)
/* As of v20.1, PGI compilers only support real8 */
case (MPI_REAL16):
#ifdef __ibmxl__
@@ -88,7 +88,7 @@ void MPIR_LAND (
real16_land_(invec, inoutvec, Len);
#endif
break;
-#endif /*ifndef __PGI*/
+#endif /*if !defined(__PGI) && !defined(__ARM_ARCH_7A__) */
#endif /*#ifdef HAVE_FORTRAN_BINDING*/
default: {
MPID_THREADPRIV_DECL;
@@ -123,10 +123,10 @@ int MPIR_LAND_check_dtype ( MPI_Datatype type )
MPIR_OP_TYPE_GROUP(FLOATING_POINT)
MPIR_OP_TYPE_GROUP(FLOATING_POINT_EXTRA)
#ifdef HAVE_FORTRAN_BINDING
-#ifndef __PGI
+#if !defined(__PGI) && !defined(__ARM_ARCH_7A__)
/* As of v20.1, PGI compilers only support real8 */
case (MPI_REAL16):
-#endif /*ifndef __PGI*/
+#endif /*if !defined(__PGI) && !defined(__ARM_ARCH_7A__) */
#endif /*#ifdef HAVE_FORTRAN_BINDING*/
#undef MPIR_OP_TYPE_MACRO
return MPI_SUCCESS;
diff --git src/mpi/coll/oplor.c src/mpi/coll/oplor.c
index cd340db11edf..81ba1a166cf7 100644
--- src/mpi/coll/oplor.c
+++ src/mpi/coll/oplor.c
@@ -79,7 +79,7 @@ void MPIR_LOR (
#undef MPIR_OP_TYPE_MACRO
/* --BEGIN ERROR HANDLING-- */
#ifdef HAVE_FORTRAN_BINDING
-#ifndef __PGI
+#if !defined(__PGI) && !defined(__ARM_ARCH_7A__)
/* As of v20.1, PGI compilers only support real8 */
case (MPI_REAL16):
#ifdef __ibmxl__
@@ -88,7 +88,7 @@ void MPIR_LOR (
real16_lor_(invec, inoutvec, Len);
#endif
break;
-#endif /*ifndef __PGI*/
+#endif /*if !defined(__PGI) && !defined(__ARM_ARCH_7A__) */
#endif /*#ifdef HAVE_FORTRAN_BINDING*/
default: {
MPID_THREADPRIV_DECL;
@@ -124,10 +124,10 @@ int MPIR_LOR_check_dtype ( MPI_Datatype type )
MPIR_OP_TYPE_GROUP(FLOATING_POINT_EXTRA)
#undef MPIR_OP_TYPE_MACRO
#ifdef HAVE_FORTRAN_BINDING
-#ifndef __PGI
+#if !defined(__PGI) && !defined(__ARM_ARCH_7A__)
/* As of v20.1, PGI compilers only support real8 */
case (MPI_REAL16):
-#endif /*ifndef __PGI*/
+#endif /*if !defined(__PGI) && !defined(__ARM_ARCH_7A__) */
#endif /*#ifdef HAVE_FORTRAN_BINDING*/
return MPI_SUCCESS;
/* --BEGIN ERROR HANDLING-- */
diff --git src/mpi/coll/opmax.c src/mpi/coll/opmax.c
index fde306a32512..c933bdd1ab18 100644
--- src/mpi/coll/opmax.c
+++ src/mpi/coll/opmax.c
@@ -45,7 +45,7 @@ void MPIR_MAXF(
#undef MPIR_OP_TYPE_MACRO
/* --BEGIN ERROR HANDLING-- */
#ifdef HAVE_FORTRAN_BINDING
-#ifndef __PGI
+#if !defined(__PGI) && !defined(__ARM_ARCH_7A__)
/* As of v20.1, PGI compilers only support real8 */
case MPI_REAL16:
#ifdef __ibmxl__
@@ -54,7 +54,7 @@ void MPIR_MAXF(
real16_max_(invec, inoutvec, Len);
#endif
break;
-#endif /*ifndef __PGI*/
+#endif /*if !defined(__PGI) && !defined(__ARM_ARCH_7A__) */
#endif /*#ifdef HAVE_FORTRAN_BINDING*/
default: {
MPID_THREADPRIV_DECL;
@@ -84,10 +84,10 @@ int MPIR_MAXF_check_dtype( MPI_Datatype type )
MPIR_OP_TYPE_GROUP(FORTRAN_INTEGER_EXTRA)
MPIR_OP_TYPE_GROUP(FLOATING_POINT_EXTRA)
#ifdef HAVE_FORTRAN_BINDING
-#ifndef __PGI
+#if !defined(__PGI) && !defined(__ARM_ARCH_7A__)
/* As of v20.1, PGI compilers only support real8 */
case (MPI_REAL16):
-#endif /*ifndef __PGI*/
+#endif /*if !defined(__PGI) && !defined(__ARM_ARCH_7A__) */
#endif /*#ifdef HAVE_FORTRAN_BINDING*/
#undef MPIR_OP_TYPE_MACRO
return MPI_SUCCESS;
diff --git src/mpi/coll/opmaxloc.c src/mpi/coll/opmaxloc.c
index 56387843bdc8..036e50f02dea 100644
--- src/mpi/coll/opmaxloc.c
+++ src/mpi/coll/opmaxloc.c
@@ -146,7 +146,7 @@ void MPIR_MAXLOC(
case MPI_2INTEGER: MPIR_MAXLOC_F_CASE(MPI_Fint);
case MPI_2REAL: MPIR_MAXLOC_F_CASE(MPIR_FC_REAL_CTYPE);
case MPI_2DOUBLE_PRECISION: MPIR_MAXLOC_F_CASE(MPIR_FC_DOUBLE_CTYPE);
-#ifndef __PGI
+#if !defined(__PGI) && !defined(__ARM_ARCH_7A__)
/* As of v20.1, PGI compilers only support real8 */
case MPI_REAL16:
#ifdef __ibmxl__
@@ -155,7 +155,7 @@ void MPIR_MAXLOC(
real16_maxloc_(invec, inoutvec, &flen);
#endif
break;
-#endif /*ifndef __PGI*/
+#endif /*if !defined(__PGI) && !defined(__ARM_ARCH_7A__) */
#endif
#endif
/* --BEGIN ERROR HANDLING-- */
@@ -196,11 +196,11 @@ int MPIR_MAXLOC_check_dtype( MPI_Datatype type )
case MPI_2INTEGER:
case MPI_2REAL:
case MPI_2DOUBLE_PRECISION:
-#ifndef __PGI
+#if !defined(__PGI) && !defined(__ARM_ARCH_7A__)
/* As of v20.1, PGI compilers only support real8 */
case MPI_REAL16:
break;
-#endif /*ifndef __PGI*/
+#endif /*if !defined(__PGI) && !defined(__ARM_ARCH_7A__) */
#endif
#endif
diff --git src/mpi/coll/opmin.c src/mpi/coll/opmin.c
index a9da3e9f1736..1468ae7dba72 100644
--- src/mpi/coll/opmin.c
+++ src/mpi/coll/opmin.c
@@ -43,7 +43,7 @@ void MPIR_MINF (
#undef MPIR_OP_TYPE_MACRO
/* --BEGIN ERROR HANDLING-- */
#ifdef HAVE_FORTRAN_BINDING
-#ifndef __PGI
+#if !defined(__PGI) && !defined(__ARM_ARCH_7A__)
/* As of v20.1, PGI compilers only support real8 */
case MPI_REAL16:
#ifdef __ibmxl__
@@ -52,7 +52,7 @@ void MPIR_MINF (
real16_min_(invec, inoutvec, Len);
#endif
break;
-#endif /*ifndef __PGI*/
+#endif /*if !defined(__PGI) && !defined(__ARM_ARCH_7A__) */
#endif /*#ifdef HAVE_FORTRAN_BINDING*/
default: {
MPID_THREADPRIV_DECL;
@@ -82,10 +82,10 @@ int MPIR_MINF_check_dtype ( MPI_Datatype type )
MPIR_OP_TYPE_GROUP(FORTRAN_INTEGER_EXTRA)
MPIR_OP_TYPE_GROUP(FLOATING_POINT_EXTRA)
#ifdef HAVE_FORTRAN_BINDING
-#ifndef __PGI
+#if !defined(__PGI) && !defined(__ARM_ARCH_7A__)
/* As of v20.1, PGI compilers only support real8 */
case (MPI_REAL16):
-#endif /*ifndef __PGI*/
+#endif /*if !defined(__PGI) && !defined(__ARM_ARCH_7A__) */
#endif /*#ifdef HAVE_FORTRAN_BINDING*/
#undef MPIR_OP_TYPE_MACRO
return MPI_SUCCESS;
diff --git src/mpi/coll/opminloc.c src/mpi/coll/opminloc.c
index ccbfb15fa472..fbbe028aaeb6 100644
--- src/mpi/coll/opminloc.c
+++ src/mpi/coll/opminloc.c
@@ -146,7 +146,7 @@ void MPIR_MINLOC(
case MPI_2INTEGER: MPIR_MINLOC_F_CASE(MPI_Fint);
case MPI_2REAL: MPIR_MINLOC_F_CASE(MPIR_FC_REAL_CTYPE);
case MPI_2DOUBLE_PRECISION: MPIR_MINLOC_F_CASE(MPIR_FC_DOUBLE_CTYPE);
-#ifndef __PGI
+#if !defined(__PGI) && !defined(__ARM_ARCH_7A__)
/* As of v20.1, PGI compilers only support real8 */
case MPI_REAL16:
#ifdef __ibmxl__
@@ -155,7 +155,7 @@ void MPIR_MINLOC(
real16_minloc_(invec, inoutvec, &flen);
#endif
break;
-#endif /*ifndef __PGI*/
+#endif /*if !defined(__PGI) && !defined(__ARM_ARCH_7A__) */
#endif
#endif
/* --BEGIN ERROR HANDLING-- */
@@ -198,11 +198,11 @@ int MPIR_MINLOC_check_dtype( MPI_Datatype type )
case MPI_2INTEGER:
case MPI_2REAL:
case MPI_2DOUBLE_PRECISION:
-#ifndef __PGI
+#if !defined(__PGI) && !defined(__ARM_ARCH_7A__)
/* As of v20.1, PGI compilers only support real8 */
case MPI_REAL16:
break;
-#endif /*ifndef __PGI*/
+#endif /*if !defined(__PGI) && !defined(__ARM_ARCH_7A__) */
#endif
#endif
diff --git src/mpi/coll/opsum.c src/mpi/coll/opsum.c
index 43b0f24687af..6f446dd26b1c 100644
--- src/mpi/coll/opsum.c
+++ src/mpi/coll/opsum.c
@@ -66,7 +66,7 @@ void MPIR_SUM (
#define MPIR_OP_C_COMPLEX_TYPE_MACRO(mpi_type_,c_type_,type_name_) MPIR_OP_TYPE_MACRO(mpi_type_,c_type_,type_name_)
/* --BEGIN ERROR HANDLING-- */
#ifdef HAVE_FORTRAN_BINDING
-#ifndef __PGI
+#if !defined(__PGI) && !defined(__ARM_ARCH_7A__)
/* As of v20.1, PGI compilers only support real8 */
case MPI_REAL16:
#ifdef __ibmxl__
@@ -75,7 +75,7 @@ void MPIR_SUM (
real16_sum_(invec, inoutvec, Len);
#endif
break;
-#endif /*ifndef __PGI*/
+#endif /*if !defined(__PGI) && !defined(__ARM_ARCH_7A__) */
#endif /*#ifdef HAVE_FORTRAN_BINDING*/
default: {
MPID_THREADPRIV_DECL;
@@ -108,10 +108,10 @@ int MPIR_SUM_check_dtype( MPI_Datatype type )
MPIR_OP_TYPE_GROUP(COMPLEX)
MPIR_OP_TYPE_GROUP(COMPLEX_EXTRA)
#ifdef HAVE_FORTRAN_BINDING
-#ifndef __PGI
+#if !defined(__PGI) && !defined(__ARM_ARCH_7A__)
/* As of v20.1, PGI compilers only support real8 */
case (MPI_REAL16):
-#endif /*ifndef __PGI*/
+#endif /*if !defined(__PGI) && !defined(__ARM_ARCH_7A__) */
#endif /*#ifdef HAVE_FORTRAN_BINDING*/
#undef MPIR_OP_TYPE_MACRO
return MPI_SUCCESS;

74
0001-Drop-real128.patch Normal file
View File

@ -0,0 +1,74 @@
From 8f0c71281b5dccd70a3f1d4204e3cc6bc7201ceb Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?=
<zbyszek@arm03-packager01.cloud.fedoraproject.org>
Date: Wed, 28 Aug 2019 10:57:55 +0000
Subject: [PATCH] Drop real128
https://github.com/pmodels/mpich/issues/4005
---
.../fortran/use_mpi_f08/mpi_f08_types.f90 | 24 -------------------
1 file changed, 24 deletions(-)
diff --git a/src/binding/fortran/use_mpi_f08/mpi_f08_types.f90 b/src/binding/fortran/use_mpi_f08/mpi_f08_types.f90
index f8b0fa811..46bdf6972 100644
--- a/src/binding/fortran/use_mpi_f08/mpi_f08_types.f90
+++ b/src/binding/fortran/use_mpi_f08/mpi_f08_types.f90
@@ -248,10 +248,8 @@ interface MPI_Sizeof
module procedure MPI_Sizeof_xint64
module procedure MPI_Sizeof_xreal32
module procedure MPI_Sizeof_xreal64
- module procedure MPI_Sizeof_xreal128
module procedure MPI_Sizeof_xcomplex32
module procedure MPI_Sizeof_xcomplex64
- module procedure MPI_Sizeof_xcomplex128
end interface
private :: MPI_Sizeof_character
@@ -263,10 +261,8 @@ private :: MPI_Sizeof_xint32
private :: MPI_Sizeof_xint64
private :: MPI_Sizeof_xreal32
private :: MPI_Sizeof_xreal64
-private :: MPI_Sizeof_xreal128
private :: MPI_Sizeof_xcomplex32
private :: MPI_Sizeof_xcomplex64
-private :: MPI_Sizeof_xcomplex128
contains
@@ -350,16 +346,6 @@ subroutine MPI_Sizeof_xreal64 (x, size, ierror)
ierror = 0
end subroutine MPI_Sizeof_xreal64
-subroutine MPI_Sizeof_xreal128 (x, size, ierror)
- use,intrinsic :: iso_fortran_env, only: real128
- real(real128),dimension(..) :: x
- integer, intent(out) :: size
- integer, optional, intent(out) :: ierror
-
- size = storage_size(x)/8
- ierror = 0
-end subroutine MPI_Sizeof_xreal128
-
subroutine MPI_Sizeof_xcomplex32 (x, size, ierror)
use,intrinsic :: iso_fortran_env, only: real32
complex(real32),dimension(..) :: x
@@ -380,16 +366,6 @@ subroutine MPI_Sizeof_xcomplex64 (x, size, ierror)
ierror = 0
end subroutine MPI_Sizeof_xcomplex64
-subroutine MPI_Sizeof_xcomplex128 (x, size, ierror)
- use,intrinsic :: iso_fortran_env, only: real128
- complex(real128),dimension(..) :: x
- integer, intent(out) :: size
- integer, optional, intent(out) :: ierror
-
- size = storage_size(x)/8
- ierror = 0
-end subroutine MPI_Sizeof_xcomplex128
-
subroutine MPI_Status_f2f08(f_status, f08_status, ierror)
integer, intent(in) :: f_status(MPI_STATUS_SIZE)
type(MPI_Status), intent(out) :: f08_status
--
2.21.0

11
_constraints Normal file
View File

@ -0,0 +1,11 @@
<constraints>
<hardware>
<processors>4</processors>
<disk>
<size unit="G">4</size>
</disk>
<memory>
<size unit="G">6</size>
</memory>
</hardware>
</constraints>

9
_multibuild Normal file
View File

@ -0,0 +1,9 @@
<multibuild>
<package>standard</package>
<package>testsuite</package>
<package>psm2</package>
<package>psm2-testsuite</package>
<package>gnu-hpc</package>
<package>gnu-hpc-psm2</package>
<package>gnu-hpc-testsuite</package>
</multibuild>

21
macros.hpc-mvapich2 Normal file
View File

@ -0,0 +1,21 @@
#
# mvapich2
#
%hpc_mvapich2_init(V:) \
%{-V: %define _mf_ver %{-V*}} \
%{expand: %%global hpc_mvapich2_dep_version %%{?_mf_ver}} \
%{expand: %%global hpc_mvapich2_dir mvapich2} \
%global hpc_mvapich2_pack_version %{hpc_mvapich2_dep_version} \
%{expand: %%global _hpc_mvapich2_modules mvapich2}
# We may have to add a version here.
%hpc_setup_mvapich2 \
module load mvapich2
%hpc_mvapich2_requires \
Requires: mvapich2%{hpc_mvapich2_dep_version}-%{hpc_compiler_family}%{hpc_cf_pack_version}-hpc
%hpc_mvapich2_requires_devel \
Requires: mvapich2%{hpc_mvapich2_dep_version}-%{hpc_compiler_family}%{hpc_cf_pack_version}-hpc-devel

15
mpivars.csh Normal file
View 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
View 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
mvapich2-2.3.7-1.tar.gz (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,70 @@
commit 2a05bb1eba231f7b95ddb3fdeec21146b99e43f1
Author: Nicolas Morey-Chaisemartin <nmoreychaisemartin@suse.com>
Date: Wed Jul 6 15:21:38 2022 +0200
mvapich2: allow building with external hwloc
Signed-off-by: Nicolas Morey-Chaisemartin <nmoreychaisemartin@suse.com>
diff --git Makefile.am Makefile.am
index 17788bb3ba49..c8cfeb941de7 100644
--- Makefile.am
+++ Makefile.am
@@ -203,9 +203,11 @@ if BUILD_OSU_MVAPICH
if BUILD_HWLOC_v1
SUBDIRS += contrib/hwloc_v1
else
+if BUILD_HWLOC_v2
SUBDIRS += contrib/hwloc_v2
endif
endif
+endif
# build the current directory and then the examples directory after everything else
SUBDIRS += . examples
@@ -222,8 +224,12 @@ if BUILD_HWLOC_v1
AM_CPPFLAGS += -Icontrib/hwloc_v1/include/ -I$(top_srcdir)/contrib/hwloc_v1/include
lib_lib@MPILIBNAME@_la_LIBADD += contrib/hwloc_v1/src/libhwloc_embedded.la
else
+if BUILD_HWLOC_v2
AM_CPPFLAGS += -Icontrib/hwloc_v2/include/ -I$(top_srcdir)/contrib/hwloc_v2/include
-lib_lib@MPILIBNAME@_la_LIBADD += contrib/hwloc_v2/hwloc/libhwloc_embedded.la
+lib_lib@MPILIBNAME@_la_LIBADD += contrib/hwloc_v2/src/libhwloc_embedded.la
+else
+lib_lib@MPILIBNAME@_la_LDFLAGS += -lhwloc
+endif
endif
endif
diff --git configure.ac configure.ac
index d073cb1bef5e..b82de7a9a5fb 100644
--- configure.ac
+++ configure.ac
@@ -539,18 +539,24 @@ dnl based on the environment.
AC_ARG_WITH(hwloc,
AC_HELP_STRING([--with-hwloc=version],
[Specify the hwloc version to use with MVAPICH2
- (Options: v1, v2) (Default: v1)]),,
+ (Options: v1, v2, external) (Default: v1)]),,
with_hwloc=v1)
AM_CONDITIONAL([BUILD_HWLOC_v1], [test x$with_hwloc = xv1])
AM_CONDITIONAL([BUILD_HWLOC_v2], [test x$with_hwloc = xv2])
+AM_CONDITIONAL([BUILD_HWLOC_EXT], [test x$with_hwloc = xexternal])
if test "$with_hwloc" = "v1" ; then
AC_CONFIG_SUBDIRS([contrib/hwloc_v1])
AC_DEFINE([_USE_HWLOC_V1_], 1, [Define when using HWLOC V1])
else
- AC_CONFIG_SUBDIRS([contrib/hwloc_v2])
- AC_DEFINE([_USE_HWLOC_V2_], 1, [Define when using HWLOC V2])
+ if test "$with_hwloc" = "v2" ; then
+ AC_CONFIG_SUBDIRS([contrib/hwloc_v2])
+ AC_DEFINE([_USE_HWLOC_V2_], 1, [Define when using HWLOC V2])
+ else
+ AC_DEFINE([_USE_HWLOC_EXT_], 1, [Define when using HWLOC External])
+ AC_DEFINE([_USE_HWLOC_V2_], 1, [Define when using HWLOC V2])
+ fi
fi
AC_ARG_WITH(device,

View File

@ -0,0 +1,28 @@
commit 55640b711726705a0127eb7ce767ef69e7642790
Author: Nicolas Morey-Chaisemartin <NMoreyChaisemartin@suse.com>
Date: Thu Jun 8 15:14:01 2017 +0200
mvapich2 arm support
Signed-off-by: Nicolas Morey-Chaisemartin <NMoreyChaisemartin@suse.com>
diff --git src/mpid/ch3/channels/common/include/mv2_clock.h src/mpid/ch3/channels/common/include/mv2_clock.h
index af8bb2b77d08..b73a4ffa2fc0 100644
--- src/mpid/ch3/channels/common/include/mv2_clock.h
+++ src/mpid/ch3/channels/common/include/mv2_clock.h
@@ -92,7 +92,14 @@ static inline cycles_t get_cycles()
return ret;
}
-
+#elif defined(__ARM_ARCH_7A__)
+typedef unsigned long long cycles_t;
+static inline cycles_t get_cycles(void)
+{
+ cycles_t clk;
+ asm volatile("mrrc p15, 0, %Q0, %R0, c14" : "=r" (clk));
+ return clk;
+}
#elif defined(__s390__) || defined(__s390x__)
typedef unsigned long cycles_t;
static inline cycles_t get_cycles()

View File

@ -0,0 +1,94 @@
commit 68c4106b2a8d8fdb9ba4e2bab90e90e3392b6bbd
Author: Nicolas Morey <nmorey@suse.com>
Date: Thu Oct 26 12:39:20 2023 +0200
mvapich2: openpa: add memory barriers
Backport from openPA:
commit 28d602b620b5d7ec8ca1a7f3ad8ab27d439b1751
Author: Neil Fortner <nfortne2@hdfgroup.org>
Date: Wed Dec 19 13:14:57 2012 -0600
Add more memory barriers to LL/SC ABA tests. This should fix the recent errors
on POWER7.
Reviewed by goodell.
Signed-off-by: Nicolas Morey <nmorey@suse.com>
diff --git src/openpa/test/test_primitives.c src/openpa/test/test_primitives.c
index a83b95e00578..4533c643d581 100644
--- src/openpa/test/test_primitives.c
+++ src/openpa/test/test_primitives.c
@@ -3783,12 +3783,18 @@ static int threaded_llsc_int_aba_helper_0(llsc_int_aba_t *udata)
nerrors++;
} /* end if */
+ /* Make sure shared_val is initialized before passing point 0 */
+ OPA_write_barrier();
+
/* Point 0 */
OPA_store_int(&udata->pass_point_0, 1);
/* Wait until thread 1 passes point 1 */
while(!OPA_load_int(&udata->pass_point_1));
+ /* Make sure that change_val is loaded after passing point 1 */
+ OPA_read_barrier();
+
/* Store conditional 1 to the shared value */
if(OPA_SC_int(&udata->shared_val, 1)) {
/* SC succeeded, make sure that the shared value was not changed by
@@ -3870,12 +3876,12 @@ static void *threaded_llsc_int_aba_helper_1(void *_udata)
* of this test */
OPA_store_int(&udata->shared_val, 1);
OPA_store_int(&udata->shared_val, 0);
-
- /* Write barrier to make sure the shared value was actually updated
- * before we mark point 1 as passed */
- OPA_write_barrier();
} /* end if */
+ /* Write barrier to make sure the shared_val (if appropriate) and
+ * change_val are actually updated before we mark point 1 as passed */
+ OPA_write_barrier();
+
/* Point 1 */
OPA_store_int(&udata->pass_point_1, 1);
@@ -4012,12 +4018,18 @@ static int threaded_llsc_ptr_aba_helper_0(llsc_ptr_aba_t *udata)
nerrors++;
} /* end if */
+ /* Make sure shared_val is initialized before passing point 0 */
+ OPA_write_barrier();
+
/* Point 0 */
OPA_store_int(&udata->pass_point_0, 1);
/* Wait until thread 1 passes point 1 */
while(!OPA_load_int(&udata->pass_point_1));
+ /* Make sure that change_val is loaded after passing point 1 */
+ OPA_read_barrier();
+
/* Store conditional 1 to the shared value */
if(OPA_SC_ptr(&udata->shared_val, (void *) ((int *) 0 + 1))) {
/* SC succeeded, make sure that the shared value was not changed by
@@ -4099,12 +4111,12 @@ static void *threaded_llsc_ptr_aba_helper_1(void *_udata)
* of this test */
OPA_store_ptr(&udata->shared_val, (void *) ((int *) 0 + 1));
OPA_store_ptr(&udata->shared_val, (void *) 0);
-
- /* Write barrier to make sure the shared value was actually updated
- * before we mark point 1 as passed */
- OPA_write_barrier();
} /* end if */
+ /* Write barrier to make sure the shared_val (if appropriate) and
+ * change_val are actually updated before we mark point 1 as passed */
+ OPA_write_barrier();
+
/* Point 1 */
OPA_store_int(&udata->pass_point_1, 1);

View File

@ -0,0 +1,27 @@
commit 92d5b11beaf8919979705f44d56eb0569feceb93
Author: Nicolas Morey-Chaisemartin <NMoreyChaisemartin@suse.com>
Date: Thu Jun 8 15:11:12 2017 +0200
mvapich2-s390_get_cycles
Signed-off-by: Nicolas Morey-Chaisemartin <NMoreyChaisemartin@suse.com>
diff --git src/mpid/ch3/channels/common/include/mv2_clock.h src/mpid/ch3/channels/common/include/mv2_clock.h
index dba8e51bf129..af8bb2b77d08 100644
--- src/mpid/ch3/channels/common/include/mv2_clock.h
+++ src/mpid/ch3/channels/common/include/mv2_clock.h
@@ -93,6 +93,14 @@ static inline cycles_t get_cycles()
return ret;
}
+#elif defined(__s390__) || defined(__s390x__)
+typedef unsigned long cycles_t;
+static inline cycles_t get_cycles()
+{
+ unsigned long clk;
+ asm volatile("stck %0" : "=Q" (clk) : : "cc");
+ return clk >> 2;
+}
#else
#warning get_cycles not implemented for this architecture: attempt asm/timex.h
#include <asm/timex.h>

851
mvapich2.changes Normal file
View File

@ -0,0 +1,851 @@
-------------------------------------------------------------------
Thu Oct 26 10:42:07 UTC 2023 - Nicolas Morey <nicolas.morey@suse.com>
- Add mvapich2-openpa-add-memory-barriers.patch to fix testsuite issue
on pcc64 (bsc#1216610, bsc#1216612)
-------------------------------------------------------------------
Mon Aug 7 16:57:40 UTC 2023 - Nicolas Morey <nicolas.morey@suse.com>
- Drop support for obsolete TrueScale (bsc#1212146)
-------------------------------------------------------------------
Mon Dec 5 21:11:29 UTC 2022 - Stefan Brüns <stefan.bruens@rwth-aachen.de>
- Reduce constraints to match the actual requirement. Exaggerating
the requirements hurts both this package (time until build can
start) as well as other OBS users (blocking large workers
without need).
- Use a reproducible timestamp instead of removing it altogether.
-------------------------------------------------------------------
Mon Nov 28 08:30:49 UTC 2022 - Nicolas Morey-Chaisemartin <nmoreychaisemartin@suse.com>
- Update reproducible.patch to remove timestamp generated at compilation time
-------------------------------------------------------------------
Wed Jul 6 15:08:09 UTC 2022 - Nicolas Morey-Chaisemartin <nmoreychaisemartin@suse.com>
- Add mvapich2-allow-building-with-external-hwloc.patch
to allow building against an external hwloc library
- Build mvapich2 HPC flavors against pmix and hwloc system libraries
-------------------------------------------------------------------
Wed Jun 29 12:54:33 UTC 2022 - Klaus Kämpf <kkaempf@suse.com>
- add pass-correct-size-to-snprintf.patch to fix potential buffer
overflows (required to make 'sundials' testsuite pass)
- Update to mvapich2 2.3.7
* Features and Enhancements (since 2.3.6):
- Added support for systems with Rockport's switchless networks
* Added automatic architecture detection
* Optimized performance for point-to-point operations
- Added support for the Cray Slingshot 10 interconnect
- Enhanced support for blocking collective offload using
Mellanox SHARP
* Scatter and Scatterv
- Enhanced support for non-blocking collective offload using
Mellanox SHARP
* Iallreduce, Ibarrier, Ibcast, and Ireduce
* Bug Fixes (since 2.3.6):
- Removed several deprectated functions
- Thanks to Honggang Li @RedHat for the report
- Fixed a bug where tools like CMake FindMPI would not
detect MVAPICH when compiled without Hydra mpiexec
- Thanks to Chris Chambreau and Adam Moody @LLNL for the report
- Fixed compilation error when building with mpirun and without hydra
- Thanks to James Long @University of Illinois for the report
- Fixed issue with setting RoCE mode correctly without RDMA_CM.
- Thanks to Nicolas Gagnon @Rockport Networks for the report
- Fixed an issue on heterogeneous clusters where QP attributes were
set incorrectly
- Thanks to X-ScaleSolutions for the report and fix
- Fixed a memory leak in improbe on the PSM channel
- Thanks to Gregory Lee @LLNL Beichuan Yan @University of Colorado
for the report
- Added retry logic for PSM connection establishment
- Thanks to Gregory Lee @LLNL for the report and X-ScaleSolutions
for the patch
- Fixed an initialization error when using PSM and gcc's -pg option
- Thanks to Gregory Lee @LLNL for the report and X-ScaleSolutions for
the patch
- Fixed a potential integer overflow when transfering large arrays
- Thanks to Alexander Melnikov for the report and patch
- Fix Url: link
-------------------------------------------------------------------
Wed Feb 16 11:07:12 UTC 2022 - Nicolas Morey-Chaisemartin <nmoreychaisemartin@suse.com>
- Disable dlopen for verbs library (bsc#1196019)
-------------------------------------------------------------------
Tue Oct 19 15:20:53 UTC 2021 - Nicolas Morey-Chaisemartin <nmoreychaisemartin@suse.com>
- Move rpm macros to %_rpmmacrodir (bsc#1191386)
-------------------------------------------------------------------
Tue Sep 28 07:20:18 UTC 2021 - Nicolas Morey-Chaisemartin <nmoreychaisemartin@suse.com>
- Remove obsolete python dependency (bsc#1190996)
-------------------------------------------------------------------
Tue May 18 08:08:52 UTC 2021 - Nicolas Morey-Chaisemartin <nmoreychaisemartin@suse.com>
- Update to mvapich2 2.3.6
- Enhanced performance for UD-Hybrid code
- Add multi-rail support for UD-Hybrid code
- Enhanced performance for shared-memory collectives
- Enhanced job-startup performance for flux job launcher
- Use PMI2 by default when SLURM is selected as process manager
- Add support to use aligned memory allocations for multi-threaded
applications
- Architecture detection and enhanced point-to-point tuning for
Oracle BM.HPC2 cloud shape
- Add support for GCC compiler v11
- Update hwloc v1 code to v1.11.14
- Update hwloc v2 code to v2.4.2
- Drop obsolete patches:
- fix-missing-return-code.patch as it was fixed upstream
- mvapich2-remove-deprecated-sys_siglist.patch
- rdma_find_network_type-return-MV2_NETWORK_CLASS_UNKNOWN-when-dev_list-is-freed.patch
- Refresh reproducible.patch
-------------------------------------------------------------------
Wed Mar 24 10:06:26 UTC 2021 - Egbert Eich <eich@suse.com>
- Update mvapich2 to 2.3.5.
* Enhanced performance for MPI_Allreduce and MPI_Barrier
* Support collective offload using Mellanox's SHARP for Barrier
- Enhanced tuning framework for Barrier using SHARP
* Remove dependency on underlying libibverbs, libibmad, libibumad, and
librdmacm libraries using dlopen
* Add support for Broadcom NetXtreme RoCE HCA
- Enhanced inter-node point-to-point support
* Support architecture detection for Fujitsu A64fx processor
* Enhanced point-to-point and collective tuning for Fujitsu A64fx processor
* Enhanced point-to-point and collective tuning for AMD ROME processor
* Add support for process placement aware HCA selection
- Add "MV2_PROCESS_PLACEMENT_AWARE_HCA_MAPPING" environment variable to
enable process placement aware HCA mapping
* Add support to auto-detect RoCE HCAs and auto-detect GID index
* Add support to use RoCE/Ethernet and InfiniBand HCAs at the same time
* Add architecture-specific flags to improve performance of certain CUDA
operations
- Thanks to Chris Chambreau @LLNL for the report
* Read MTU and maximum outstanding RDMA operations from the device
* Improved performance and scalability for UD-based communication
* Update maximum HCAs supported by default from 4 to 10
* Enhanced collective tuning for Frontera@TACC, Expanse@SDSC,
Ookami@StonyBrook, and bb5@EPFL
* Enhanced support for SHARP v2.1.0
* Generalize code for GPU support
- Obsolete: wrapper-revert-ldflag-order-change.patch.
- Replace: mvapich2-fix-double-free.patch by
rdma_find_network_type-return-MV2_NETWORK_CLASS_UNKNOWN-when-dev_list-is-freed.patch
-------------------------------------------------------------------
Thu Feb 18 04:46:04 UTC 2021 - Nicolas Morey-Chaisemartin <nmoreychaisemartin@suse.com>
- Re-add mvapich2-fix-double-free.patch as the bug was
somehow be reintroduced (bsc#1144000)
- Add mvapich2-remove-deprecated-sys_siglist.patch to
fix compilation errors with newer glibc
-------------------------------------------------------------------
Sun Nov 29 13:44:44 UTC 2020 - Egbert Eich <eich@suse.com>
- HPC: Fix environment module settings for MANPATH.
-------------------------------------------------------------------
Sat Jul 25 07:03:57 UTC 2020 - Egbert Eich <eich@suse.com>
- For HPC builds check for gnu compiler suite version >= 10 and
set -fallow-argument-mismatch.
-------------------------------------------------------------------
Thu Jul 23 15:53:00 UTC 2020 - Egbert Eich <eich@suse.com>
- Add build support for gcc8/9/10 to HPC build (bsc#1174439).
-------------------------------------------------------------------
Wed Jun 3 08:13:07 UTC 2020 - Nicolas Morey-Chaisemartin <nmoreychaisemartin@suse.com>
- Update so mvapich2 2.3.4
- See CHANGELOG for fixes and new features
- Add fix-missing-return-code.patch to fix compilation errors
- Add 0001-Drop-Real-16.patch to disable Real(16) support on Armv7
- Add wrapper-revert-ldflag-order-change.patch to revert LDFLAGS order
change done in 2.3.4.
This allows legacy builds to work without adding a -lmpi flag
-------------------------------------------------------------------
Tue Jan 21 08:17:00 UTC 2020 - Nicolas Morey-Chaisemartin <nmoreychaisemartin@suse.com>
- Update to mvapich2 2.3.3 (jsc#SLE-8497)
- See CHANGELOG for fixes and new features
-------------------------------------------------------------------
Fri Sep 6 08:10:21 UTC 2019 - Nicolas Morey-Chaisemartin <nmoreychaisemartin@suse.com>
- Update to mvapich2 2.3.2 (jsc#SLE-8544)
- See CHANGELOG for fixes and new features
- Drop mvapich2-make-sure-ibv_get_device_list-returned-one-before-freeing-it.patch
as it was fixed upstream.
- Use FAT LTO objects in order to provide proper static library.
- Add 0001-Drop-real128.patch to fix compilation on armv7
-------------------------------------------------------------------
Fri Aug 2 08:56:21 UTC 2019 - Nicolas Morey-Chaisemartin <nmoreychaisemartin@suse.com>
- Add mvapich2-make-sure-ibv_get_device_list-returned-one-before-freeing-it.patch
to Fix segfault when ib_uverbs is not loaded (bsc#1144000)
-------------------------------------------------------------------
Mon May 27 15:14:10 UTC 2019 - Bernhard Wiedemann <bwiedemann@suse.com>
- Add reproducible.patch to sort readdir to make package build reproducible
(boo#1041090)
-------------------------------------------------------------------
Mon May 13 07:59:22 UTC 2019 - Nicolas Morey-Chaisemartin <nmoreychaisemartin@suse.com>
- Update to mvapich2 2.3.1
- See CHANGELOG for fixes and new features
- Refreshed patches against the new version:
- 0001-Drop-GCC-check.patch
- mvapich2-arm-support.patch
- mvapich2-s390_get_cycles.patch
- Drop mvapich2-fix-double-free.patch as it was merged upstream
-------------------------------------------------------------------
Thu May 2 08:00:51 UTC 2019 - Nicolas Morey-Chaisemartin <nmoreychaisemartin@suse.com>
- Add mvapich2-fix-double-free.patch to fix a segfault
when running on a machine with no RDMA hardware (bsc#1133797)
-------------------------------------------------------------------
Wed Mar 20 19:01:00 UTC 2019 - Ana Guerrero Lopez <aguerrero@suse.com>
- Add patch to remove obsolete GCC check (bnc#1129421). It also patches
autogen.sh to get the autotools working in SLE12SP4.
* 0001-Drop-GCC-check.patch
- Force to re-run autotools to generate properly the files after
patching src/binding/cxx/buildiface
-------------------------------------------------------------------
Sun Nov 18 14:21:27 UTC 2018 - eich@suse.com
- Add macro _hpc_mvapich2_modules for modules support (bsc#1116458).
-------------------------------------------------------------------
Mon Sep 10 12:15:10 UTC 2018 - nmoreychaisemartin@suse.com
- Remove bashism in postun scriptlet
-------------------------------------------------------------------
Wed Sep 5 06:54:33 UTC 2018 - nmoreychaisemartin@suse.com
- Fix handling of mpi-selector during updates (bsc#1098653)
-------------------------------------------------------------------
Sun Aug 19 09:21:45 UTC 2018 - eich@suse.com
- macros.hpc-mvapich2:
replace %%compiler_family by %%hpc_compiler_family
-------------------------------------------------------------------
Mon Jul 16 16:13:32 UTC 2018 - msuchanek@suse.com
- Use sched_yield instead of pthread_yield (boo#1102421).
- drop mvapich2-pthread_yield.patch
-------------------------------------------------------------------
Mon Jun 18 13:12:15 UTC 2018 - nmoreychaisemartin@suse.com
- Add missing bsc and fate references to changelog
-------------------------------------------------------------------
Tue Jun 12 07:07:37 UTC 2018 - nmoreychaisemartin@suse.com
- Disable HPC builds for SLE12 (fate#323655)
-------------------------------------------------------------------
Sun Mar 25 13:07:18 UTC 2018 - kasimir_@outlook.de
- Change mvapich2-arm-support.patch to provide missing functions for
armv6hl
-------------------------------------------------------------------
Fri Feb 9 11:29:26 UTC 2018 - cgoll@suse.com
- Fix summary in module files (bnc#1080259)
-------------------------------------------------------------------
Tue Jan 30 20:04:01 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).
-------------------------------------------------------------------
Fri Jan 5 19:03:44 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).
-------------------------------------------------------------------
Fri Oct 6 14:06:37 UTC 2017 - nmoreychaisemartin@suse.com
- Add conflicts between the macros-devel packages
-------------------------------------------------------------------
Thu Oct 5 13:30:48 UTC 2017 - nmoreychaisemartin@suse.com
- Add BuildRequires to libibmad-devel for older release (SLE <= 12.2, Leap <= 42.2)
-------------------------------------------------------------------
Fri Sep 12 15:38:14 UTC 2017 - eich@suse.com
- Add HPC specific build targets using environment modules
(FATE#321712).
-------------------------------------------------------------------
Tue Sep 12 09:25:01 UTC 2017 - nmoreychaisemartin@suse.com
- Drop unnecessary dependency to xorg-x11-devel
-------------------------------------------------------------------
Mon Sep 11 09:19:37 UTC 2017 - nmoreychaisemartin@suse.com
- Only requires verbs libraries for verbs build.
libibverbs devel causes a SEGV when run in a chroot using the
psm or psm2 conduits
- Add testuite packages for all build flavours
-------------------------------------------------------------------
Thu Jul 13 14:59:13 UTC 2017 - nmoreychaisemartin@suse.com
- Add LD_LIBRARY_PATH to mpivars.sh and mpivars.csh
-------------------------------------------------------------------
Thu Jul 13 07:54:38 UTC 2017 - nmoreychaisemartin@suse.com
- Disable rpath in pkgconfig files
-------------------------------------------------------------------
Wed Jul 5 15:12:46 UTC 2017 - nmoreychaisemartin@suse.com
- Remove redondant configure options already passed by %configure
-------------------------------------------------------------------
Mon Jun 26 12:24:30 UTC 2017 - nmoreychaisemartin@suse.com
- Change install dir to allow multiple flavor to be installed
at the same time (bsc#934090)
- Fix bsc#1045955
- Fix mvapich2-psm package to use libpsm (TrueScale)
- Add mvapich2-psm2 package using libpsm2 (OmniPath)
-------------------------------------------------------------------
Mon Jun 26 09:37:42 UTC 2017 - nmoreychaisemartin@suse.com
- Use _multibuild to build the various mvapich2-flavours
-------------------------------------------------------------------
Fri Jun 23 15:40:51 UTC 2017 - nmoreychaisemartin@suse.com
- Replace dependency from libibmad-devel to infiniband-diags-devel
-------------------------------------------------------------------
Wed Jun 14 10:01:07 UTC 2017 - nmoreychaisemartin@suse.com
- Have mvapich2 and mvapich2-psm conflicts between them
- Cleanup spec file
- Remove mvapich2-testsuite RPM
-------------------------------------------------------------------
Thu Jun 8 13:55:32 UTC 2017 - nmoreychaisemartin@suse.com
- Reenable arm compilation
- Rename and cleanup mvapich-s390_get_cycles.patch to
mvapich2-s390_get_cycles.patch for coherency
- Cleanup mvapich2-pthread_yield.patch
- Add mvapich2-arm-support.patch to provide missing functions for
armv7hl and aarch64
-------------------------------------------------------------------
Thu Jun 8 11:38:36 UTC 2017 - nmoreychaisemartin@suse.com
- Remove version dependencies to libibumad, libibverbs and librdmacm
-------------------------------------------------------------------
Tue May 16 16:29:41 UTC 2017 - nmoreychaisemartin@suse.com
- Fix mvapich2-testsuite packaging
- Disable build on armv7
-------------------------------------------------------------------
Wed Mar 29 08:06:23 CEST 2017 - pth@suse.de
- Make dependencies on libs now coming from rdma-core versioned.
-------------------------------------------------------------------
Tue Nov 29 13:08:18 CET 2016 - pth@suse.de
- Create environment module (bsc#1004628).
-------------------------------------------------------------------
Wed Nov 23 11:00:43 CET 2016 - pth@suse.de
- Fix URL.
- Update to mvapich 2.2 GA. Changes since rc1:
MVAPICH2 2.2 (09/07/2016)
* Features and Enhancements (since 2.2rc2):
- Single node collective tuning for Bridges@PSC, Stampede@TACC and other
architectures
- Enable PSM builds when both PSM and PSM2 libraries are present
- Add support for HCAs that return result of atomics in big endian notation
- Establish loopback connections by default if HCA supports atomics
* Bug Fixes (since 2.2rc2):
- Fix minor error in use of communicator object in collectives
- Fix missing u_int64_t declaration with PGI compilers
- Fix memory leak in RMA rendezvous code path
MVAPICH2 2.2rc2 (08/08/2016)
* Features and Enhancements (since 2.2rc1):
- Enhanced performance for MPI_Comm_split through new bitonic algorithm
- Enable graceful fallback to Shared Memory if LiMIC2 or CMA transfer fails
- Enable support for multiple MPI initializations
- Unify process affinity support in Gen2, PSM and PSM2 channels
- Remove verbs dependency when building the PSM and PSM2 channels
- Allow processes to request MPI_THREAD_MULTIPLE when socket or NUMA node
level affinity is specified
- Point-to-point and collective performance optimization for Intel Knights
Landing
- Automatic detection and tuning for InfiniBand EDR HCAs
- Warn user to reconfigure library if rank type is not large enough to
represent all ranks in job
- Collective tuning for Opal@LLNL, Bridges@PSC, and Stampede-1.5@TACC
- Tuning and architecture detection for Intel Broadwell processors
- Add ability to avoid using --enable-new-dtags with ld
- Add LIBTVMPICH specific CFLAGS and LDFLAGS
* Bug Fixes (since 2.2rc1):
- Disable optimization that removes use of calloc in ptmalloc hook
detection code
- Fix weak alias typos (allows successful compilation with CLANG compiler)
- Fix issues in PSM large message gather operations
- Enhance error checking in collective tuning code
- Fix issues with UD based communication in RoCE mode
- Fix issues with PMI2 support in singleton mode
- Fix default binding bug in hydra launcher
- Fix issues with Checkpoint Restart when launched with mpirun_rsh
- Fix fortran binding issues with Intel 2016 compilers
- Fix issues with socket/NUMA node level binding
- Disable atomics when using Connect-IB with RDMA_CM
- Fix hang in MPI_Finalize when using hybrid channel
- Fix memory leaks
-------------------------------------------------------------------
Tue Nov 15 14:04:50 CET 2016 - pth@suse.de
- Update to version 2.2rc1 (fate#319240). Changes since 2.1:
MVAPICH2 2.2rc1 (03/29/2016)
* Features and Enhancements (since 2.2b):
- Support for OpenPower architecture
- Optimized inter-node and intra-node communication
- Support for Intel Omni-Path architecture
- Thanks to Intel for contributing the patch
- Introduction of a new PSM2 channel for Omni-Path
- Support for RoCEv2
- Architecture detection for PSC Bridges system with Omni-Path
- Enhanced startup performance and reduced memory footprint for storing
InfiniBand end-point information with SLURM
- Support for shared memory based PMI operations
- Availability of an updated patch from the MVAPICH project website
with this support for SLURM installations
- Optimized pt-to-pt and collective tuning for Chameleon InfiniBand
systems at TACC/UoC
- Enable affinity by default for TrueScale(PSM) and Omni-Path(PSM2)
channels
- Enhanced tuning for shared-memory based MPI_Bcast
- Enhanced debugging support and error messages
- Update to hwloc version 1.11.2
* Bug Fixes (since 2.2b):
- Fix issue in some of the internal algorithms used for MPI_Bcast,
MPI_Alltoall and MPI_Reduce
- Fix hang in one of the internal algorithms used for MPI_Scatter
- Thanks to Ivan Raikov@Stanford for reporting this issue
- Fix issue with rdma_connect operation
- Fix issue with Dynamic Process Management feature
- Fix issue with de-allocating InfiniBand resources in blocking mode
- Fix build errors caused due to improper compile time guards
- Thanks to Adam Moody@LLNL for the report
- Fix finalize hang when running in hybrid or UD-only mode
- Thanks to Jerome Vienne@TACC for reporting this issue
- Fix issue in MPI_Win_flush operation
- Thanks to Nenad Vukicevic for reporting this issue
- Fix out of memory issues with non-blocking collectives code
- Thanks to Phanisri Pradeep Pratapa and Fang Liu@GaTech for
reporting this issue
- Fix fall-through bug in external32 pack
- Thanks to Adam Moody@LLNL for the report and patch
- Fix issue with on-demand connection establishment and blocking mode
- Thanks to Maksym Planeta@TU Dresden for the report
- Fix memory leaks in hardware multicast based broadcast code
- Fix memory leaks in TrueScale(PSM) channel
- Fix compilation warnings
MVAPICH2 2.2b (11/12/2015)
* Features and Enhancements (since 2.2a):
- Enhanced performance for small messages
- Enhanced startup performance with SLURM
- Support for PMIX_Iallgather and PMIX_Ifence
- Support to enable affinity with asynchronous progress thread
- Enhanced support for MPIT based performance variables
- Tuned VBUF size for performance
- Improved startup performance for QLogic PSM-CH3 channel
- Thanks to Maksym Planeta@TU Dresden for the patch
* Bug Fixes (since 2.2a):
- Fix issue with MPI_Get_count in QLogic PSM-CH3 channel with very large
messages (>2GB)
- Fix issues with shared memory collectives and checkpoint-restart
- Fix hang with checkpoint-restart
- Fix issue with unlinking shared memory files
- Fix memory leak with MPIT
- Fix minor typos and usage of inline and static keywords
- Thanks to Maksym Planeta@TU Dresden for the patch and suggestions
- Fix missing MPIDI_FUNC_EXIT
- Thanks to Maksym Planeta@TU Dresden for the patch
- Remove unused code
- Thanks to Maksym Planeta@TU Dresden for the patch
- Continue with warning if user asks to enable XRC when the system does not
support XRC
MVAPICH2 2.2a (08/17/2015)
* Features and Enhancements (since 2.1 GA):
- Based on MPICH 3.1.4
- Support for backing on-demand UD CM information with shared memory
for minimizing memory footprint
- Reorganized HCA-aware process mapping
- Dynamic identification of maximum read/atomic operations supported by HCA
- Enabling support for intra-node communications in RoCE mode without
shared memory
- Updated to hwloc 1.11.0
- Updated to sm_20 kernel optimizations for MPI Datatypes
- Automatic detection and tuning for 24-core Haswell architecture
* Bug Fixes (since 2.1 GA):
- Fix for error with multi-vbuf design for GPU based communication
- Fix bugs with hybrid UD/RC/XRC communications
- Fix for MPICH putfence/getfence for large messages
- Fix for error in collective tuning framework
- Fix validation failure with Alltoall with IN_PLACE option
- Thanks for Mahidhar Tatineni @SDSC for the report
- Fix bug with MPI_Reduce with IN_PLACE option
- Thanks to Markus Geimer for the report
- Fix for compilation failures with multicast disabled
- Thanks to Devesh Sharma @Emulex for the report
- Fix bug with MPI_Bcast
- Fix IPC selection for shared GPU mode systems
- Fix for build time warnings and memory leaks
- Fix issues with Dynamic Process Management
- Thanks to Neil Spruit for the report
- Fix bug in architecture detection code
- Thanks to Adam Moody @LLNL for the report
-------------------------------------------------------------------
Fri Oct 14 11:28:41 CEST 2016 - pth@suse.de
- Create and include modules file for Mvapich2 (bsc#1004628).
- Remove mvapich2-fix-implicit-decl.patch as the fix is upstream.
- Adapt spec file to the changed micro benchmark install directory.
-------------------------------------------------------------------
Sun Jul 24 14:24:59 UTC 2016 - p.drouand@gmail.com
- Update to version 2.1
* Features and Enhancements (since 2.1rc2):
- Tuning for EDR adapters
- Optimization of collectives for SDSC Comet system
- Based on MPICH-3.1.4
- Enhanced startup performance with mpirun_rsh
- Checkpoint-Restart Support with DMTCP (Distributed MultiThreaded
CheckPointing)
- Thanks to the DMTCP project team (http://dmtcp.sourceforge.net/)
- Support for handling very large messages in RMA
- Optimize size of buffer requested for control messages in large message
transfer
- Enhanced automatic detection of atomic support
- Optimized collectives (bcast, reduce, and allreduce) for 4K processes
- Introduce support to sleep for user specified period before aborting
- Disable PSM from setting CPU affinity
- Install PSM error handler to print more verbose error messages
- Introduce retry mechanism to perform psm_ep_open in PSM channel
* Bug-Fixes (since 2.1rc2):
- Relocate reading environment variables in PSM
- Fix issue with automatic process mapping
- Fix issue with checkpoint restart when full path is not given
- Fix issue with Dynamic Process Management
- Fix issue in CUDA IPC code path
- Fix corner case in CMA runtime detection
* Features and Enhancements (since 2.1rc1):
- Based on MPICH-3.1.4
- Enhanced startup performance with mpirun_rsh
- Checkpoint-Restart Support with DMTCP (Distributed MultiThreaded
CheckPointing)
- Support for handling very large messages in RMA
- Optimize size of buffer requested for control messages in large message
transfer
- Enhanced automatic detection of atomic support
- Optimized collectives (bcast, reduce, and allreduce) for 4K processes
- Introduce support to sleep for user specified period before aborting
- Disable PSM from setting CPU affinity
- Install PSM error handler to print more verbose error messages
- Introduce retry mechanism to perform psm_ep_open in PSM channel
* Bug-Fixes (since 2.1rc1):
- Fix failures with shared memory collectives with checkpoint-restart
- Fix failures with checkpoint-restart when using internal communication
buffers of different size
- Fix undeclared variable error when --disable-cxx is specified with
configure
- Fix segfault seen during connect/accept with dynamic processes
- Fix errors with large messages pack/unpack operations in PSM channel
- Fix for bcast collective tuning
- Fix assertion errors in one-sided put operations in PSM channel
- Fix issue with code getting stuck in infinite loop inside ptmalloc
- Fix assertion error in shared memory large message transfers
- Fix compilation warnings
* Features and Enhancements (since 2.1a):
- Based on MPICH-3.1.3
- Flexibility to use internal communication buffers of different size for
improved performance and memory footprint
- Improve communication performance by removing locks from critical path
- Enhanced communication performance for small/medium message sizes
- Support for linking Intel Trace Analyzer and Collector
- Increase the number of connect retry attempts with RDMA_CM
- Automatic detection and tuning for Haswell architecture
* Bug-Fixes (since 2.1a):
- Fix automatic detection of support for atomics
- Fix issue with void pointer arithmetic with PGI
- Fix deadlock in ctxidup MPICH test in PSM channel
- Fix compile warnings
* Features and Enhancements (since 2.0):
- Based on MPICH-3.1.2
- Support for PMI-2 based startup with SLURM
- Enhanced startup performance for Gen2/UD-Hybrid channel
- GPU support for MPI_Scan and MPI_Exscan collective operations
- Optimize creation of 2-level communicator
- Collective optimization for PSM-CH3 channel
- Tuning for IvyBridge architecture
- Add -export-all option to mpirun_rsh
- Support for additional MPI-T performance variables (PVARs)
in the CH3 channel
- Link with libstdc++ when building with GPU support
(required by CUDA 6.5)
* Bug-Fixes (since 2.0):
- Fix error in large message (>2GB) transfers in CMA code path
- Fix memory leaks in OFA-IB-CH3 and OFA-IB-Nemesis channels
- Fix issues with optimizations for broadcast and reduce collectives
- Fix hang at finalize with Gen2-Hybrid/UD channel
- Fix issues for collectives with non power-of-two process counts
- Make ring startup use HCA selected by user
- Increase counter length for shared-memory collectives
- Use download Url as source
- Some other minor improvements
- Add mvapich2-fix-implicit-decl.patch
-------------------------------------------------------------------
Thu Oct 9 13:32:28 CEST 2014 - pth@suse.de
- Don't provide the full source uri as build servis can't handle it.
-------------------------------------------------------------------
Wed Oct 8 17:12:27 CEST 2014 - pth@suse.de
- Only run autogen.sh if the distribution has a new enough automake.
-------------------------------------------------------------------
Wed Sep 24 17:06:22 CEST 2014 - pth@suse.de
- Update to mvapich2 2.0 GMC:
* Features and Enhancements (since 2.0rc2):
- Consider CMA in collective tuning framework
* Bug-Fixes (since 2.0rc2):
- Fix bug when disabling registration cache
- Fix shared memory window bug when shared memory collectives
are disabled.
- Fix mpirun_rsh bug when running mpmd programs with no arguments
- Exclude Aarch64 for the time being as asm/timex.h seems to be missing
from the glibc kernel headers.
-------------------------------------------------------------------
Tue Jun 3 11:24:34 CEST 2014 - pth@suse.de
- Update to OFED 3.12 final.
-------------------------------------------------------------------
Mon May 26 13:02:24 CEST 2014 - pth@suse.de
- Update to 2.0rc2:
* Features and Enhancements (since 2.0rc1):
- CMA support is now enabled by default
- Optimization of collectives with CMA support
- RMA optimizations for shared memory and atomic operations
- Tuning RGET and Atomics operations
- Tuning RDMA FP-based communication
- MPI-T support for additional performance and control variables
- The --enable-mpit-pvars=yes configuration option will now
enable only MVAPICH2 specific variables
- Large message transfer support for PSM interface
- Optimization of collectives for PSM interface
- Updated to hwloc v1.9
* Bug-Fixes (since 2.0rc1):
- Fix multicast hang when there is a single process on one node
and more than one process on other nodes
- Fix non-power-of-two usage of scatter-doubling-allgather algorithm
- Fix for bcastzero type hang during finalize
- Enhanced handling of failures in RDMA_CM based
connection establishment
- Fix for a hang in finalize when using RDMA_CM
- Finish receive request when RDMA READ completes in RGET protocol
- Always use direct RDMA when flush is used
- Fix compilation error with --enable-g=all in PSM interface
- Fix warnings and memory leaks
-------------------------------------------------------------------
Thu May 15 16:01:50 CEST 2014 - pth@suse.de
- mvapich2-psm-devel requires infinipath-psm-devel.
- Remove redundent requires for the devel-static package.
-------------------------------------------------------------------
Wed May 7 15:40:33 UTC 2014 - stefan.fent@suse.com
- remove typo in mvapich-s390_get_cycles.patch
-------------------------------------------------------------------
Tue Apr 29 13:47:06 CEST 2014 - pth@suse.de
- Remove bogus 0 from spec.
-------------------------------------------------------------------
Mon Apr 28 12:30:12 CEST 2014 - pth@suse.de
- Remove all additional mvapich specific CFLAGS and extra LIBS.
-------------------------------------------------------------------
Fri Apr 25 09:41:47 CEST 2014 - pth@suse.de
- Fix ExclusiveArch
- Only PSM needs explicit configuration so drop the else branch
in configure call.
- mvapich2 now builds in parallel so tell make.
-------------------------------------------------------------------
Thu Apr 24 21:27:06 CEST 2014 - pth@suse.de
- Build Mvapich2 for Qlogic from its own mvapich2-psm.spec.
-------------------------------------------------------------------
Wed Apr 23 18:04:36 CEST 2014 - pth@suse.de
- Add mvapich2-pthread_yield.patch to define GNU_SOURCE before
including pthread.h to get pthread_yield declared.
-------------------------------------------------------------------
Wed Apr 23 14:48:07 CEST 2014 - pth@suse.de
- Don't require libibcommon as it's gone with OFED 3.12.
-------------------------------------------------------------------
Wed Apr 16 15:50:22 UTC 2014 - stefan.fent@suse.com
- add asm code from kernel to properly implement get_cycles on
s390 and s390x (bnc #870424) (mvapich-s390_get_cycles.patch)
-------------------------------------------------------------------
Mon Apr 7 14:49:22 CEST 2014 - pth@suse.de
- Fix spec so that testsuite builds correctly.
-------------------------------------------------------------------
Sat Apr 5 20:28:49 CEST 2014 - pth@suse.de
- Update config.* to make it build on ppc64le.
-------------------------------------------------------------------
Thu Mar 27 12:56:50 CET 2014 - pth@suse.de
- Regenerate autotool files to get ppc64le recognized.
- The predefined platform macros for s390 are lower case not upcase.
-------------------------------------------------------------------
Wed Mar 26 16:15:45 CET 2014 - pth@suse.de
- Finally got the syntax for conditionals in spec right...
- Add a dummy implementation of get_cycles for s390x.
- Update to 2.0rc1 as this is a MPI-3 implementation. For
detailed changes see.
- Fix options passed to mpi-selector
-------------------------------------------------------------------
Tue Mar 25 14:42:43 CET 2014 - pth@suse.de
- Include the two COPYRIGHT files in the package.
- BuildRequire kernel-headers on s390x.
- Fix spec file
-------------------------------------------------------------------
Wed Mar 5 14:04:47 CET 2014 - pth@suse.de
- Compile with support for PSM on ix86 (fate#315889).
- mvapich2 has a testsuite, so run it from a separate spec file.
-------------------------------------------------------------------
Mon Feb 10 13:13:39 CET 2014 - pth@suse.de
- Update to 1.9:
- Remove mvapich2-1.0.2-non-void-rtn.patch as the changes are in
the upstream source.
- Reformat BuildRequires
-------------------------------------------------------------------
Fri Jan 24 19:15:39 CET 2014 - pth@suse.de
- Update to OFED 3.12 daily.
-------------------------------------------------------------------
Fri Feb 29 00:00:00 CET 2008 - - jjolly@suse.de
- Update to 1.0.2 from OFED 1.3 GA release
- Minor changes to return value patch
-------------------------------------------------------------------
Thu Jan 31 00:00:00 CET 2008 - - jjolly@suse.de
- Update to 1.0.1 from OFED 1.3 rc2
- Fixed several 'undefined return value' compile errors
-------------------------------------------------------------------
Tue Jul 10 00:00:00 CET 2007 - - hvogel@suse.de
- Initial Package, Version 0.9.8

589
mvapich2.spec Normal file
View File

@ -0,0 +1,589 @@
#
# spec file
#
# Copyright (c) 2023 SUSE LLC
#
# 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}
%define pname mvapich2
%define vers 2.3.7
%define _vers 2_3_7
%define rc_ver -1
%if "%{flavor}" == ""
ExclusiveArch: do_not_build
%{bcond_with hpc}
%endif
%if "%{flavor}" == "standard"
%define build_flavor verbs
%{bcond_with hpc}
%endif
%if "%{flavor}" == "testsuite"
%define build_flavor verbs
%define testsuite 1
%{bcond_with hpc}
%endif
%if "%{flavor}" == "psm2"
%define build_flavor psm2
%{bcond_with hpc}
%endif
%if "%{flavor}" == "psm2-testsuite"
%define build_flavor psm2
%define testsuite 1
%{bcond_with hpc}
%endif
%if "%flavor" == "gnu-hpc"
%define compiler_family gnu
%undefine c_f_ver
%define build_flavor verbs
%{bcond_without hpc}
%endif
%if "%flavor" == "gnu-hpc-testsuite"
%define compiler_family gnu
%undefine c_f_ver
%define testsuite 1
%define build_flavor verbs
%{bcond_without hpc}
%endif
%if "%flavor" == "gnu-hpc-psm2"
%define compiler_family gnu
%undefine c_f_ver
%define build_flavor psm2
%{bcond_without hpc}
%endif
%if "%flavor" == "gnu7-hpc"
%define compiler_family gnu
%define c_f_ver 7
%define build_flavor verbs
%{bcond_without hpc}
%endif
%if "%flavor" == "gnu7-hpc-testsuite"
%define compiler_family gnu
%define c_f_ver 7
%define testsuite 1
%define build_flavor verbs
%{bcond_without hpc}
%endif
%if "%flavor" == "gnu7-hpc-psm2"
%define compiler_family gnu
%define c_f_ver 7
%define build_flavor psm2
%{bcond_without hpc}
%endif
%if "%flavor" == "gnu8-hpc"
%define compiler_family gnu
%define c_f_ver 8
%define build_flavor verbs
%{bcond_without hpc}
%endif
%if "%flavor" == "gnu8-hpc-testsuite"
%define compiler_family gnu
%define c_f_ver 8
%define testsuite 1
%define build_flavor verbs
%{bcond_without hpc}
%endif
%if "%flavor" == "gnu8-hpc-psm2"
%define compiler_family gnu
%define c_f_ver 8
%define build_flavor psm2
%{bcond_without hpc}
%endif
%if "%flavor" == "gnu9-hpc"
%define compiler_family gnu
%define c_f_ver 9
%define build_flavor verbs
%{bcond_without hpc}
%endif
%if "%flavor" == "gnu9-hpc-testsuite"
%define compiler_family gnu
%define c_f_ver 9
%define testsuite 1
%define build_flavor verbs
%{bcond_without hpc}
%endif
%if "%flavor" == "gnu9-hpc-psm2"
%define compiler_family gnu
%define c_f_ver 9
%define build_flavor psm2
%{bcond_without hpc}
%endif
%if "%flavor" == "gnu10-hpc"
%define compiler_family gnu
%define c_f_ver 10
%define build_flavor verbs
%{bcond_without hpc}
%endif
%if "%flavor" == "gnu10-hpc-testsuite"
%define compiler_family gnu
%define c_f_ver 10
%define testsuite 1
%define build_flavor verbs
%{bcond_without hpc}
%endif
%if "%flavor" == "gnu10-hpc-psm2"
%define compiler_family gnu
%define c_f_ver 10
%define build_flavor psm2
%{bcond_without hpc}
%endif
%if "%{build_flavor}" != "verbs"
%define pack_suff %{?build_flavor:-%{build_flavor}}
%endif
%if %{without hpc}
%define module_name mvapich2%{?pack_suff}
%define p_prefix /usr/%_lib/mpi/gcc/%{module_name}
%define p_bindir %{p_prefix}/bin
%define p_datadir %{p_prefix}/share
%define p_includedir %{p_prefix}/include
%define p_mandir %{p_datadir}/man
%define p_libdir %{p_prefix}/%{_lib}
%define p_libexecdir %{p_prefix}/%{_lib}
%define _moduledir /usr/share/modules/gnu-%{module_name}
%define package_name mvapich2%{?pack_suff}
%{bcond_with pmix}
%{bcond_with hwloc}
%else
%{hpc_init -M -c %compiler_family %{?c_f_ver:-v %{c_f_ver}} -m mvapich2 %{?pack_suff:-e %{build_flavor}}}
%define p_prefix %{hpc_prefix}
%define p_bindir %{hpc_bindir}
%define p_datadir %{hpc_datadir}
%define p_includedir %{hpc_includedir}
%define p_mandir %{hpc_mandir}
%define p_libdir %{hpc_libdir}
%define p_libexecdir %{hpc_libexecdir}
%define package_name %{hpc_package_name %{_vers}}
%global hpc_mvapich2_dep_version %(VER=%{?m_f_ver}; echo -n ${VER})
%global hpc_mvapich2_dir mvapich2
%global hpc_mvapich2_pack_version %{hpc_mvapich2_dep_version}
%{bcond_without pmix}
%{bcond_without hwloc}
%endif
# Disable hpc builds for SLE12
%if 0%{?sle_version} > 120200 && 0%{?sle_version} < 150000 && %{with hpc}
%{bcond_with skip_hpc_build}
%else
%{bcond_without skip_hpc_build}
%endif
Name: %{package_name}
Summary: OSU MVAPICH2 MPI package
License: BSD-3-Clause
Group: Development/Libraries/Parallel
Version: %{vers}
Release: 0
Source0: http://mvapich.cse.ohio-state.edu/download/mvapich/mv2/mvapich2-%{version}%{?rc_ver}.tar.gz
Source1: mpivars.sh
Source2: mpivars.csh
Source3: macros.hpc-mvapich2
Source100: _multibuild
Patch0: mvapich2-s390_get_cycles.patch
Patch2: mvapich2-arm-support.patch
# PATCH-FIX-UPSTREAM 0001-Drop-GCC-check.patch (bnc#1129421)
# It's been merged upstream, should be removed with the next release
Patch3: 0001-Drop-GCC-check.patch
Patch4: reproducible.patch
Patch5: pass-correct-size-to-snprintf.patch
Patch6: mvapich2-allow-building-with-external-hwloc.patch
Patch7: mvapich2-openpa-add-memory-barriers.patch
## Armv7 specific patches
# PATCH-FIX-UPSTREAM 0001-Drop-real128.patch (https://github.com/pmodels/mpich/issues/4005)
Patch50: 0001-Drop-real128.patch
Patch51: 0001-Drop-Real-16.patch
URL: http://mvapich.cse.ohio-state.edu
BuildRoot: %{_tmppath}/%{name}-%{version}-build
%if %{without skip_hpc_build}
ExclusiveArch: do_not_build
%endif
BuildRequires: autoconf
BuildRequires: autoconf
BuildRequires: automake
BuildRequires: automake
BuildRequires: bison
BuildRequires: flex
BuildRequires: hwloc-devel >= 2.0
%ifnarch s390 s390x %{arm}
BuildRequires: libnuma-devel
%endif
BuildRequires: libtool
BuildRequires: libtool
BuildRequires: sysfsutils
%if %{without hpc}
BuildRequires: gcc-c++
BuildRequires: gcc-fortran
BuildRequires: mpi-selector
%else
BuildRequires: %{compiler_family}%{?c_f_ver}-compilers-hpc-macros-devel
BuildRequires: lua-lmod
BuildRequires: suse-hpc
%endif
%if %{with hwloc}
BuildRequires: hwloc-devel
%endif
%if %{with pmix}
BuildRequires: pmix-devel
%endif
%if "%{build_flavor}" == "psm2" && %{with skip_hpc_build}
ExclusiveArch: x86_64
BuildRequires: libpsm2-devel
%endif
%if "%{build_flavor}" == "verbs"
BuildRequires: infiniband-diags-devel
BuildRequires: libibumad-devel
BuildRequires: libibverbs-devel
BuildRequires: librdmacm-devel
%if 0%{?sle_version} <= 120200
BuildRequires: libibmad-devel
%endif
%endif
%if %{without hpc}
Requires: mpi-selector
%else
%hpc_requires
%endif
%description
This is an MPI-3 implementation which includes all MPI-1 features. It
is based on MPICH2 and MVICH.
%{!?testsuite:%{?with_hpc:%{hpc_master_package -a -L}}}
%if 0%{!?testsuite:1}
%package devel
Summary: OSU MVAPICH2 MPI package
Group: Development/Libraries/Parallel
Requires: %{name} = %{version}
%if "%{build_flavor}" == "psm2"
Requires: libpsm2-devel
%endif
%if "%{build_flavor}" == "verbs"
Requires: libibumad-devel
Requires: libibverbs-devel
Requires: librdmacm-devel
%endif
%if %{without hpc}
Requires: gcc-c++
Requires: gcc-fortran
%else
%hpc_requires_devel
%endif
%description devel
This is an MPI-2 implementation which includes all MPI-1 features. It
is based on MPICH2 and MVICH.
%{?with_hpc:%{hpc_master_package -a devel}}
%package devel-static
Summary: OSU MVAPICH2 MPI package - static libraries
Group: Development/Libraries/Parallel
Requires: %{name}-devel = %{version}
%description devel-static
This is an MPI-3 implementation which includes all MPI-1 and MPI-2 features. It
is based on MPICH2 and MVICH. This package contains the static libraries
%package doc
Summary: OSU MVAPICH2 MPI package - Documentation
Group: Development/Libraries/Parallel
Requires: %{name} = %{version}
%description doc
This is an MPI-3 implementation which includes all MPI-1 and MPI-2 features. It
is based on MPICH2 and MVICH. This package contains the static libraries
%{?with_hpc:%{hpc_master_package doc}}
%package macros-devel
Summary: OSU MVAPICH2 MPI package - HPC build macros
Group: Development/Libraries/Parallel
Requires: %{name}-devel = %{version}
Provides: %{pname}-hpc-macros-devel = %{version}
Conflicts: otherproviders(%{pname}-hpc-macros-devel)
%description macros-devel
This is an MPI-3 implementation which includes all MPI-1 and MPI-2 features. It
is based on MPICH2 and MVICH. This package contains the static libraries
%{?with_hpc:%{hpc_master_package macros-devel}}
%endif # ! testsuite
%prep
%{?with_hpc:%hpc_debug}
%setup -q -n mvapich2-%{version}%{?rc_ver}
%patch0
%patch2
%patch3
%patch4
%patch5 -p1
%patch6
%patch7
# Only apply these patches on Armv7
%ifarch armv7hl
%patch50 -p1
%patch51
%endif
cp /usr/share/automake*/config.* .
%build
%global _lto_cflags %{_lto_cflags} -ffat-lto-objects
# GCC10 needs an extra flag to allow badly passed parameters
%if 0%{?suse_version} > 1500 || 0%{?hpc_gnu_dep_version} >= 10
export FFLAGS="-fallow-argument-mismatch $FFLAGS"
%endif
PERL_USE_UNSAFE_INC=1 ./autogen.sh
%if %{with hpc}
%{hpc_setup}
%{hpc_configure} \
%else
%configure \
--prefix=%{p_prefix} \
--exec-prefix=%{p_prefix} \
--datadir=%{p_datadir} \
--bindir=%{p_bindir} \
--includedir=%{p_includedir} \
--libdir=%{p_libdir} \
--libexecdir=%{p_libexecdir} \
--mandir=%{p_mandir} \
%endif
--docdir=%{_datadir}/doc/%{name} \
--disable-wrapper-rpath \
--enable-yield=sched_yield \
%if %{with hwloc}
--with-hwloc=external \
%endif
%if %{with pmix}
--with-pmix=${_prefix} \
%endif
%if "%{build_flavor}" == "psm2"
--with-device=ch3:psm \
--with-psm2=/usr \
%endif
%if "%{build_flavor}" == "verbs"
--disable-ibv-dlopen \
%endif
--without-mpe
make %{?_smp_mflags} V=1
%if 0%{?testsuite}
%check
make V=1 check
%endif
%install
%if 0%{?testsuite}
# Remove everything from testsuite package
# It is all contained by mvapich2 packages
rm -rf %{buildroot}/*
%else
make DESTDIR=%{buildroot} V=1 install
rm -f %{buildroot}%{p_libdir}/libfmpich.la \
%{buildroot}%{p_libdir}/libmpich.la \
%{buildroot}%{p_libdir}/libmpichcxx.la \
%{buildroot}%{p_libdir}/libmpichf90.la \
%{buildroot}%{p_libdir}/libmpl.la \
%{buildroot}%{p_libdir}/libopa.la \
%{buildroot}%{p_libdir}/libmpi.la \
%{buildroot}%{p_libdir}/libmpicxx.la \
%{buildroot}%{p_libdir}/libmpifort.la
install -m 0755 -d %{buildroot}%{_datadir}/doc/%{name}
install -m 0644 COPYRIGHT* %{buildroot}%{_datadir}/doc/%{name}
install -m 0644 CHANGE* %{buildroot}%{_datadir}/doc/%{name}
%if %{without hpc}
# make and install mpivars files
install -m 0755 -d %{buildroot}%{_bindir}
sed -e 's,prefix,%p_prefix,g' -e 's,libdir,%{p_libdir},g' %{S:1} > %{buildroot}%{p_bindir}/mpivars.sh
sed -e 's,prefix,%p_prefix,g' -e 's,libdir,%{p_libdir},g' %{S:2} > %{buildroot}%{p_bindir}/mpivars.csh
mkdir -p %{buildroot}%{_moduledir}
cat << EOF > %{buildroot}%{_moduledir}/%{version}
#%%Module
proc ModulesHelp { } {
global dotversion
puts stderr "\tLoads the gnu - mvapich2 %{version} Environment"
}
module-whatis "Loads the gnu mvapich2 %{version} Environment."
conflict gnu-mvapich2
prepend-path PATH %{%p_bindir}
prepend-path INCLUDE %{p_includedir}
prepend-path INCLUDE %{p_libdir}
prepend-path MANPATH %{p_mandir}
prepend-path LD_LIBRARY_PATH %{p_libdir}
EOF
cat << EOF > %{buildroot}%{_moduledir}/.version
#%%Module1.0
set ModulesVersion "%{version}"
EOF
%else # with hpc
install -d -m 755 %{buildroot}%{_rpmmacrodir}
cp %{S:3} %{buildroot}%{_rpmmacrodir}
%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}
prepend-path PATH %{hpc_bindir}
prepend-path MANPATH %{hpc_mandir}
prepend-path LD_LIBRARY_PATH %{hpc_libdir}
prepend-path MODULEPATH %{hpc_modulepath}
prepend-path MPI_DIR %{hpc_prefix}
%{hpc_modulefile_add_pkgconfig_path}
family "MPI"
EOF
cat <<EOF > %{buildroot}/%{p_bindir}/mpivars.sh
%hpc_setup_compiler
module load %{hpc_mpi_family}%{?pack_suff}/%{version}
EOF
sed -e "s/export/setenv/" -e "s/=/ /" \
%{buildroot}/%{p_bindir}/mpivars.sh > \
%{buildroot}/%{p_bindir}/mpivars.csh
mkdir -p %{buildroot}%{_sysconfdir}/rpm
%endif # with hpc
%post
/sbin/ldconfig
%if %{without hpc}
# 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}%{?pack_suff} \
--source-dir %{p_bindir} \
--yes
%endif
%postun
/sbin/ldconfig
%if %{without hpc}
# Only unregister when uninstalling
if [ "$1" = "0" ]; then
/usr/bin/mpi-selector --unregister %{name}%{?pack_suff} --yes
# Deregister the default if we are uninstalling it
if [ "$(/usr/bin/mpi-selector --system --query)" = "%{name}%{?pack_suff}" ]; then
/usr/bin/mpi-selector --system --unset --yes
fi
fi
%else
%hpc_module_delete_if_default
%endif
%files
%defattr(-, root, root)
%if %{without hpc}
%dir /usr/%_lib/mpi
%dir /usr/%_lib/mpi/gcc
%dir /usr/share/modules
%dir %{_moduledir}
%{_moduledir}
%else
%hpc_mpi_dirs
%hpc_modules_files
%endif
%doc %{_datadir}/doc/%{name}/COPYRIGHT*
%doc %{_datadir}/doc/%{name}/CHANGE*
%dir %{p_prefix}
%dir %{p_bindir}
%dir %{p_datadir}
%dir %{p_includedir}
%dir %{p_mandir}
%dir %{p_mandir}/man1
%dir %{p_mandir}/man3
%dir %{p_libdir}
%dir %{p_libexecdir}
%{p_bindir}/*
%{p_libexecdir}/osu-micro-benchmarks
%{p_mandir}/man1/*
%{p_libdir}/*.so.*
%files doc
%defattr(-, root, root)
%doc %{_datadir}/doc/%{name}
%exclude /%{_datadir}/doc/%{name}/COPYRIGHT*
%exclude /%{_datadir}/doc/%{name}/CHANGE*
%files devel
%defattr(-,root,root)
%dir %{p_libdir}/pkgconfig
%{p_mandir}/man3/*
%{p_includedir}
%{p_libdir}/*.so
%{p_libdir}/pkgconfig/mvapich2.pc
%{p_libdir}/pkgconfig/openpa.pc
%files devel-static
%defattr(-,root,root)
%{p_libdir}/*.a
%if %{with hpc}
%files macros-devel
%defattr(-,root,root)
%config %{_rpmmacrodir}/macros.hpc-mvapich2
%endif # with hpc
%endif # !testsuite
%changelog

View File

@ -0,0 +1,103 @@
diff -wruN -x '*~' -x '*.o' -x '*.a' -x '*.so' -x '*.so.[0-9]' -x autom4te.cache -x .deps -x .libs ../orig-mvapich2-2.3.7-1/src/mpid/ch3/channels/common/src/affinity/hwloc_bind.c ./src/mpid/ch3/channels/common/src/affinity/hwloc_bind.c
--- ../orig-mvapich2-2.3.7-1/src/mpid/ch3/channels/common/src/affinity/hwloc_bind.c 2022-05-16 18:58:22.000000000 +0200
+++ ./src/mpid/ch3/channels/common/src/affinity/hwloc_bind.c 2022-06-29 15:07:17.700058168 +0200
@@ -2107,7 +2107,7 @@
for (i = 0; i < g_smpi.num_local_nodes; ++i) {
hwloc_bitmap_clr(*free_sock_cpuset, local_core_ids[i]);
}
- hwloc_bitmap_snprintf(cpu_str, 128, *free_sock_cpuset);
+ hwloc_bitmap_snprintf(cpu_str, sizeof(cpu_str), *free_sock_cpuset);
PRINT_DEBUG(DEBUG_INIT_verbose, "Free sock_cpuset = %s\n", cpu_str);
}
@@ -3190,11 +3190,11 @@
for (i = 0; i < local_procs; i++) {
curr = count;
for (k = 0; k < num_app_threads; k++) {
- j += snprintf (mapping+j, _POSIX2_LINE_MAX, "%d,", mv2_core_map[curr]);
+ j += snprintf (mapping+j, sizeof(mapping)-j, "%d,", mv2_core_map[curr]);
curr = (curr + 1) % num_pu;
}
mapping [--j] = '\0';
- j += snprintf (mapping+j, _POSIX2_LINE_MAX, ":");
+ j += snprintf (mapping+j, sizeof(mapping)-j, ":");
count = (count + hw_threads_per_core) % num_pu;
}
} else if (mv2_hybrid_binding_policy == HYBRID_LINEAR) {
@@ -3203,14 +3203,14 @@
* resources */
for (i = 0; i < local_procs; i++) {
for (k = 0; k < num_app_threads; k++) {
- j += snprintf (mapping+j, _POSIX2_LINE_MAX, "%d,", mv2_core_map[curr]);
+ j += snprintf (mapping+j, sizeof(mapping)-j, "%d,", mv2_core_map[curr]);
curr = ((curr + hw_threads_per_core) >= num_pu) ?
((curr + hw_threads_per_core+ ++step) % num_pu) :
(curr + hw_threads_per_core) % num_pu;
}
mapping [--j] = '\0';
- j += snprintf (mapping+j, _POSIX2_LINE_MAX, ":");
+ j += snprintf (mapping+j, sizeof(mapping)-j, ":");
}
} else if (mv2_hybrid_binding_policy == HYBRID_SPREAD) {
#if defined(CHANNEL_MRAIL)
@@ -3232,12 +3232,12 @@
for (i = 0; i < local_procs; i++) {
for (k = curr; k < curr+chunk; k++) {
for (l = 0; l < hw_threads_per_core; l++) {
- j += snprintf (mapping+j, _POSIX2_LINE_MAX, "%d,",
+ j += snprintf (mapping+j, sizeof(mapping)-j, "%d,",
mv2_core_map[k * hw_threads_per_core + l]);
}
}
mapping [--j] = '\0';
- j += snprintf (mapping+j, _POSIX2_LINE_MAX, ":");
+ j += snprintf (mapping+j, sizeof(mapping)-j, ":");
curr = (curr + chunk) % size;
}
} else {
@@ -3252,11 +3252,11 @@
for (i = 0; i < num_sockets; i++) {
for (k = curr; k < curr+ranks_per_sock; k++) {
for (l = 0; l < hw_threads_per_core; l++) {
- j += snprintf (mapping+j, _POSIX2_LINE_MAX, "%d,",
+ j += snprintf (mapping+j, sizeof(mapping)-j, "%d,",
mv2_core_map[k * hw_threads_per_core + l]);
}
mapping [--j] = '\0';
- j += snprintf (mapping+j, _POSIX2_LINE_MAX, ":");
+ j += snprintf (mapping+j, sizeof(mapping)-j, ":");
}
curr = (curr + ((num_pu_per_socket/hw_threads_per_core) * chunk)) % size;
}
@@ -3265,7 +3265,7 @@
/* Bunch mapping: Bind each MPI rank to a single phyical core of first
* socket followed by second secket */
for (i = 0; i < local_procs; i++) {
- j += snprintf (mapping+j, _POSIX2_LINE_MAX, "%d:", mv2_core_map[k]);
+ j += snprintf (mapping+j, sizeof(mapping)-j, "%d:", mv2_core_map[k]);
k = (k + hw_threads_per_core) % size;
}
} else if (mv2_hybrid_binding_policy == HYBRID_SCATTER) {
@@ -3283,7 +3283,7 @@
return MPI_ERR_OTHER;
}
for (i = 0; i < local_procs; i++) {
- j += snprintf (mapping+j, _POSIX2_LINE_MAX, "%d:", mv2_core_map[k]);
+ j += snprintf (mapping+j, sizeof(mapping)-j, "%d:", mv2_core_map[k]);
k = (i % num_sockets == 0) ?
(k + num_pu_per_socket) % size :
(k + num_pu_per_socket + hw_threads_per_core) % size;
@@ -3315,10 +3315,10 @@
/* NUMA mapping: Bind consecutive MPI ranks to different NUMA domains in
* round-robin fashion. */
for (i = 0; i < local_procs; i++) {
- j += snprintf (mapping+j, _POSIX2_LINE_MAX, "%d,",
+ j += snprintf (mapping+j, sizeof(mapping)-j, "%d,",
mv2_core_map_per_numa[node_base_pu+node_offset]);
mapping [--j] = '\0';
- j += snprintf (mapping+j, _POSIX2_LINE_MAX, ":");
+ j += snprintf (mapping+j, sizeof(mapping)-j, ":");
node_base_pu = (node_base_pu + num_pu_per_numanode) % size;
node_offset = (node_base_pu == 0) ?
(node_offset + ((hw_threads_per_core > 0) ? hw_threads_per_core : 1)) :

110
reproducible.patch Normal file
View File

@ -0,0 +1,110 @@
commit bf7afdf34ad71b1e644dda34053e491653ca59e7
Author: Bernhard M. Wiedemann <bwiedemann@suse.de>
Date: Mon Mar 25 11:12:56 2019 +0100
reproducible
Sort input file list so that mpich builds in a reproducible way
in spite of indeterministic filesystem readdir order
See https://reproducible-builds.org/ for why this is good.
Without this patch, README.envvar, /usr/lib64/mpi/gcc/mpich/bin/mpivars
and other output files varied between builds.
Signed-off-by: Nicolas Morey-Chaisemartin <nmoreychaisemartin@suse.com>
Also remove any unreproducible timestamps from generated files.
diff --git maint/extractcvars.in maint/extractcvars.in
index b627a6f8d937..879de7bf6d5a 100755
--- maint/extractcvars.in
+++ maint/extractcvars.in
@@ -125,7 +125,7 @@ foreach my $p (@cvars) {
print "Categories include: \n".Dumper(@categories) if $debug;
print "Cvars include :\n".Dumper(@cvars)."\n" if $debug;
-my $run_timestamp = localtime();
+my $run_timestamp = localtime($ENV{"SOURCE_DATE_EPOCH"} || time);
my $uc_ns = uc($ns);
# Setup output files
@@ -594,7 +594,7 @@ sub ExpandDir {
my @subdirs = ();
my $DIR_HANDLE;
opendir $DIR_HANDLE, "$dir" or die "Error: open directory $dir -- $!\n";
- while (my $filename = readdir $DIR_HANDLE) {
+ for my $filename (sort readdir $DIR_HANDLE) {
if ($filename =~ /^\./) {
next;
} elsif (-d "$dir/$filename") {
diff --git maint/extractfixme.in maint/extractfixme.in
index 6b2567f037ed..7636fad296b8 100644
--- maint/extractfixme.in
+++ maint/extractfixme.in
@@ -114,7 +114,7 @@ sub ExpandDir {
my @otherdirs = ();
my @files = ();
opendir DIR, "$dir";
- while ($filename = readdir DIR) {
+ for $filename (sort readdir DIR) {
if ($filename =~ /^\./ || $filename eq ".svn") {
next;
}
diff --git maint/extractstrings.in maint/extractstrings.in
index 4e8a599c89ca..449a8c007499 100644
--- maint/extractstrings.in
+++ maint/extractstrings.in
@@ -73,7 +73,7 @@ sub GetFileNamesInDirectory {
my @filesFound = ();
opendir DIR, $dir || die "Could not open $dir\n";
- while (my $file = readdir DIR) {
+ for my $file (sort readdir DIR) {
if (! -f "$dir/$file") { next; }
if ($file =~ /^\.$/ || $file =~ /^\.\.$/) { next; }
if ($file =~ /$pattern/) {
@@ -246,7 +246,7 @@ sub processDirs {
my @dirs = ();
# Find the directories
opendir DIR, "$dir" || die "Cannot open $dir\n";
- while (my $file = readdir DIR) {
+ for my $file (sort readdir DIR) {
if (! -d "$dir/$file") { next; }
if ($file =~ /^\./) { next; }
if ($file =~ /^.svn/) { next; }
@@ -273,7 +273,7 @@ sub processDirsAndAction {
my @dirs = ();
# Find the directories
opendir DIR, "$dir" || die "Cannot open $dir\n";
- while (my $file = readdir DIR) {
+ for my $file (sort readdir DIR) {
if (! -d "$dir/$file") { next; }
if ($file =~ /^\./) { next; }
if ($file =~ /^.svn/) { next; }
diff --git maint/gen_subcfg_m4 maint/gen_subcfg_m4
index 80654263401d..34cb19ed0649 100755
--- maint/gen_subcfg_m4
+++ maint/gen_subcfg_m4
@@ -118,7 +118,7 @@ while (my $dir = pop @dirstack) {
# the stack to continue the traversal
opendir DH, $dir
or die "unable to open dir='$dir', stopped";
- my @contents = readdir DH;
+ my @contents = sort readdir DH;
foreach my $f (@contents) {
# avoid endless recursion
next if $f eq "." || $f eq "..";
diff --git maint/getcoverage.in maint/getcoverage.in
index c9c69f299261..f4fc35be72f6 100644
--- maint/getcoverage.in
+++ maint/getcoverage.in
@@ -779,7 +779,7 @@ sub ExpandDir {
my @otherdirs = ();
my @files = ();
opendir DIR, "$dir";
- while ($filename = readdir DIR) {
+ for $filename (sort readdir DIR) {
if ($filename =~ /^\./ || $filename eq ".svn") {
next;
}