diff --git a/mvapich2-2.3.4.tar.gz b/mvapich2-2.3.4.tar.gz deleted file mode 100644 index 13bd1d4..0000000 --- a/mvapich2-2.3.4.tar.gz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:7226a45c7c98333c8e5d2888119cce186199b430c13b7b1dca1769909e68ea7a -size 18473572 diff --git a/mvapich2-2.3.5.tar.gz b/mvapich2-2.3.5.tar.gz new file mode 100644 index 0000000..a83e6e3 --- /dev/null +++ b/mvapich2-2.3.5.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f9f467fec5fc981a89a7beee0374347b10c683023c76880f92a1a0ad4b961a8c +size 20779884 diff --git a/mvapich2-fix-double-free.patch b/mvapich2-fix-double-free.patch deleted file mode 100644 index 934b888..0000000 --- a/mvapich2-fix-double-free.patch +++ /dev/null @@ -1,26 +0,0 @@ -commit 29cf7e8f54363de3ad614b3480517f02b84ade5e -Author: Nicolas Morey-Chaisemartin -Date: Thu May 2 09:56:40 2019 +0200 - - mvapich2 fix double free - - Fix double free that causes a SEGV when mvapich2 fails to open - a rdma device - - Signed-off-by: Nicolas Morey-Chaisemartin - -diff --git src/mpid/ch3/channels/mrail/src/gen2/rdma_iba_priv.c src/mpid/ch3/channels/mrail/src/gen2/rdma_iba_priv.c -index 89f666c8988b..48454297223c 100644 ---- src/mpid/ch3/channels/mrail/src/gen2/rdma_iba_priv.c -+++ src/mpid/ch3/channels/mrail/src/gen2/rdma_iba_priv.c -@@ -790,10 +790,6 @@ int rdma_open_hca(struct mv2_MPIDI_CH3I_RDMA_Process_t *proc) - } - - if (!ib_dev) { -- /* Clean up before exit */ -- if (dev_list) { -- ibv_free_device_list(dev_list); -- } - MPIR_ERR_SETFATALANDJUMP1(mpi_errno, MPI_ERR_OTHER, "**fail", - "**fail %s", "No IB device found"); - } diff --git a/mvapich2.changes b/mvapich2.changes index bdffd39..4b303b0 100644 --- a/mvapich2.changes +++ b/mvapich2.changes @@ -1,3 +1,36 @@ +------------------------------------------------------------------- +Wed Mar 24 10:06:26 UTC 2021 - Egbert Eich + +- 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 diff --git a/mvapich2.spec b/mvapich2.spec index 47ba13e..357f2bf 100644 --- a/mvapich2.spec +++ b/mvapich2.spec @@ -1,5 +1,5 @@ # -# spec file for package %{package_name} +# spec file for package mvapich2 # # Copyright (c) 2021 SUSE LLC # @@ -19,8 +19,8 @@ %global flavor @BUILD_FLAVOR@%{nil} %define pname mvapich2 -%define vers 2.3.4 -%define _vers 2_3_4 +%define vers 2.3.5 +%define _vers 2_3_5 %if "%{flavor}" == "" ExclusiveArch: do_not_build @@ -253,9 +253,8 @@ Patch2: mvapich2-arm-support.patch Patch3: 0001-Drop-GCC-check.patch Patch4: reproducible.patch Patch5: fix-missing-return-code.patch -Patch6: wrapper-revert-ldflag-order-change.patch -Patch7: mvapich2-fix-double-free.patch -Patch8: mvapich2-remove-deprecated-sys_siglist.patch +Patch6: mvapich2-remove-deprecated-sys_siglist.patch +Patch7: rdma_find_network_type-return-MV2_NETWORK_CLASS_UNKNOWN-when-dev_list-is-freed.patch ## Armv7 specific patches # PATCH-FIX-UPSTREAM 0001-Drop-real128.patch (https://github.com/pmodels/mpich/issues/4005) @@ -396,8 +395,7 @@ is based on MPICH2 and MVICH. This package contains the static libraries %patch4 -p1 %patch5 %patch6 -%patch7 -%patch8 +%patch7 -p1 # Only apply these patches on Armv7 %ifarch armv7hl diff --git a/rdma_find_network_type-return-MV2_NETWORK_CLASS_UNKNOWN-when-dev_list-is-freed.patch b/rdma_find_network_type-return-MV2_NETWORK_CLASS_UNKNOWN-when-dev_list-is-freed.patch new file mode 100644 index 0000000..3dd3db0 --- /dev/null +++ b/rdma_find_network_type-return-MV2_NETWORK_CLASS_UNKNOWN-when-dev_list-is-freed.patch @@ -0,0 +1,27 @@ +From: Egbert Eich +Date: Wed Mar 24 17:59:11 2021 +0100 +Subject: rdma_find_network_type(): return MV2_NETWORK_CLASS_UNKNOWN when dev_list is freed +Patch-mainline: Not yet +Git-commit: 53c0c41fbd3728afb32cce7f23f596877e270911 +References: + +This makes rdma_open_hca() bail early, so it doesn't reach the +code which tries to free dev_list and avoids a double free. + +Signed-off-by: Egbert Eich +--- + src/mpid/ch3/channels/mrail/src/gen2/rdma_iba_priv.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) +diff --git a/src/mpid/ch3/channels/mrail/src/gen2/rdma_iba_priv.c b/src/mpid/ch3/channels/mrail/src/gen2/rdma_iba_priv.c +index 9eb565e..4795035 100644 +--- a/src/mpid/ch3/channels/mrail/src/gen2/rdma_iba_priv.c ++++ b/src/mpid/ch3/channels/mrail/src/gen2/rdma_iba_priv.c +@@ -507,7 +507,7 @@ int rdma_find_network_type(struct ibv_device **dev_list, int num_devices, + if (dev_list[i]) { + ibv_ops.free_device_list(dev_list); + } +- return 0; ++ return network_type; + } + if (ERROR == rdma_find_active_port(nic_context[i], NULL, &hca_rate)) { + /* No active port, skip HCA */ diff --git a/wrapper-revert-ldflag-order-change.patch b/wrapper-revert-ldflag-order-change.patch deleted file mode 100644 index bb943fa..0000000 --- a/wrapper-revert-ldflag-order-change.patch +++ /dev/null @@ -1,115 +0,0 @@ -commit 5818871a4afed52944ece7688f5ad316407be482 -Author: Nicolas Morey-Chaisemartin -Date: Tue Jun 9 22:46:54 2020 +0200 - - wrapper revert ldflag order change - - For some reason v2.3.4 changed flag order in mpi** wrappers which - causes legacy stuff to not link unless a -lmpi is added - - Signed-off-by: Nicolas Morey-Chaisemartin - -diff --git src/env/mpicc.bash.in src/env/mpicc.bash.in -index aa65f27a4e5e..21517c0abfef 100644 ---- src/env/mpicc.bash.in -+++ src/env/mpicc.bash.in -@@ -268,7 +268,7 @@ if [ "$linking" = yes ] ; then - $Show $CC ${final_cppflags} $PROFILE_INCPATHS ${final_cflags} ${final_ldflags} "${allargs[@]}" -I$includedir - rc=$? - else -- $Show $CC ${final_cppflags} $PROFILE_INCPATHS ${final_cflags} -l@MPILIBNAME@ ${final_ldflags} "${allargs[@]}" -I$includedir $ITAC_OPTIONS -L$libdir $PROFILE_PRELIB $PROFILE_FOO $rpath_flags @LPMPILIBNAME@ $PROFILE_POSTLIB ${final_libs} -+ $Show $CC ${final_cppflags} $PROFILE_INCPATHS ${final_cflags} ${final_ldflags} "${allargs[@]}" -I$includedir $ITAC_OPTIONS -L$libdir $PROFILE_PRELIB $PROFILE_FOO $rpath_flags -l@MPILIBNAME@ @LPMPILIBNAME@ $PROFILE_POSTLIB ${final_libs} - rc=$? - fi - else -diff --git src/env/mpicc.sh.in src/env/mpicc.sh.in -index dceab90cc3f2..f6e433d2f0f5 100644 ---- src/env/mpicc.sh.in -+++ src/env/mpicc.sh.in -@@ -277,7 +277,7 @@ if [ "$linking" = yes ] ; then - $Show $CC ${final_cppflags} $PROFILE_INCPATHS ${final_cflags} ${final_ldflags} $allargs -I$includedir - rc=$? - else -- $Show $CC ${final_cppflags} $PROFILE_INCPATHS ${final_cflags} -l@MPILIBNAME@ ${final_ldflags} $allargs -I$includedir $ITAC_OPTIONS -L$libdir $PROFILE_PRELIB $PROFILE_FOO $rpath_flags @LPMPILIBNAME@ $PROFILE_POSTLIB ${final_libs} -+ $Show $CC ${final_cppflags} $PROFILE_INCPATHS ${final_cflags} ${final_ldflags} $allargs -I$includedir $ITAC_OPTIONS -L$libdir $PROFILE_PRELIB $PROFILE_FOO $rpath_flags -l@MPILIBNAME@ @LPMPILIBNAME@ $PROFILE_POSTLIB ${final_libs} - rc=$? - fi - else -diff --git src/env/mpicxx.bash.in src/env/mpicxx.bash.in -index 5d4e1639e02f..35a581bd3515 100644 ---- src/env/mpicxx.bash.in -+++ src/env/mpicxx.bash.in -@@ -266,7 +266,7 @@ if [ "$linking" = yes ] ; then - $Show $CXX ${final_cppflags} $PROFILE_INCPATHS ${final_cxxflags} ${final_ldflags} "${allargs[@]}" -I$includedir - rc=$? - else -- $Show $CXX ${final_cppflags} $PROFILE_INCPATHS ${final_cxxflags} $cxxlibs -l@MPILIBNAME@ ${final_ldflags} "${allargs[@]}" -I$includedir $ITAC_OPTIONS -L$libdir $PROFILE_PRELIB $PROFILE_FOO $rpath_flags @LPMPILIBNAME@ $PROFILE_POSTLIB ${final_libs} -+ $Show $CXX ${final_cppflags} $PROFILE_INCPATHS ${final_cxxflags} ${final_ldflags} "${allargs[@]}" -I$includedir $ITAC_OPTIONS -L$libdir $cxxlibs $PROFILE_PRELIB $PROFILE_FOO $rpath_flags -l@MPILIBNAME@ @LPMPILIBNAME@ $PROFILE_POSTLIB ${final_libs} - rc=$? - fi - else -diff --git src/env/mpicxx.sh.in src/env/mpicxx.sh.in -index 0186905368e1..e2eed50f0660 100644 ---- src/env/mpicxx.sh.in -+++ src/env/mpicxx.sh.in -@@ -275,7 +275,7 @@ if [ "$linking" = yes ] ; then - $Show $CXX ${final_cppflags} $PROFILE_INCPATHS ${final_cxxflags} ${final_ldflags} $allargs -I$includedir - rc=$? - else -- $Show $CXX ${final_cppflags} $PROFILE_INCPATHS ${final_cxxflags} $cxxlibs -l@MPILIBNAME@ ${final_ldflags} $allargs -I$includedir $ITAC_OPTIONS -L$libdir $PROFILE_PRELIB $PROFILE_FOO $rpath_flags @LPMPILIBNAME@ $PROFILE_POSTLIB ${final_libs} -+ $Show $CXX ${final_cppflags} $PROFILE_INCPATHS ${final_cxxflags} ${final_ldflags} $allargs -I$includedir $ITAC_OPTIONS -L$libdir $cxxlibs $PROFILE_PRELIB $PROFILE_FOO $rpath_flags -l@MPILIBNAME@ @LPMPILIBNAME@ $PROFILE_POSTLIB ${final_libs} - rc=$? - fi - else -diff --git src/env/mpif77.bash.in src/env/mpif77.bash.in -index 05b3e540de78..4d357a502d94 100644 ---- src/env/mpif77.bash.in -+++ src/env/mpif77.bash.in -@@ -318,7 +318,7 @@ if [ "$linking" = yes ] ; then - $Show $F77 $PROFILE_INCPATHS ${final_fflags} ${final_ldflags} "${allargs[@]}" -I$includedir - rc=$? - else -- $Show $F77 $PROFILE_INCPATHS ${final_fflags} -l@MPILIBNAME@ ${final_ldflags} "${allargs[@]}" -I$includedir $ITAC_OPTIONS -L$libdir $f77libs $PROFILE_PRELIB $PROFILE_FOO $rpath_flags @LPMPILIBNAME@ $PROFILE_POSTLIB ${final_libs} @F77_OTHER_LIBS@ -+ $Show $F77 $PROFILE_INCPATHS ${final_fflags} ${final_ldflags} "${allargs[@]}" -I$includedir $ITAC_OPTIONS -L$libdir $f77libs $PROFILE_PRELIB $PROFILE_FOO $rpath_flags -l@MPILIBNAME@ @LPMPILIBNAME@ $PROFILE_POSTLIB ${final_libs} @F77_OTHER_LIBS@ - rc=$? - fi - else -diff --git src/env/mpif77.sh.in src/env/mpif77.sh.in -index 070b0be24722..0ec77e627b53 100644 ---- src/env/mpif77.sh.in -+++ src/env/mpif77.sh.in -@@ -340,7 +340,7 @@ if [ "$linking" = yes ] ; then - $Show $F77 $PROFILE_INCPATHS ${final_fflags} ${final_ldflags} $allargs -I$includedir - rc=$? - else -- $Show $F77 $PROFILE_INCPATHS ${final_fflags} -l@MPILIBNAME@ ${final_ldflags} $allargs -I$includedir $ITAC_OPTIONS -L$libdir $f77libs $PROFILE_PRELIB $PROFILE_FOO $rpath_flags @LPMPILIBNAME@ $PROFILE_POSTLIB ${final_libs} @F77_OTHER_LIBS@ -+ $Show $F77 $PROFILE_INCPATHS ${final_fflags} ${final_ldflags} $allargs -I$includedir $ITAC_OPTIONS -L$libdir $f77libs $PROFILE_PRELIB $PROFILE_FOO $rpath_flags -l@MPILIBNAME@ @LPMPILIBNAME@ $PROFILE_POSTLIB ${final_libs} @F77_OTHER_LIBS@ - rc=$? - fi - else -diff --git src/env/mpifort.bash.in src/env/mpifort.bash.in -index 73da0e866e48..c36dddf78553 100644 ---- src/env/mpifort.bash.in -+++ src/env/mpifort.bash.in -@@ -359,7 +359,7 @@ if [ "$linking" = yes ] ; then - $Show $FC $PROFILE_INCPATHS ${final_fcflags} ${final_ldflags} "${allargs[@]}" - rc=$? - else -- $Show $FC $PROFILE_INCPATHS ${final_fcflags} -l@MPIFCLIBNAME@ -l@MPILIBNAME@ ${final_ldflags} "${allargs[@]}" $FCINCDIRS $FCMODDIRS $ITAC_OPTIONS -L$libdir $PROFILE_PRELIB $PROFILE_FOO $rpath_flags @LPMPILIBNAME@ $PROFILE_POSTLIB ${final_libs} @FC_OTHER_LIBS@ -+ $Show $FC $PROFILE_INCPATHS ${final_fcflags} ${final_ldflags} "${allargs[@]}" $FCINCDIRS $FCMODDIRS $ITAC_OPTIONS -L$libdir -l@MPIFCLIBNAME@ $PROFILE_PRELIB $PROFILE_FOO $rpath_flags -l@MPILIBNAME@ @LPMPILIBNAME@ $PROFILE_POSTLIB ${final_libs} @FC_OTHER_LIBS@ - rc=$? - fi - else -diff --git src/env/mpifort.sh.in src/env/mpifort.sh.in -index 5ee8a148f8ff..c5620c4b61a2 100644 ---- src/env/mpifort.sh.in -+++ src/env/mpifort.sh.in -@@ -375,7 +375,7 @@ if [ "$linking" = yes ] ; then - $Show $FC $PROFILE_INCPATHS ${final_fcflags} ${final_ldflags} $allargs - rc=$? - else -- $Show $FC $PROFILE_INCPATHS ${final_fcflags} -l@MPIFCLIBNAME@ -l@MPILIBNAME@ ${final_ldflags} $allargs $FCINCDIRS $FCMODDIRS $ITAC_OPTIONS -L$libdir $PROFILE_PRELIB $PROFILE_FOO $rpath_flags @LPMPILIBNAME@ $PROFILE_POSTLIB ${final_libs} @FC_OTHER_LIBS@ -+ $Show $FC $PROFILE_INCPATHS ${final_fcflags} ${final_ldflags} $allargs $FCINCDIRS $FCMODDIRS $ITAC_OPTIONS -L$libdir -l@MPIFCLIBNAME@ $PROFILE_PRELIB $PROFILE_FOO $rpath_flags -l@MPILIBNAME@ @LPMPILIBNAME@ $PROFILE_POSTLIB ${final_libs} @FC_OTHER_LIBS@ - rc=$? - fi - else