diff --git a/.gitignore b/.gitignore index 104cfac..d89aa68 100644 --- a/.gitignore +++ b/.gitignore @@ -54,3 +54,20 @@ openmpi-1.4.1-RH.tar.bz2 /openmpi-4.0.4.tar.bz2 /openmpi-4.0.5.tar.bz2 /openmpi-4.1.0.tar.bz2 +/openmpi-4.1.1rc1.tar.bz2 +/openmpi-4.1.1rc2.tar.bz2 +/openmpi-4.1.1.tar.bz2 +/openmpi-4.1.2rc1.tar.bz2 +/openmpi-4.1.2.tar.bz2 +/openmpi-4.1.3.tar.bz2 +/openmpi-4.1.4.tar.bz2 +/openmpi-4.1.5.tar.bz2 +/openmpi-5.0.0.tar.bz2 +/openmpi-5.0.1.tar.bz2 +/openmpi-5.0.2.tar.bz2 +/openmpi-5.0.3.tar.bz2 +/openmpi-5.0.5.tar.bz2 +/openmpi-5.0.6.tar.bz2 +/openmpi-5.0.8.tar.bz2 +/openmpi-5.0.9.tar.bz2 +/openmpi-5.0.10.tar.bz2 diff --git a/8322.patch b/8322.patch deleted file mode 100644 index 8c04e5d..0000000 --- a/8322.patch +++ /dev/null @@ -1,1682 +0,0 @@ -From 31068e063b8795ae11f3a59d4080db1fe111cfaf Mon Sep 17 00:00:00 2001 -From: George Bosilca -Date: Mon, 28 Dec 2020 15:36:05 -0500 -Subject: [PATCH 1/3] Major update to the AVX* detection and support - -1. Consistent march flag order between configure and make. - -2. op/avx: give the option to skip some tests - -it is possible to skip some intrinsic tests by setting some environment variables to "no" before invoking configure: - - ompi_cv_op_avx_check_avx512 - - ompi_cv_op_avx_check_avx2 - - ompi_cv_op_avx_check_avx - - ompi_cv_op_avx_check_sse41 - - ompi_cv_op_avx_check_sse3 - -3. op/avx: update AVX512 flags - -try --mavx512f -mavx512bw -mavx512vl -mavx512dq -instead of --march=skylake-avx512 - -since the former is less likely to conflict with user provided CFLAGS -(e.g. -march=...) - -Thanks Bart Oldeman for pointing this. - -4. op/avx: have the op/avx library depend on libmpi.so - -Refs. open-mpi/ompi#8323 - -Signed-off-by: Gilles Gouaillardet -Signed-off-by: George Bosilca ---- - ompi/mca/op/avx/Makefile.am | 4 +- - ompi/mca/op/avx/configure.m4 | 325 ++++++++++++++++++----------------- - 2 files changed, 174 insertions(+), 155 deletions(-) - -diff --git a/ompi/mca/op/avx/Makefile.am b/ompi/mca/op/avx/Makefile.am -index 41dcf2e1834..b1d84d90b33 100644 ---- a/ompi/mca/op/avx/Makefile.am -+++ b/ompi/mca/op/avx/Makefile.am -@@ -2,7 +2,7 @@ - # Copyright (c) 2019-2020 The University of Tennessee and The University - # of Tennessee Research Foundation. All rights - # reserved. --# Copyright (c) 2020 Research Organization for Information Science -+# Copyright (c) 2020-2021 Research Organization for Information Science - # and Technology (RIST). All rights reserved. - # $COPYRIGHT$ - # -@@ -86,7 +86,7 @@ mcacomponentdir = $(ompilibdir) - mcacomponent_LTLIBRARIES = $(component_install) - mca_op_avx_la_SOURCES = $(sources) - mca_op_avx_la_LIBADD = $(specialized_op_libs) --mca_op_avx_la_LDFLAGS = -module -avoid-version -+mca_op_avx_la_LDFLAGS = -module -avoid-version $(top_builddir)/ompi/lib@OMPI_LIBMPI_NAME@.la - - - # Specific information for static builds. -diff --git a/ompi/mca/op/avx/configure.m4 b/ompi/mca/op/avx/configure.m4 -index 09d8b374c8e..f61b7100ef4 100644 ---- a/ompi/mca/op/avx/configure.m4 -+++ b/ompi/mca/op/avx/configure.m4 -@@ -29,6 +29,13 @@ AC_DEFUN([MCA_ompi_op_avx_CONFIG],[ - op_avx_support=0 - op_avx2_support=0 - op_avx512_support=0 -+ -+ AS_VAR_PUSHDEF([op_avx_check_sse3], [ompi_cv_op_avx_check_sse3]) -+ AS_VAR_PUSHDEF([op_avx_check_sse41], [ompi_cv_op_avx_check_sse41]) -+ AS_VAR_PUSHDEF([op_avx_check_avx], [ompi_cv_op_avx_check_avx]) -+ AS_VAR_PUSHDEF([op_avx_check_avx2], [ompi_cv_op_avx_check_avx2]) -+ AS_VAR_PUSHDEF([op_avx_check_avx512], [ompi_cv_op_avx_check_avx512]) -+ - OPAL_VAR_SCOPE_PUSH([op_avx_cflags_save]) - - AS_IF([test "$opal_cv_asm_arch" = "X86_64"], -@@ -37,21 +44,9 @@ AC_DEFUN([MCA_ompi_op_avx_CONFIG],[ - # - # Check for AVX512 support - # -- AC_MSG_CHECKING([for AVX512 support (no additional flags)]) -- AC_LINK_IFELSE( -- [AC_LANG_PROGRAM([[#include ]], -- [[ -- __m512 vA, vB; -- _mm512_add_ps(vA, vB) -- ]])], -- [op_avx512_support=1 -- AC_MSG_RESULT([yes])], -- [AC_MSG_RESULT([no])]) -- -- AS_IF([test $op_avx512_support -eq 0], -- [AC_MSG_CHECKING([for AVX512 support (with -march=skylake-avx512)]) -- op_avx_cflags_save="$CFLAGS" -- CFLAGS="$CFLAGS -march=skylake-avx512" -+ AC_CACHE_CHECK([if we are checking for AVX512 support], op_avx_check_avx512, AS_VAR_SET(op_avx_check_avx512, yes)) -+ AS_IF([test "$op_avx_check_avx512" = "yes"], -+ [AC_MSG_CHECKING([for AVX512 support (no additional flags)]) - AC_LINK_IFELSE( - [AC_LANG_PROGRAM([[#include ]], - [[ -@@ -59,99 +54,115 @@ AC_DEFUN([MCA_ompi_op_avx_CONFIG],[ - _mm512_add_ps(vA, vB) - ]])], - [op_avx512_support=1 -- MCA_BUILD_OP_AVX512_FLAGS="-march=skylake-avx512" - AC_MSG_RESULT([yes])], - [AC_MSG_RESULT([no])]) -- CFLAGS="$op_avx_cflags_save" -- ]) -- # -- # Some combination of gcc and older as would not correctly build the code generated by -- # _mm256_loadu_si256. Screen them out. -- # -- AS_IF([test $op_avx512_support -eq 1], -- [AC_MSG_CHECKING([if _mm512_loadu_si512 generates code that can be compiled]) -- op_avx_cflags_save="$CFLAGS" -- CFLAGS="$CFLAGS_WITHOUT_OPTFLAGS -O0 $MCA_BUILD_OP_AVX512_FLAGS" -- AC_LINK_IFELSE( -- [AC_LANG_PROGRAM([[#include ]], -- [[ -+ -+ AS_IF([test $op_avx512_support -eq 0], -+ [AC_MSG_CHECKING([for AVX512 support (with -mavx512f -mavx512bw -mavx512vl -mavx512dq)]) -+ op_avx_cflags_save="$CFLAGS" -+ CFLAGS="-mavx512f -mavx512bw -mavx512vl -mavx512dq $CFLAGS" -+ AC_LINK_IFELSE( -+ [AC_LANG_PROGRAM([[#include ]], -+ [[ -+ __m512 vA, vB; -+ _mm512_add_ps(vA, vB) -+ ]])], -+ [op_avx512_support=1 -+ MCA_BUILD_OP_AVX512_FLAGS="-mavx512f -mavx512bw -mavx512vl -mavx512dq" -+ AC_MSG_RESULT([yes])], -+ [AC_MSG_RESULT([no])]) -+ CFLAGS="$op_avx_cflags_save" -+ ]) -+ # -+ # Some combination of gcc and older as would not correctly build the code generated by -+ # _mm256_loadu_si256. Screen them out. -+ # -+ AS_IF([test $op_avx512_support -eq 1], -+ [AC_MSG_CHECKING([if _mm512_loadu_si512 generates code that can be compiled]) -+ op_avx_cflags_save="$CFLAGS" -+ CFLAGS="$CFLAGS_WITHOUT_OPTFLAGS -O0 $MCA_BUILD_OP_AVX512_FLAGS" -+ AC_LINK_IFELSE( -+ [AC_LANG_PROGRAM([[#include ]], -+ [[ - int A[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - __m512i vA = _mm512_loadu_si512((__m512i*)&(A[1])) -- ]])], -- [AC_MSG_RESULT([yes])], -- [op_avx512_support=0 -- MCA_BUILD_OP_AVX512_FLAGS="" -- AC_MSG_RESULT([no])]) -- CFLAGS="$op_avx_cflags_save" -- ]) -- # -- # Some PGI compilers do not define _mm512_mullo_epi64. Screen them out. -- # -- AS_IF([test $op_avx512_support -eq 1], -- [AC_MSG_CHECKING([if _mm512_mullo_epi64 generates code that can be compiled]) -- op_avx_cflags_save="$CFLAGS" -- CFLAGS="$CFLAGS_WITHOUT_OPTFLAGS -O0 $MCA_BUILD_OP_AVX512_FLAGS" -- AC_LINK_IFELSE( -- [AC_LANG_PROGRAM([[#include ]], -- [[ -+ ]])], -+ [AC_MSG_RESULT([yes])], -+ [op_avx512_support=0 -+ MCA_BUILD_OP_AVX512_FLAGS="" -+ AC_MSG_RESULT([no])]) -+ CFLAGS="$op_avx_cflags_save" -+ ]) -+ # -+ # Some PGI compilers do not define _mm512_mullo_epi64. Screen them out. -+ # -+ AS_IF([test $op_avx512_support -eq 1], -+ [AC_MSG_CHECKING([if _mm512_mullo_epi64 generates code that can be compiled]) -+ op_avx_cflags_save="$CFLAGS" -+ CFLAGS="$CFLAGS_WITHOUT_OPTFLAGS -O0 $MCA_BUILD_OP_AVX512_FLAGS" -+ AC_LINK_IFELSE( -+ [AC_LANG_PROGRAM([[#include ]], -+ [[ - __m512i vA, vB; - _mm512_mullo_epi64(vA, vB) -- ]])], -- [AC_MSG_RESULT([yes])], -- [op_avx512_support=0 -- MCA_BUILD_OP_AVX512_FLAGS="" -- AC_MSG_RESULT([no])]) -- CFLAGS="$op_avx_cflags_save" -- ]) -+ ]])], -+ [AC_MSG_RESULT([yes])], -+ [op_avx512_support=0 -+ MCA_BUILD_OP_AVX512_FLAGS="" -+ AC_MSG_RESULT([no])]) -+ CFLAGS="$op_avx_cflags_save" -+ ])]) - # - # Check support for AVX2 - # -- AC_MSG_CHECKING([for AVX2 support (no additional flags)]) -- AC_LINK_IFELSE( -- [AC_LANG_PROGRAM([[#include ]], -- [[ -+ AC_CACHE_CHECK([if we are checking for AVX2 support], op_avx_check_avx2, AS_VAR_SET(op_avx_check_avx2, yes)) -+ AS_IF([test "$op_avx_check_avx2" = "yes"], -+ [AC_MSG_CHECKING([for AVX2 support (no additional flags)]) -+ AC_LINK_IFELSE( -+ [AC_LANG_PROGRAM([[#include ]], -+ [[ - __m256 vA, vB; - _mm256_add_ps(vA, vB) -- ]])], -- [op_avx2_support=1 -- AC_MSG_RESULT([yes])], -- [AC_MSG_RESULT([no])]) -- AS_IF([test $op_avx2_support -eq 0], -- [AC_MSG_CHECKING([for AVX2 support (with -mavx2)]) -- op_avx_cflags_save="$CFLAGS" -- CFLAGS="$CFLAGS -mavx2" -- AC_LINK_IFELSE( -- [AC_LANG_PROGRAM([[#include ]], -- [[ -+ ]])], -+ [op_avx2_support=1 -+ AC_MSG_RESULT([yes])], -+ [AC_MSG_RESULT([no])]) -+ AS_IF([test $op_avx2_support -eq 0], -+ [AC_MSG_CHECKING([for AVX2 support (with -mavx2)]) -+ op_avx_cflags_save="$CFLAGS" -+ CFLAGS="-mavx2 $CFLAGS" -+ AC_LINK_IFELSE( -+ [AC_LANG_PROGRAM([[#include ]], -+ [[ - __m256 vA, vB; - _mm256_add_ps(vA, vB) -- ]])], -- [op_avx2_support=1 -- MCA_BUILD_OP_AVX2_FLAGS="-mavx2" -- AC_MSG_RESULT([yes])], -- [AC_MSG_RESULT([no])]) -- CFLAGS="$op_avx_cflags_save" -- ]) -- # -- # Some combination of gcc and older as would not correctly build the code generated by -- # _mm256_loadu_si256. Screen them out. -- # -- AS_IF([test $op_avx2_support -eq 1], -- [AC_MSG_CHECKING([if _mm256_loadu_si256 generates code that can be compiled]) -- op_avx_cflags_save="$CFLAGS" -- CFLAGS="$CFLAGS_WITHOUT_OPTFLAGS -O0 $MCA_BUILD_OP_AVX2_FLAGS" -- AC_LINK_IFELSE( -- [AC_LANG_PROGRAM([[#include ]], -- [[ -+ ]])], -+ [op_avx2_support=1 -+ MCA_BUILD_OP_AVX2_FLAGS="-mavx2" -+ AC_MSG_RESULT([yes])], -+ [AC_MSG_RESULT([no])]) -+ CFLAGS="$op_avx_cflags_save" -+ ]) -+ # -+ # Some combination of gcc and older as would not correctly build the code generated by -+ # _mm256_loadu_si256. Screen them out. -+ # -+ AS_IF([test $op_avx2_support -eq 1], -+ [AC_MSG_CHECKING([if _mm256_loadu_si256 generates code that can be compiled]) -+ op_avx_cflags_save="$CFLAGS" -+ CFLAGS="$CFLAGS_WITHOUT_OPTFLAGS -O0 $MCA_BUILD_OP_AVX2_FLAGS" -+ AC_LINK_IFELSE( -+ [AC_LANG_PROGRAM([[#include ]], -+ [[ - int A[8] = {0, 1, 2, 3, 4, 5, 6, 7}; - __m256i vA = _mm256_loadu_si256((__m256i*)&A) -- ]])], -- [AC_MSG_RESULT([yes])], -- [op_avx2_support=0 -- MCA_BUILD_OP_AVX2_FLAGS="" -- AC_MSG_RESULT([no])]) -- CFLAGS="$op_avx_cflags_save" -- ]) -+ ]])], -+ [AC_MSG_RESULT([yes])], -+ [op_avx2_support=0 -+ MCA_BUILD_OP_AVX2_FLAGS="" -+ AC_MSG_RESULT([no])]) -+ CFLAGS="$op_avx_cflags_save" -+ ])]) - # - # What about early AVX support. The rest of the logic is slightly different as - # we need to include some of the SSE4.1 and SSE3 instructions. So, we first check -@@ -160,90 +171,92 @@ AC_DEFUN([MCA_ompi_op_avx_CONFIG],[ - # the AVX flag, and then recheck if we have support for the SSE4.1 and SSE3 - # instructions. - # -- AC_MSG_CHECKING([for AVX support (no additional flags)]) -- AC_LINK_IFELSE( -- [AC_LANG_PROGRAM([[#include ]], -- [[ -+ AC_CACHE_CHECK([if we are checking for AVX support], op_avx_check_avx, AS_VAR_SET(op_avx_check_avx, yes)) -+ AS_IF([test "$op_avx_check_avx" = "yes"], -+ [AC_MSG_CHECKING([for AVX support (no additional flags)]) -+ AC_LINK_IFELSE( -+ [AC_LANG_PROGRAM([[#include ]], -+ [[ - __m128 vA, vB; - _mm_add_ps(vA, vB) -- ]])], -- [op_avx_support=1 -- AC_MSG_RESULT([yes])], -- [AC_MSG_RESULT([no])]) -+ ]])], -+ [op_avx_support=1 -+ AC_MSG_RESULT([yes])], -+ [AC_MSG_RESULT([no])])]) - # - # Check for SSE4.1 support - # -- AS_IF([test $op_avx_support -eq 1], -- [AC_MSG_CHECKING([for SSE4.1 support]) -- AC_LINK_IFELSE( -- [AC_LANG_PROGRAM([[#include ]], -- [[ -+ AC_CACHE_CHECK([if we are checking for SSE4.1 support], op_avx_check_sse41, AS_VAR_SET(op_avx_check_sse41, yes)) -+ AS_IF([test $op_avx_support -eq 1 && test "$op_avx_check_sse41" = "yes"], -+ [AC_MSG_CHECKING([for SSE4.1 support]) -+ AC_LINK_IFELSE( -+ [AC_LANG_PROGRAM([[#include ]], -+ [[ - __m128i vA, vB; - (void)_mm_max_epi8(vA, vB) -- ]])], -- [op_sse41_support=1 -- AC_MSG_RESULT([yes])], -- [AC_MSG_RESULT([no])]) -- ]) -+ ]])], -+ [op_sse41_support=1 -+ AC_MSG_RESULT([yes])], -+ [AC_MSG_RESULT([no])]) -+ ]) - # - # Check for SSE3 support - # -- AS_IF([test $op_avx_support -eq 1], -- [AC_MSG_CHECKING([for SSE3 support]) -- AC_LINK_IFELSE( -- [AC_LANG_PROGRAM([[#include ]], -- [[ -+ AC_CACHE_CHECK([if we are checking for SSE3 support], op_avx_check_sse3, AS_VAR_SET(op_avx_check_sse3, yes)) -+ AS_IF([test $op_avx_support -eq 1 && test "$op_avx_check_sse3" = "yes"], -+ [AC_MSG_CHECKING([for SSE3 support]) -+ AC_LINK_IFELSE( -+ [AC_LANG_PROGRAM([[#include ]], -+ [[ - int A[4] = {0, 1, 2, 3}; - __m128i vA = _mm_lddqu_si128((__m128i*)&A) -- ]])], -- [op_sse3_support=1 -- AC_MSG_RESULT([yes])], -- [AC_MSG_RESULT([no])]) -- ]) -+ ]])], -+ [op_sse3_support=1 -+ AC_MSG_RESULT([yes])], -+ [AC_MSG_RESULT([no])]) -+ ]) - # Second pass, do we need to add the AVX flag ? - AS_IF([test $op_avx_support -eq 0 || test $op_sse41_support -eq 0 || test $op_sse3_support -eq 0], -- [AC_MSG_CHECKING([for AVX support (with -mavx)]) -- op_avx_cflags_save="$CFLAGS" -- CFLAGS="$CFLAGS -mavx" -- AC_LINK_IFELSE( -- [AC_LANG_PROGRAM([[#include ]], -- [[ -+ [AS_IF([test "$op_avx_check_avx" = "yes"], -+ [AC_MSG_CHECKING([for AVX support (with -mavx)]) -+ op_avx_cflags_save="$CFLAGS" -+ CFLAGS="-mavx $CFLAGS" -+ AC_LINK_IFELSE( -+ [AC_LANG_PROGRAM([[#include ]], -+ [[ - __m128 vA, vB; - _mm_add_ps(vA, vB) - ]])], -- [op_avx_support=1 -- MCA_BUILD_OP_AVX_FLAGS="-mavx" -- op_sse41_support=0 -- op_sse3_support=0 -- AC_MSG_RESULT([yes])], -- [AC_MSG_RESULT([no])]) -+ [op_avx_support=1 -+ MCA_BUILD_OP_AVX_FLAGS="-mavx" -+ op_sse41_support=0 -+ op_sse3_support=0 -+ AC_MSG_RESULT([yes])], -+ [AC_MSG_RESULT([no])])]) - -- AS_IF([test $op_sse41_support -eq 0], -- [AC_MSG_CHECKING([for SSE4.1 support]) -- AC_LINK_IFELSE( -- [AC_LANG_PROGRAM([[#include ]], -- [[ -+ AS_IF([test "$op_avx_check_sse41" = "yes" && test $op_sse41_support -eq 0], -+ [AC_MSG_CHECKING([for SSE4.1 support]) -+ AC_LINK_IFELSE( -+ [AC_LANG_PROGRAM([[#include ]], -+ [[ - __m128i vA, vB; - (void)_mm_max_epi8(vA, vB) -- ]])], -- [op_sse41_support=1 -- AC_MSG_RESULT([yes])], -- [AC_MSG_RESULT([no])]) -- ]) -- AS_IF([test $op_sse3_support -eq 0], -- [AC_MSG_CHECKING([for SSE3 support]) -- AC_LINK_IFELSE( -- [AC_LANG_PROGRAM([[#include ]], -+ ]])], -+ [op_sse41_support=1 -+ AC_MSG_RESULT([yes])], -+ [AC_MSG_RESULT([no])])]) -+ AS_IF([test "$op_avx_check_sse3" = "yes" && test $op_sse3_support -eq 0], -+ [AC_MSG_CHECKING([for SSE3 support]) -+ AC_LINK_IFELSE( -+ [AC_LANG_PROGRAM([[#include ]], - [[ - int A[4] = {0, 1, 2, 3}; - __m128i vA = _mm_lddqu_si128((__m128i*)&A) - ]])], -- [op_sse3_support=1 -- AC_MSG_RESULT([yes])], -- [AC_MSG_RESULT([no])]) -- ]) -- CFLAGS="$op_avx_cflags_save" -- ]) -+ [op_sse3_support=1 -+ AC_MSG_RESULT([yes])], -+ [AC_MSG_RESULT([no])])]) -+ CFLAGS="$op_avx_cflags_save"]) - - AC_LANG_POP([C]) - ]) -@@ -276,6 +289,12 @@ AC_DEFUN([MCA_ompi_op_avx_CONFIG],[ - AC_SUBST(MCA_BUILD_OP_AVX2_FLAGS) - AC_SUBST(MCA_BUILD_OP_AVX_FLAGS) - -+ AS_VAR_POPDEF([op_avx_check_avx512]) -+ AS_VAR_POPDEF([op_avx_check_avx2]) -+ AS_VAR_POPDEF([op_avx_check_avx]) -+ AS_VAR_POPDEF([op_avx_check_sse41]) -+ AS_VAR_POPDEF([op_avx_check_sse3]) -+ - OPAL_VAR_SCOPE_POP - # Enable this component iff we have at least the most basic form of support - # for vectorial ISA - -From fcf2766a03e3c2a1001679013878209bcddd50ae Mon Sep 17 00:00:00 2001 -From: George Bosilca -Date: Mon, 28 Dec 2020 12:18:07 -0500 -Subject: [PATCH 2/3] AVX code generation improvements - -1. Allow fallback to a lesser AVX support during make - -Due to the fact that some distro restrict the compiule architecture -during make (while not setting any restrictions during configure) we -need to detect the target architecture also during make in order to -restrict the code we generate. - -2. Add comments and better protect the arch specific code. - -Identify all the vectorial functions used and clasify them according to -the neccesary hardware capabilities. -Use these requirements to protect the code for load and stores (the rest -of the code being automatically generated it is more difficult to -protect). - -3. Correctly check for AVX* support. - -Signed-off-by: George Bosilca ---- - ompi/mca/op/avx/configure.m4 | 28 +-- - ompi/mca/op/avx/op_avx_functions.c | 322 ++++++++++++++++++++++++----- - 2 files changed, 288 insertions(+), 62 deletions(-) - -diff --git a/ompi/mca/op/avx/configure.m4 b/ompi/mca/op/avx/configure.m4 -index f61b7100ef4..f3651f09d43 100644 ---- a/ompi/mca/op/avx/configure.m4 -+++ b/ompi/mca/op/avx/configure.m4 -@@ -44,7 +44,7 @@ AC_DEFUN([MCA_ompi_op_avx_CONFIG],[ - # - # Check for AVX512 support - # -- AC_CACHE_CHECK([if we are checking for AVX512 support], op_avx_check_avx512, AS_VAR_SET(op_avx_check_avx512, yes)) -+ AC_CACHE_CHECK([for AVX512 support], op_avx_check_avx512, AS_VAR_SET(op_avx_check_avx512, yes)) - AS_IF([test "$op_avx_check_avx512" = "yes"], - [AC_MSG_CHECKING([for AVX512 support (no additional flags)]) - AC_LINK_IFELSE( -@@ -115,14 +115,14 @@ AC_DEFUN([MCA_ompi_op_avx_CONFIG],[ - # - # Check support for AVX2 - # -- AC_CACHE_CHECK([if we are checking for AVX2 support], op_avx_check_avx2, AS_VAR_SET(op_avx_check_avx2, yes)) -+ AC_CACHE_CHECK([for AVX2 support], op_avx_check_avx2, AS_VAR_SET(op_avx_check_avx2, yes)) - AS_IF([test "$op_avx_check_avx2" = "yes"], - [AC_MSG_CHECKING([for AVX2 support (no additional flags)]) - AC_LINK_IFELSE( - [AC_LANG_PROGRAM([[#include ]], - [[ -- __m256 vA, vB; -- _mm256_add_ps(vA, vB) -+ __m256i vA, vB, vC; -+ vC = _mm256_and_si256(vA, vB) - ]])], - [op_avx2_support=1 - AC_MSG_RESULT([yes])], -@@ -134,8 +134,8 @@ AC_DEFUN([MCA_ompi_op_avx_CONFIG],[ - AC_LINK_IFELSE( - [AC_LANG_PROGRAM([[#include ]], - [[ -- __m256 vA, vB; -- _mm256_add_ps(vA, vB) -+ __m256i vA, vB, vC; -+ vC = _mm256_and_si256(vA, vB) - ]])], - [op_avx2_support=1 - MCA_BUILD_OP_AVX2_FLAGS="-mavx2" -@@ -164,21 +164,21 @@ AC_DEFUN([MCA_ompi_op_avx_CONFIG],[ - CFLAGS="$op_avx_cflags_save" - ])]) - # -- # What about early AVX support. The rest of the logic is slightly different as -+ # What about early AVX support? The rest of the logic is slightly different as - # we need to include some of the SSE4.1 and SSE3 instructions. So, we first check - # if we can compile AVX code without a flag, then we validate that we have support - # for the SSE4.1 and SSE3 instructions we need. If not, we check for the usage of - # the AVX flag, and then recheck if we have support for the SSE4.1 and SSE3 - # instructions. - # -- AC_CACHE_CHECK([if we are checking for AVX support], op_avx_check_avx, AS_VAR_SET(op_avx_check_avx, yes)) -+ AC_CACHE_CHECK([for AVX support], op_avx_check_avx, AS_VAR_SET(op_avx_check_avx, yes)) - AS_IF([test "$op_avx_check_avx" = "yes"], - [AC_MSG_CHECKING([for AVX support (no additional flags)]) - AC_LINK_IFELSE( - [AC_LANG_PROGRAM([[#include ]], - [[ -- __m128 vA, vB; -- _mm_add_ps(vA, vB) -+ __m256 vA, vB, vC; -+ vC = _mm256_add_ps(vA, vB) - ]])], - [op_avx_support=1 - AC_MSG_RESULT([yes])], -@@ -186,7 +186,7 @@ AC_DEFUN([MCA_ompi_op_avx_CONFIG],[ - # - # Check for SSE4.1 support - # -- AC_CACHE_CHECK([if we are checking for SSE4.1 support], op_avx_check_sse41, AS_VAR_SET(op_avx_check_sse41, yes)) -+ AC_CACHE_CHECK([for SSE4.1 support], op_avx_check_sse41, AS_VAR_SET(op_avx_check_sse41, yes)) - AS_IF([test $op_avx_support -eq 1 && test "$op_avx_check_sse41" = "yes"], - [AC_MSG_CHECKING([for SSE4.1 support]) - AC_LINK_IFELSE( -@@ -202,7 +202,7 @@ AC_DEFUN([MCA_ompi_op_avx_CONFIG],[ - # - # Check for SSE3 support - # -- AC_CACHE_CHECK([if we are checking for SSE3 support], op_avx_check_sse3, AS_VAR_SET(op_avx_check_sse3, yes)) -+ AC_CACHE_CHECK([for SSE3 support], op_avx_check_sse3, AS_VAR_SET(op_avx_check_sse3, yes)) - AS_IF([test $op_avx_support -eq 1 && test "$op_avx_check_sse3" = "yes"], - [AC_MSG_CHECKING([for SSE3 support]) - AC_LINK_IFELSE( -@@ -224,8 +224,8 @@ AC_DEFUN([MCA_ompi_op_avx_CONFIG],[ - AC_LINK_IFELSE( - [AC_LANG_PROGRAM([[#include ]], - [[ -- __m128 vA, vB; -- _mm_add_ps(vA, vB) -+ __m256 vA, vB, vC; -+ vC = _mm256_add_ps(vA, vB) - ]])], - [op_avx_support=1 - MCA_BUILD_OP_AVX_FLAGS="-mavx" -diff --git a/ompi/mca/op/avx/op_avx_functions.c b/ompi/mca/op/avx/op_avx_functions.c -index 95a9c9ab84e..ef3f0932906 100644 ---- a/ompi/mca/op/avx/op_avx_functions.c -+++ b/ompi/mca/op/avx/op_avx_functions.c -@@ -1,5 +1,5 @@ - /* -- * Copyright (c) 2019-2020 The University of Tennessee and The University -+ * Copyright (c) 2019-2021 The University of Tennessee and The University - * of Tennessee Research Foundation. All rights - * reserved. - * Copyright (c) 2020 Research Organization for Information Science -@@ -24,16 +24,42 @@ - #include "ompi/mca/op/avx/op_avx.h" - - #include -- -+/** -+ * The following logic is necessary to cope with distro maintainer's desire to change the compilation -+ * flags after the configure step, leading to inconsistencies between what OMPI has detected and what -+ * code can be generated during make. If we detect that the current code generation architecture has -+ * been changed from our own setting and cannot generate the code we need (AVX512, AVX2) we fall back -+ * to a lesser support (AVX512 -> AVX2, AVX2 -> AVX, AVX -> error out). -+ */ - #if defined(GENERATE_AVX512_CODE) --#define PREPEND _avx512 --#elif defined(GENERATE_AVX2_CODE) --#define PREPEND _avx2 --#elif defined(GENERATE_AVX_CODE) --#define PREPEND _avx --#else --#error This file should not be compiled in this conditions --#endif -+# if defined(__AVX512BW__) && defined(__AVX512F__) && defined(__AVX512VL__) -+# define PREPEND _avx512 -+# else -+# undef GENERATE_AVX512_CODE -+# endif /* defined(__AVX512BW__) && defined(__AVX512F__) && defined(__AVX512VL__) */ -+#endif /* defined(GENERATE_AVX512_CODE) */ -+ -+#if !defined(PREPEND) && defined(GENERATE_AVX2_CODE) -+# if defined(__AVX2__) -+# define PREPEND _avx2 -+# else -+# undef GENERATE_AVX2_CODE -+# endif /* defined(__AVX2__) */ -+#endif /* !defined(PREPEND) && defined(GENERATE_AVX2_CODE) */ -+ -+#if !defined(PREPEND) && defined(GENERATE_AVX_CODE) -+# if defined(__AVX__) -+# define PREPEND _avx -+# endif -+#endif /* !defined(PREPEND) && defined(GENERATE_AVX_CODE) */ -+ -+#if !defined(PREPEND) -+# if OMPI_MCA_OP_HAVE_AVX512 || OMPI_MCA_OP_HAVE_AVX2 -+# error The configure step has detected possible support for AVX512 and/or AVX2 but the compiler flags during make are too restrictive. Please disable the AVX component by adding --enable-mca-no-build=op-avx to your configure step. -+# else -+# error This file should not be compiled in this conditions. Please provide the config.log file to the OMPI developers. -+# endif /* OMPI_MCA_OP_HAVE_AVX512 || OMPI_MCA_OP_HAVE_AVX2 */ -+#endif /* !defined(PREPEND) */ - - /* - * Concatenate preprocessor tokens A and B without expanding macro definitions -@@ -46,6 +72,102 @@ - */ - #define OP_CONCAT(A, B) OP_CONCAT_NX(A, B) - -+/* -+ * grep -e "_mm[125][251][862]_.*(" avx512.c -o | sed 's/(//g' | sort | uniq -+ * -+ * https://software.intel.com/sites/landingpage/IntrinsicsGuide -+ * -+ * _mm_add_epi[8,16,32,64] SSE2 -+ * _mm_add_pd SSE2 -+ * _mm_add_ps SSE -+ * _mm_adds_epi[8,16] SSE2 -+ * _mm_adds_epu[8,16] SSE2 -+ * _mm_and_si128 SSE2 -+ * _mm_lddqu_si128 SSE3 -+ * _mm_loadu_pd SSE2 -+ * _mm_loadu_ps SSE -+ * _mm_max_epi8 SSE4.1 -+ * _mm_max_epi16 SSE2 -+ * _mm_max_epi32 SSE4.1 -+ * _mm_max_epi64 AVX512VL + AVX512F -+ * _mm_max_epu8 SSE2 -+ * _mm_max_epu[16,32] SSE4.1 -+ * _mm_max_epu64 AVX512VL + AVX512F -+ * _mm_max_pd SSE2 -+ * _mm_max_ps SSE -+ * _mm_min_epi8 SSE4.1 -+ * _mm_min_epi16 SSE2 -+ * _mm_min_epi32 SSE4.1 -+ * _mm_min_epi64 AVX512VL + AVX512F -+ * _mm_min_epu8 SSE2 -+ * _mm_min_epu[16,32] SSE4.1 -+ * _mm_min_epu64 AVX512VL + AVX512F -+ * _mm_min_pd SSE2 -+ * _mm_min_ps SSE -+ * _mm_mul_pd SSE2 -+ * _mm_mul_ps SSE -+ * _mm_mullo_epi16 SSE2 -+ * _mm_mullo_epi32 SSE4.1 -+ * _mm_mullo_epi64 AVX512VL + AVX512DQ -+ * _mm_or_si128 SSE2 -+ * _mm_storeu_pd SSE2 -+ * _mm_storeu_ps SSE -+ * _mm_storeu_si128 SSE2 -+ * _mm_xor_si128 SSE2 -+ * _mm256_add_epi[8,16,32,64] AVX2 -+ * _mm256_add_p[s,d] AVX -+ * _mm256_adds_epi[8,16] AVX2 -+ * _mm256_adds_epu[8,16] AVX2 -+ * _mm256_and_si256 AVX2 -+ * _mm256_loadu_p[s,d] AVX -+ * _mm256_loadu_si256 AVX -+ * _mm256_max_epi[8,16,32] AVX2 -+ * _mm256_max_epi64 AVX512VL + AVX512F -+ * _mm256_max_epu[8,16,32] AVX2 -+ * _mm256_max_epu64 AVX512VL + AVX512F -+ * _mm256_max_p[s,d] AVX -+ * _mm256_min_epi[8,16,32] AVX2 -+ * _mm256_min_epi64 AVX512VL + AVX512F -+ * _mm256_min_epu[8,16,32] AVX2 -+ * _mm256_min_epu64 AVX512VL + AVX512F -+ * _mm256_min_p[s,d] AVX -+ * _mm256_mul_p[s,d] AVX -+ * _mm256_mullo_epi[16,32] AVX2 -+ * _mm256_mullo_epi64 AVX512VL + AVX512DQ -+ * _mm256_or_si256 AVX2 -+ * _mm256_storeu_p[s,d] AVX -+ * _mm256_storeu_si256 AVX -+ * _mm256_xor_si256 AVX2 -+ * _mm512_add_epi[8,16] AVX512BW -+ * _mm512_add_epi[32,64] AVX512F -+ * _mm512_add_p[s,d] AVX512F -+ * _mm512_adds_epi[8,16] AVX512BW -+ * _mm512_adds_epu[8,16] AVX512BW -+ * _mm512_and_si512 AVX512F -+ * _mm512_cvtepi16_epi8 AVX512BW -+ * _mm512_cvtepi8_epi16 AVX512BW -+ * _mm512_loadu_p[s,d] AVX512F -+ * _mm512_loadu_si512 AVX512F -+ * _mm512_max_epi[8,16] AVX512BW -+ * _mm512_max_epi[32,64] AVX512F -+ * _mm512_max_epu[8,16] AVX512BW -+ * _mm512_max_epu[32,64] AVX512F -+ * _mm512_max_p[s,d] AVX512F -+ * _mm512_min_epi[8,16] AVX512BW -+ * _mm512_min_epi[32,64] AVX512F -+ * _mm512_min_epu[8,16] AVX512BW -+ * _mm512_min_epu[32,64] AVX512F -+ * _mm512_min_p[s,d] AVX512F -+ * _mm512_mul_p[s,d] AVX512F -+ * _mm512_mullo_epi16 AVX512BW -+ * _mm512_mullo_epi32 AVX512F -+ * _mm512_mullo_epi64 AVX512DQ -+ * _mm512_or_si512 AVX512F -+ * _mm512_storeu_p[s,d] AVX512F -+ * _mm512_storeu_si512 AVX512F -+ * _mm512_xor_si512 AVX512F -+ */ -+ - /* - * Since all the functions in this file are essentially identical, we - * use a macro to substitute in names and types. The core operation -@@ -62,13 +184,14 @@ - (((_flag) & mca_op_avx_component.flags) == (_flag)) - - #if defined(GENERATE_AVX512_CODE) && defined(OMPI_MCA_OP_HAVE_AVX512) && (1 == OMPI_MCA_OP_HAVE_AVX512) -+#if __AVX512F__ - #define OP_AVX_AVX512_FUNC(name, type_sign, type_size, type, op) \ - if( OMPI_OP_AVX_HAS_FLAGS(OMPI_OP_AVX_HAS_AVX512F_FLAG|OMPI_OP_AVX_HAS_AVX512BW_FLAG) ) { \ - int types_per_step = (512 / 8) / sizeof(type); \ - for( ; left_over >= types_per_step; left_over -= types_per_step ) { \ -- __m512i vecA = _mm512_loadu_si512((__m512*)in); \ -+ __m512i vecA = _mm512_loadu_si512((__m512*)in); \ - in += types_per_step; \ -- __m512i vecB = _mm512_loadu_si512((__m512*)out); \ -+ __m512i vecB = _mm512_loadu_si512((__m512*)out); \ - __m512i res = _mm512_##op##_ep##type_sign##type_size(vecA, vecB); \ - _mm512_storeu_si512((__m512*)out, res); \ - out += types_per_step; \ -@@ -76,10 +199,14 @@ - if( 0 == left_over ) return; \ - } - #else -+#error Target architecture lacks AVX512F support needed for _mm512_loadu_si512 and _mm512_storeu_si512 -+#endif /* __AVX512F__ */ -+#else - #define OP_AVX_AVX512_FUNC(name, type_sign, type_size, type, op) {} - #endif /* defined(OMPI_MCA_OP_HAVE_AVX512) && (1 == OMPI_MCA_OP_HAVE_AVX512) */ - - #if defined(GENERATE_AVX2_CODE) && defined(OMPI_MCA_OP_HAVE_AVX2) && (1 == OMPI_MCA_OP_HAVE_AVX2) -+#if __AVX__ - #define OP_AVX_AVX2_FUNC(name, type_sign, type_size, type, op) \ - if( OMPI_OP_AVX_HAS_FLAGS(OMPI_OP_AVX_HAS_AVX2_FLAG | OMPI_OP_AVX_HAS_AVX_FLAG) ) { \ - int types_per_step = (256 / 8) / sizeof(type); /* AVX2 */ \ -@@ -87,30 +214,37 @@ - __m256i vecA = _mm256_loadu_si256((__m256i*)in); \ - in += types_per_step; \ - __m256i vecB = _mm256_loadu_si256((__m256i*)out); \ -- __m256i res = _mm256_##op##_ep##type_sign##type_size(vecA, vecB); \ -+ __m256i res = _mm256_##op##_ep##type_sign##type_size(vecA, vecB); \ - _mm256_storeu_si256((__m256i*)out, res); \ - out += types_per_step; \ - } \ - if( 0 == left_over ) return; \ - } - #else -+#error Target architecture lacks AVX support needed for _mm256_loadu_si256 and _mm256_storeu_si256 -+#endif /* __AVX__ */ -+#else - #define OP_AVX_AVX2_FUNC(name, type_sign, type_size, type, op) {} - #endif /* defined(OMPI_MCA_OP_HAVE_AVX2) && (1 == OMPI_MCA_OP_HAVE_AVX2) */ - - #if defined(GENERATE_SSE3_CODE) && defined(OMPI_MCA_OP_HAVE_AVX) && (1 == OMPI_MCA_OP_HAVE_AVX) -+#if __SSE3__ - #define OP_AVX_SSE4_1_FUNC(name, type_sign, type_size, type, op) \ - if( OMPI_OP_AVX_HAS_FLAGS(OMPI_OP_AVX_HAS_SSE3_FLAG | OMPI_OP_AVX_HAS_SSE4_1_FLAG) ) { \ -- int types_per_step = (128 / 8) / sizeof(type); /* AVX */ \ -+ int types_per_step = (128 / 8) / sizeof(type); \ - for( ; left_over >= types_per_step; left_over -= types_per_step ) { \ - __m128i vecA = _mm_lddqu_si128((__m128i*)in); \ - in += types_per_step; \ - __m128i vecB = _mm_lddqu_si128((__m128i*)out); \ -- __m128i res = _mm_##op##_ep##type_sign##type_size(vecA, vecB); \ -+ __m128i res = _mm_##op##_ep##type_sign##type_size(vecA, vecB); \ - _mm_storeu_si128((__m128i*)out, res); \ - out += types_per_step; \ - } \ - } - #else -+#error Target architecture lacks SSE3 support needed for _mm_lddqu_si128 and _mm_storeu_si128 -+#endif /* __SSE3__ */ -+#else - #define OP_AVX_SSE4_1_FUNC(name, type_sign, type_size, type, op) {} - #endif /* defined(OMPI_MCA_OP_HAVE_AVX) && (1 == OMPI_MCA_OP_HAVE_AVX) */ - -@@ -143,12 +277,13 @@ static void OP_CONCAT(ompi_op_avx_2buff_##name##_##type,PREPEND)(const void *_in - } - - #if defined(GENERATE_AVX512_CODE) && defined(OMPI_MCA_OP_HAVE_AVX512) && (1 == OMPI_MCA_OP_HAVE_AVX512) -+#if __AVX512BW__ && __AVX__ - #define OP_AVX_AVX512_MUL(name, type_sign, type_size, type, op) \ - if( OMPI_OP_AVX_HAS_FLAGS(OMPI_OP_AVX_HAS_AVX512F_FLAG | OMPI_OP_AVX_HAS_AVX512BW_FLAG) ) { \ - int types_per_step = (256 / 8) / sizeof(type); \ - for (; left_over >= types_per_step; left_over -= types_per_step) { \ -- __m256i vecA_tmp = _mm256_loadu_si256((__m256i*)in); \ -- __m256i vecB_tmp = _mm256_loadu_si256((__m256i*)out); \ -+ __m256i vecA_tmp = _mm256_loadu_si256((__m256i*)in); \ -+ __m256i vecB_tmp = _mm256_loadu_si256((__m256i*)out); \ - in += types_per_step; \ - __m512i vecA = _mm512_cvtepi8_epi16(vecA_tmp); \ - __m512i vecB = _mm512_cvtepi8_epi16(vecB_tmp); \ -@@ -160,6 +295,9 @@ static void OP_CONCAT(ompi_op_avx_2buff_##name##_##type,PREPEND)(const void *_in - if( 0 == left_over ) return; \ - } - #else -+#error Target architecture lacks AVX512BW and AVX support needed for _mm256_loadu_si256, _mm256_storeu_si256 and _mm512_cvtepi8_epi16 -+#endif /* __AVX512BW__ && __AVX__ */ -+#else - #define OP_AVX_AVX512_MUL(name, type_sign, type_size, type, op) {} - #endif /* defined(OMPI_MCA_OP_HAVE_AVX512) && (1 == OMPI_MCA_OP_HAVE_AVX512) */ - /** -@@ -201,13 +339,14 @@ static void OP_CONCAT( ompi_op_avx_2buff_##name##_##type, PREPEND)(const void *_ - * - */ - #if defined(GENERATE_AVX512_CODE) && defined(OMPI_MCA_OP_HAVE_AVX512) && (1 == OMPI_MCA_OP_HAVE_AVX512) -+#if __AVX512F__ - #define OP_AVX_AVX512_BIT_FUNC(name, type_size, type, op) \ - if( OMPI_OP_AVX_HAS_FLAGS( OMPI_OP_AVX_HAS_AVX512F_FLAG) ) { \ - types_per_step = (512 / 8) / sizeof(type); \ - for (; left_over >= types_per_step; left_over -= types_per_step) { \ -- __m512i vecA = _mm512_loadu_si512((__m512i*)in); \ -+ __m512i vecA = _mm512_loadu_si512((__m512i*)in); \ - in += types_per_step; \ -- __m512i vecB = _mm512_loadu_si512((__m512i*)out); \ -+ __m512i vecB = _mm512_loadu_si512((__m512i*)out); \ - __m512i res = _mm512_##op##_si512(vecA, vecB); \ - _mm512_storeu_si512((__m512i*)out, res); \ - out += types_per_step; \ -@@ -215,10 +354,14 @@ static void OP_CONCAT( ompi_op_avx_2buff_##name##_##type, PREPEND)(const void *_ - if( 0 == left_over ) return; \ - } - #else -+#error Target architecture lacks AVX512F support needed for _mm512_loadu_si512 and _mm512_storeu_si512 -+#endif /* __AVX512F__ */ -+#else - #define OP_AVX_AVX512_BIT_FUNC(name, type_size, type, op) {} - #endif /* defined(OMPI_MCA_OP_HAVE_AVX512) && (1 == OMPI_MCA_OP_HAVE_AVX512) */ - - #if defined(GENERATE_AVX2_CODE) && defined(OMPI_MCA_OP_HAVE_AVX2) && (1 == OMPI_MCA_OP_HAVE_AVX2) -+#if __AVX__ - #define OP_AVX_AVX2_BIT_FUNC(name, type_size, type, op) \ - if( OMPI_OP_AVX_HAS_FLAGS(OMPI_OP_AVX_HAS_AVX2_FLAG | OMPI_OP_AVX_HAS_AVX_FLAG) ) { \ - types_per_step = (256 / 8) / sizeof(type); \ -@@ -226,17 +369,21 @@ static void OP_CONCAT( ompi_op_avx_2buff_##name##_##type, PREPEND)(const void *_ - __m256i vecA = _mm256_loadu_si256((__m256i*)in); \ - in += types_per_step; \ - __m256i vecB = _mm256_loadu_si256((__m256i*)out); \ -- __m256i res = _mm256_##op##_si256(vecA, vecB); \ -+ __m256i res = _mm256_##op##_si256(vecA, vecB); \ - _mm256_storeu_si256((__m256i*)out, res); \ - out += types_per_step; \ - } \ - if( 0 == left_over ) return; \ - } - #else -+#error Target architecture lacks AVX support needed for _mm256_loadu_si256 and _mm256_storeu_si256 -+#endif /* __AVX__ */ -+#else - #define OP_AVX_AVX2_BIT_FUNC(name, type_size, type, op) {} - #endif /* defined(OMPI_MCA_OP_HAVE_AVX2) && (1 == OMPI_MCA_OP_HAVE_AVX2) */ - - #if defined(GENERATE_SSE3_CODE) && defined(OMPI_MCA_OP_HAVE_AVX) && (1 == OMPI_MCA_OP_HAVE_AVX) -+#if __SSE3__ && __SSE2__ - #define OP_AVX_SSE3_BIT_FUNC(name, type_size, type, op) \ - if( OMPI_OP_AVX_HAS_FLAGS(OMPI_OP_AVX_HAS_SSE3_FLAG) ) { \ - types_per_step = (128 / 8) / sizeof(type); \ -@@ -244,12 +391,15 @@ static void OP_CONCAT( ompi_op_avx_2buff_##name##_##type, PREPEND)(const void *_ - __m128i vecA = _mm_lddqu_si128((__m128i*)in); \ - in += types_per_step; \ - __m128i vecB = _mm_lddqu_si128((__m128i*)out); \ -- __m128i res = _mm_##op##_si128(vecA, vecB); \ -+ __m128i res = _mm_##op##_si128(vecA, vecB); \ - _mm_storeu_si128((__m128i*)out, res); \ - out += types_per_step; \ - } \ - } - #else -+#error Target architecture lacks SSE2 and SSE3 support needed for _mm_lddqu_si128 and _mm_storeu_si128 -+#endif /* __SSE3__ && __SSE2__ */ -+#else - #define OP_AVX_SSE3_BIT_FUNC(name, type_size, type, op) {} - #endif /* defined(OMPI_MCA_OP_HAVE_AVX) && (1 == OMPI_MCA_OP_HAVE_AVX) */ - -@@ -282,12 +432,13 @@ static void OP_CONCAT(ompi_op_avx_2buff_##name##_##type,PREPEND)(const void *_in - } - - #if defined(GENERATE_AVX512_CODE) && defined(OMPI_MCA_OP_HAVE_AVX512) && (1 == OMPI_MCA_OP_HAVE_AVX512) -+#if __AVX512F__ - #define OP_AVX_AVX512_FLOAT_FUNC(op) \ - if( OMPI_OP_AVX_HAS_FLAGS(OMPI_OP_AVX_HAS_AVX512F_FLAG) ) { \ - types_per_step = (512 / 8) / sizeof(float); \ - for (; left_over >= types_per_step; left_over -= types_per_step) { \ -- __m512 vecA = _mm512_loadu_ps((__m512*)in); \ -- __m512 vecB = _mm512_loadu_ps((__m512*)out); \ -+ __m512 vecA = _mm512_loadu_ps((__m512*)in); \ -+ __m512 vecB = _mm512_loadu_ps((__m512*)out); \ - in += types_per_step; \ - __m512 res = _mm512_##op##_ps(vecA, vecB); \ - _mm512_storeu_ps((__m512*)out, res); \ -@@ -296,28 +447,36 @@ static void OP_CONCAT(ompi_op_avx_2buff_##name##_##type,PREPEND)(const void *_in - if( 0 == left_over ) return; \ - } - #else -+#error Target architecture lacks AVX512F support needed for _mm512_loadu_ps and _mm512_storeu_ps -+#endif /* __AVX512F__ */ -+#else - #define OP_AVX_AVX512_FLOAT_FUNC(op) {} - #endif /* defined(OMPI_MCA_OP_HAVE_AVX512) && (1 == OMPI_MCA_OP_HAVE_AVX512) */ - - #if defined(GENERATE_AVX2_CODE) && defined(OMPI_MCA_OP_HAVE_AVX2) && (1 == OMPI_MCA_OP_HAVE_AVX2) -+#if __AVX__ - #define OP_AVX_AVX_FLOAT_FUNC(op) \ - if( OMPI_OP_AVX_HAS_FLAGS(OMPI_OP_AVX_HAS_AVX_FLAG) ) { \ - types_per_step = (256 / 8) / sizeof(float); \ - for( ; left_over >= types_per_step; left_over -= types_per_step ) { \ -- __m256 vecA = _mm256_loadu_ps(in); \ -+ __m256 vecA = _mm256_loadu_ps(in); \ - in += types_per_step; \ -- __m256 vecB = _mm256_loadu_ps(out); \ -+ __m256 vecB = _mm256_loadu_ps(out); \ - __m256 res = _mm256_##op##_ps(vecA, vecB); \ -- _mm256_storeu_ps(out, res); \ -+ _mm256_storeu_ps(out, res); \ - out += types_per_step; \ - } \ - if( 0 == left_over ) return; \ - } - #else -+#error Target architecture lacks AVX support needed for _mm256_loadu_ps and _mm256_storeu_ps -+#endif /* __AVX__ */ -+#else - #define OP_AVX_AVX_FLOAT_FUNC(op) {} - #endif /* defined(OMPI_MCA_OP_HAVE_AVX2) && (1 == OMPI_MCA_OP_HAVE_AVX2) */ - - #if defined(GENERATE_AVX_CODE) && defined(OMPI_MCA_OP_HAVE_AVX) && (1 == OMPI_MCA_OP_HAVE_AVX) -+#if __SSE__ - #define OP_AVX_SSE_FLOAT_FUNC(op) \ - if( OMPI_OP_AVX_HAS_FLAGS(OMPI_OP_AVX_HAS_SSE_FLAG) ) { \ - types_per_step = (128 / 8) / sizeof(float); \ -@@ -331,6 +490,9 @@ static void OP_CONCAT(ompi_op_avx_2buff_##name##_##type,PREPEND)(const void *_in - } \ - } - #else -+#error Target architecture lacks SSE support needed for _mm_loadu_ps and _mm_storeu_ps -+#endif /* __SSE__ */ -+#else - #define OP_AVX_SSE_FLOAT_FUNC(op) {} - #endif /* defined(OMPI_MCA_OP_HAVE_AVX) && (1 == OMPI_MCA_OP_HAVE_AVX) */ - -@@ -363,13 +525,14 @@ static void OP_CONCAT(ompi_op_avx_2buff_##op##_float,PREPEND)(const void *_in, v - } - - #if defined(GENERATE_AVX512_CODE) && defined(OMPI_MCA_OP_HAVE_AVX512) && (1 == OMPI_MCA_OP_HAVE_AVX512) -+#if __AVX512F__ - #define OP_AVX_AVX512_DOUBLE_FUNC(op) \ - if( OMPI_OP_AVX_HAS_FLAGS(OMPI_OP_AVX_HAS_AVX512F_FLAG) ) { \ - types_per_step = (512 / 8) / sizeof(double); \ - for (; left_over >= types_per_step; left_over -= types_per_step) { \ -- __m512d vecA = _mm512_loadu_pd(in); \ -+ __m512d vecA = _mm512_loadu_pd(in); \ - in += types_per_step; \ -- __m512d vecB = _mm512_loadu_pd(out); \ -+ __m512d vecB = _mm512_loadu_pd(out); \ - __m512d res = _mm512_##op##_pd(vecA, vecB); \ - _mm512_storeu_pd((out), res); \ - out += types_per_step; \ -@@ -377,17 +540,21 @@ static void OP_CONCAT(ompi_op_avx_2buff_##op##_float,PREPEND)(const void *_in, v - if( 0 == left_over ) return; \ - } - #else -+#error Target architecture lacks AVXF512 support needed for _mm512_loadu_pd and _mm512_storeu_pd -+#endif /* __AVXF512__ */ -+#else - #define OP_AVX_AVX512_DOUBLE_FUNC(op) {} - #endif /* defined(OMPI_MCA_OP_HAVE_AVX512) && (1 == OMPI_MCA_OP_HAVE_AVX512) */ - - #if defined(GENERATE_AVX2_CODE) && defined(OMPI_MCA_OP_HAVE_AVX2) && (1 == OMPI_MCA_OP_HAVE_AVX2) -+#if __AVX__ - #define OP_AVX_AVX_DOUBLE_FUNC(op) \ - if( OMPI_OP_AVX_HAS_FLAGS(OMPI_OP_AVX_HAS_AVX_FLAG) ) { \ - types_per_step = (256 / 8) / sizeof(double); \ - for( ; left_over >= types_per_step; left_over -= types_per_step ) { \ -- __m256d vecA = _mm256_loadu_pd(in); \ -+ __m256d vecA = _mm256_loadu_pd(in); \ - in += types_per_step; \ -- __m256d vecB = _mm256_loadu_pd(out); \ -+ __m256d vecB = _mm256_loadu_pd(out); \ - __m256d res = _mm256_##op##_pd(vecA, vecB); \ - _mm256_storeu_pd(out, res); \ - out += types_per_step; \ -@@ -395,10 +562,14 @@ static void OP_CONCAT(ompi_op_avx_2buff_##op##_float,PREPEND)(const void *_in, v - if( 0 == left_over ) return; \ - } - #else -+#error Target architecture lacks AVX support needed for _mm256_loadu_pd and _mm256_storeu_pd -+#endif /* __AVX__ */ -+#else - #define OP_AVX_AVX_DOUBLE_FUNC(op) {} - #endif /* defined(OMPI_MCA_OP_HAVE_AVX2) && (1 == OMPI_MCA_OP_HAVE_AVX2) */ - - #if defined(GENERATE_AVX_CODE) && defined(OMPI_MCA_OP_HAVE_AVX) && (1 == OMPI_MCA_OP_HAVE_AVX) -+#if __SSE2__ - #define OP_AVX_SSE2_DOUBLE_FUNC(op) \ - if( OMPI_OP_AVX_HAS_FLAGS(OMPI_OP_AVX_HAS_SSE2_FLAG) ) { \ - types_per_step = (128 / 8) / sizeof(double); \ -@@ -412,6 +583,9 @@ static void OP_CONCAT(ompi_op_avx_2buff_##op##_float,PREPEND)(const void *_in, v - } \ - } - #else -+#error Target architecture lacks SSE2 support needed for _mm_loadu_pd and _mm_storeu_pd -+#endif /* __SSE2__ */ -+#else - #define OP_AVX_SSE2_DOUBLE_FUNC(op) {} - #endif /* defined(OMPI_MCA_OP_HAVE_AVX) && (1 == OMPI_MCA_OP_HAVE_AVX) */ - -@@ -580,12 +754,13 @@ static void OP_CONCAT(ompi_op_avx_2buff_##op##_double,PREPEND)(const void *_in, - * routines, needed for some optimizations. - */ - #if defined(GENERATE_AVX512_CODE) && defined(OMPI_MCA_OP_HAVE_AVX512) && (1 == OMPI_MCA_OP_HAVE_AVX512) -+#if __AVX512F__ - #define OP_AVX_AVX512_FUNC_3(name, type_sign, type_size, type, op) \ - if( OMPI_OP_AVX_HAS_FLAGS(OMPI_OP_AVX_HAS_AVX512F_FLAG|OMPI_OP_AVX_HAS_AVX512BW_FLAG) ) { \ - int types_per_step = (512 / 8) / sizeof(type); \ - for (; left_over >= types_per_step; left_over -= types_per_step) { \ -- __m512i vecA = _mm512_loadu_si512(in1); \ -- __m512i vecB = _mm512_loadu_si512(in2); \ -+ __m512i vecA = _mm512_loadu_si512(in1); \ -+ __m512i vecB = _mm512_loadu_si512(in2); \ - in1 += types_per_step; \ - in2 += types_per_step; \ - __m512i res = _mm512_##op##_ep##type_sign##type_size(vecA, vecB); \ -@@ -595,10 +770,14 @@ static void OP_CONCAT(ompi_op_avx_2buff_##op##_double,PREPEND)(const void *_in, - if( 0 == left_over ) return; \ - } - #else -+#error Target architecture lacks AVX512F support needed for _mm512_loadu_si512 and _mm512_storeu_si512 -+#endif /* __AVX512F__ */ -+#else - #define OP_AVX_AVX512_FUNC_3(name, type_sign, type_size, type, op) {} - #endif /* defined(OMPI_MCA_OP_HAVE_AVX512) && (1 == OMPI_MCA_OP_HAVE_AVX512) */ - - #if defined(GENERATE_AVX2_CODE) && defined(OMPI_MCA_OP_HAVE_AVX2) && (1 == OMPI_MCA_OP_HAVE_AVX2) -+#if __AVX__ - #define OP_AVX_AVX2_FUNC_3(name, type_sign, type_size, type, op) \ - if( OMPI_OP_AVX_HAS_FLAGS(OMPI_OP_AVX_HAS_AVX2_FLAG | OMPI_OP_AVX_HAS_AVX_FLAG) ) { \ - int types_per_step = (256 / 8) / sizeof(type); \ -@@ -607,17 +786,21 @@ static void OP_CONCAT(ompi_op_avx_2buff_##op##_double,PREPEND)(const void *_in, - __m256i vecB = _mm256_loadu_si256((__m256i*)in2); \ - in1 += types_per_step; \ - in2 += types_per_step; \ -- __m256i res = _mm256_##op##_ep##type_sign##type_size(vecA, vecB); \ -+ __m256i res = _mm256_##op##_ep##type_sign##type_size(vecA, vecB); \ - _mm256_storeu_si256((__m256i*)out, res); \ - out += types_per_step; \ - } \ - if( 0 == left_over ) return; \ - } - #else -+#error Target architecture lacks AVX support needed for _mm256_loadu_si256 and _mm256_storeu_si256 -+#endif /* __AVX__ */ -+#else - #define OP_AVX_AVX2_FUNC_3(name, type_sign, type_size, type, op) {} - #endif /* defined(OMPI_MCA_OP_HAVE_AVX2) && (1 == OMPI_MCA_OP_HAVE_AVX2) */ - - #if defined(GENERATE_SSE3_CODE) && defined(OMPI_MCA_OP_HAVE_SSE41) && (1 == OMPI_MCA_OP_HAVE_SSE41) && defined(OMPI_MCA_OP_HAVE_AVX) && (1 == OMPI_MCA_OP_HAVE_AVX) -+#if __SSE3__ && __SSE2__ - #define OP_AVX_SSE4_1_FUNC_3(name, type_sign, type_size, type, op) \ - if( OMPI_OP_AVX_HAS_FLAGS(OMPI_OP_AVX_HAS_SSE3_FLAG | OMPI_OP_AVX_HAS_SSE4_1_FLAG) ) { \ - int types_per_step = (128 / 8) / sizeof(type); \ -@@ -626,12 +809,15 @@ static void OP_CONCAT(ompi_op_avx_2buff_##op##_double,PREPEND)(const void *_in, - __m128i vecB = _mm_lddqu_si128((__m128i*)in2); \ - in1 += types_per_step; \ - in2 += types_per_step; \ -- __m128i res = _mm_##op##_ep##type_sign##type_size(vecA, vecB); \ -+ __m128i res = _mm_##op##_ep##type_sign##type_size(vecA, vecB); \ - _mm_storeu_si128((__m128i*)out, res); \ - out += types_per_step; \ - } \ - } - #else -+#error Target architecture lacks SSE2 and SSE3 support needed for _mm_lddqu_si128 and _mm_storeu_si128 -+#endif /* __SSE3__ && __SSE2__ */ -+#else - #define OP_AVX_SSE4_1_FUNC_3(name, type_sign, type_size, type, op) {} - #endif /* defined(OMPI_MCA_OP_HAVE_AVX) && (1 == OMPI_MCA_OP_HAVE_AVX) */ - -@@ -667,12 +853,13 @@ static void OP_CONCAT(ompi_op_avx_3buff_##name##_##type,PREPEND)(const void * re - } - - #if defined(GENERATE_AVX512_CODE) && defined(OMPI_MCA_OP_HAVE_AVX512) && (1 == OMPI_MCA_OP_HAVE_AVX512) -+#if __AVX512BW__ && __AVX__ - #define OP_AVX_AVX512_MUL_3(name, type_sign, type_size, type, op) \ - if( OMPI_OP_AVX_HAS_FLAGS(OMPI_OP_AVX_HAS_AVX512F_FLAG | OMPI_OP_AVX_HAS_AVX512BW_FLAG) ) { \ - int types_per_step = (256 / 8) / sizeof(type); \ - for (; left_over >= types_per_step; left_over -= types_per_step) { \ -- __m256i vecA_tmp = _mm256_loadu_si256((__m256i*)in1); \ -- __m256i vecB_tmp = _mm256_loadu_si256((__m256i*)in2); \ -+ __m256i vecA_tmp = _mm256_loadu_si256((__m256i*)in1); \ -+ __m256i vecB_tmp = _mm256_loadu_si256((__m256i*)in2); \ - in1 += types_per_step; \ - in2 += types_per_step; \ - __m512i vecA = _mm512_cvtepi8_epi16(vecA_tmp); \ -@@ -685,6 +872,9 @@ static void OP_CONCAT(ompi_op_avx_3buff_##name##_##type,PREPEND)(const void * re - if( 0 == left_over ) return; \ - } - #else -+#error Target architecture lacks AVX512BW and AVX support needed for _mm256_loadu_si256, _mm256_storeu_si256 and _mm512_cvtepi8_epi16 -+#endif /* __AVX512BW__ && __AVX__ */ -+#else - #define OP_AVX_AVX512_MUL_3(name, type_sign, type_size, type, op) {} - #endif /* defined(OMPI_MCA_OP_HAVE_AVX512) && (1 == OMPI_MCA_OP_HAVE_AVX512) */ - /** -@@ -723,12 +913,13 @@ static void OP_CONCAT(ompi_op_avx_3buff_##name##_##type,PREPEND)(const void * re - } - - #if defined(GENERATE_AVX512_CODE) && defined(OMPI_MCA_OP_HAVE_AVX512) && (1 == OMPI_MCA_OP_HAVE_AVX512) -+#if __AVX512F__ - #define OP_AVX_AVX512_BIT_FUNC_3(name, type_size, type, op) \ - if( OMPI_OP_AVX_HAS_FLAGS(OMPI_OP_AVX_HAS_AVX512F_FLAG) ) { \ - types_per_step = (512 / 8) / sizeof(type); \ - for (; left_over >= types_per_step; left_over -= types_per_step) { \ -- __m512i vecA = _mm512_loadu_si512(in1); \ -- __m512i vecB = _mm512_loadu_si512(in2); \ -+ __m512i vecA = _mm512_loadu_si512(in1); \ -+ __m512i vecB = _mm512_loadu_si512(in2); \ - in1 += types_per_step; \ - in2 += types_per_step; \ - __m512i res = _mm512_##op##_si512(vecA, vecB); \ -@@ -738,10 +929,14 @@ static void OP_CONCAT(ompi_op_avx_3buff_##name##_##type,PREPEND)(const void * re - if( 0 == left_over ) return; \ - } - #else -+#error Target architecture lacks AVX512F support needed for _mm512_loadu_si512 and _mm512_storeu_si512 -+#endif /* __AVX512F__ */ -+#else - #define OP_AVX_AVX512_BIT_FUNC_3(name, type_size, type, op) {} - #endif /* defined(OMPI_MCA_OP_HAVE_AVX512) && (1 == OMPI_MCA_OP_HAVE_AVX512) */ - - #if defined(GENERATE_AVX2_CODE) && defined(OMPI_MCA_OP_HAVE_AVX2) && (1 == OMPI_MCA_OP_HAVE_AVX2) -+#if __AVX__ - #define OP_AVX_AVX2_BIT_FUNC_3(name, type_size, type, op) \ - if( OMPI_OP_AVX_HAS_FLAGS(OMPI_OP_AVX_HAS_AVX2_FLAG | OMPI_OP_AVX_HAS_AVX_FLAG) ) { \ - types_per_step = (256 / 8) / sizeof(type); \ -@@ -750,17 +945,21 @@ static void OP_CONCAT(ompi_op_avx_3buff_##name##_##type,PREPEND)(const void * re - __m256i vecB = _mm256_loadu_si256((__m256i*)in2); \ - in1 += types_per_step; \ - in2 += types_per_step; \ -- __m256i res = _mm256_##op##_si256(vecA, vecB); \ -+ __m256i res = _mm256_##op##_si256(vecA, vecB); \ - _mm256_storeu_si256((__m256i*)out, res); \ - out += types_per_step; \ - } \ - if( 0 == left_over ) return; \ - } - #else -+#error Target architecture lacks AVX support needed for _mm256_loadu_si256 and _mm256_storeu_si256 -+#endif /* __AVX__ */ -+#else - #define OP_AVX_AVX2_BIT_FUNC_3(name, type_size, type, op) {} - #endif /* defined(OMPI_MCA_OP_HAVE_AVX2) && (1 == OMPI_MCA_OP_HAVE_AVX2) */ - - #if defined(GENERATE_SSE3_CODE) && defined(OMPI_MCA_OP_HAVE_AVX) && (1 == OMPI_MCA_OP_HAVE_AVX) -+#if __SSE3__ && __SSE2__ - #define OP_AVX_SSE3_BIT_FUNC_3(name, type_size, type, op) \ - if( OMPI_OP_AVX_HAS_FLAGS(OMPI_OP_AVX_HAS_SSE3_FLAG) ) { \ - types_per_step = (128 / 8) / sizeof(type); \ -@@ -769,12 +968,15 @@ static void OP_CONCAT(ompi_op_avx_3buff_##name##_##type,PREPEND)(const void * re - __m128i vecB = _mm_lddqu_si128((__m128i*)in2); \ - in1 += types_per_step; \ - in2 += types_per_step; \ -- __m128i res = _mm_##op##_si128(vecA, vecB); \ -+ __m128i res = _mm_##op##_si128(vecA, vecB); \ - _mm_storeu_si128((__m128i*)out, res); \ - out += types_per_step; \ - } \ - } - #else -+#error Target architecture lacks SSE2 and SSE3 support needed for _mm_lddqu_si128 and _mm_storeu_si128 -+#endif /* __SSE3__ && __SSE2__ */ -+#else - #define OP_AVX_SSE3_BIT_FUNC_3(name, type_size, type, op) {} - #endif /* defined(OMPI_MCA_OP_HAVE_AVX) && (1 == OMPI_MCA_OP_HAVE_AVX) */ - -@@ -809,12 +1011,13 @@ static void OP_CONCAT(ompi_op_avx_3buff_##op##_##type,PREPEND)(const void *_in1, - } - - #if defined(GENERATE_AVX512_CODE) && defined(OMPI_MCA_OP_HAVE_AVX512) && (1 == OMPI_MCA_OP_HAVE_AVX512) -+#if __AVX512F__ - #define OP_AVX_AVX512_FLOAT_FUNC_3(op) \ - if( OMPI_OP_AVX_HAS_FLAGS(OMPI_OP_AVX_HAS_AVX512F_FLAG) ) { \ - types_per_step = (512 / 8) / sizeof(float); \ - for (; left_over >= types_per_step; left_over -= types_per_step) { \ -- __m512 vecA = _mm512_loadu_ps(in1); \ -- __m512 vecB = _mm512_loadu_ps(in2); \ -+ __m512 vecA = _mm512_loadu_ps(in1); \ -+ __m512 vecB = _mm512_loadu_ps(in2); \ - in1 += types_per_step; \ - in2 += types_per_step; \ - __m512 res = _mm512_##op##_ps(vecA, vecB); \ -@@ -824,16 +1027,20 @@ static void OP_CONCAT(ompi_op_avx_3buff_##op##_##type,PREPEND)(const void *_in1, - if( 0 == left_over ) return; \ - } - #else -+#error Target architecture lacks AVX512F support needed for _mm512_loadu_ps and _mm512_storeu_ps -+#endif /* __AVX512F__ */ -+#else - #define OP_AVX_AVX512_FLOAT_FUNC_3(op) {} - #endif /* defined(OMPI_MCA_OP_HAVE_AVX512) && (1 == OMPI_MCA_OP_HAVE_AVX512) */ - - #if defined(GENERATE_AVX2_CODE) && defined(OMPI_MCA_OP_HAVE_AVX2) && (1 == OMPI_MCA_OP_HAVE_AVX2) -+#if __AVX__ - #define OP_AVX_AVX_FLOAT_FUNC_3(op) \ - if( OMPI_OP_AVX_HAS_FLAGS(OMPI_OP_AVX_HAS_AVX_FLAG) ) { \ - types_per_step = (256 / 8) / sizeof(float); \ - for( ; left_over >= types_per_step; left_over -= types_per_step ) { \ -- __m256 vecA = _mm256_loadu_ps(in1); \ -- __m256 vecB = _mm256_loadu_ps(in2); \ -+ __m256 vecA = _mm256_loadu_ps(in1); \ -+ __m256 vecB = _mm256_loadu_ps(in2); \ - in1 += types_per_step; \ - in2 += types_per_step; \ - __m256 res = _mm256_##op##_ps(vecA, vecB); \ -@@ -843,10 +1050,14 @@ static void OP_CONCAT(ompi_op_avx_3buff_##op##_##type,PREPEND)(const void *_in1, - if( 0 == left_over ) return; \ - } - #else -+#error Target architecture lacks AVX support needed for _mm256_loadu_ps and _mm256_storeu_ps -+#endif /* __AVX__ */ -+#else - #define OP_AVX_AVX_FLOAT_FUNC_3(op) {} - #endif /* defined(OMPI_MCA_OP_HAVE_AVX2) && (1 == OMPI_MCA_OP_HAVE_AVX2) */ - - #if defined(GENERATE_AVX_CODE) && defined(OMPI_MCA_OP_HAVE_AVX) && (1 == OMPI_MCA_OP_HAVE_AVX) -+#if __SSE__ - #define OP_AVX_SSE_FLOAT_FUNC_3(op) \ - if( OMPI_OP_AVX_HAS_FLAGS(OMPI_OP_AVX_HAS_SSE_FLAG) ) { \ - types_per_step = (128 / 8) / sizeof(float); \ -@@ -861,6 +1072,9 @@ static void OP_CONCAT(ompi_op_avx_3buff_##op##_##type,PREPEND)(const void *_in1, - } \ - } - #else -+#error Target architecture lacks SSE support needed for _mm_loadu_ps and _mm_storeu_ps -+#endif /* __SSE__ */ -+#else - #define OP_AVX_SSE_FLOAT_FUNC_3(op) {} - #endif /* defined(OMPI_MCA_OP_HAVE_AVX) && (1 == OMPI_MCA_OP_HAVE_AVX) */ - -@@ -895,12 +1109,13 @@ static void OP_CONCAT(ompi_op_avx_3buff_##op##_float,PREPEND)(const void *_in1, - } - - #if defined(GENERATE_AVX512_CODE) && defined(OMPI_MCA_OP_HAVE_AVX512) && (1 == OMPI_MCA_OP_HAVE_AVX512) -+#if __AVX512F__ - #define OP_AVX_AVX512_DOUBLE_FUNC_3(op) \ - if( OMPI_OP_AVX_HAS_FLAGS(OMPI_OP_AVX_HAS_AVX512F_FLAG) ) { \ - types_per_step = (512 / 8) / sizeof(double); \ - for (; left_over >= types_per_step; left_over -= types_per_step) { \ -- __m512d vecA = _mm512_loadu_pd((in1)); \ -- __m512d vecB = _mm512_loadu_pd((in2)); \ -+ __m512d vecA = _mm512_loadu_pd((in1)); \ -+ __m512d vecB = _mm512_loadu_pd((in2)); \ - in1 += types_per_step; \ - in2 += types_per_step; \ - __m512d res = _mm512_##op##_pd(vecA, vecB); \ -@@ -910,16 +1125,20 @@ static void OP_CONCAT(ompi_op_avx_3buff_##op##_float,PREPEND)(const void *_in1, - if( 0 == left_over ) return; \ - } - #else -+#error Target architecture lacks AVXF512 support needed for _mm512_loadu_pd and _mm512_storeu_pd -+#endif /* __AVXF512__ */ -+#else - #define OP_AVX_AVX512_DOUBLE_FUNC_3(op) {} - #endif /* defined(OMPI_MCA_OP_HAVE_AVX512) && (1 == OMPI_MCA_OP_HAVE_AVX512) */ - - #if defined(GENERATE_AVX2_CODE) && defined(OMPI_MCA_OP_HAVE_AVX2) && (1 == OMPI_MCA_OP_HAVE_AVX2) -+#if __AVX__ - #define OP_AVX_AVX_DOUBLE_FUNC_3(op) \ - if( OMPI_OP_AVX_HAS_FLAGS(OMPI_OP_AVX_HAS_AVX_FLAG) ) { \ - types_per_step = (256 / 8) / sizeof(double); \ - for( ; left_over >= types_per_step; left_over -= types_per_step ) { \ -- __m256d vecA = _mm256_loadu_pd(in1); \ -- __m256d vecB = _mm256_loadu_pd(in2); \ -+ __m256d vecA = _mm256_loadu_pd(in1); \ -+ __m256d vecB = _mm256_loadu_pd(in2); \ - in1 += types_per_step; \ - in2 += types_per_step; \ - __m256d res = _mm256_##op##_pd(vecA, vecB); \ -@@ -929,10 +1148,14 @@ static void OP_CONCAT(ompi_op_avx_3buff_##op##_float,PREPEND)(const void *_in1, - if( 0 == left_over ) return; \ - } - #else -+#error Target architecture lacks AVX support needed for _mm256_loadu_pd and _mm256_storeu_pd -+#endif /* __AVX__ */ -+#else - #define OP_AVX_AVX_DOUBLE_FUNC_3(op) {} - #endif /* defined(OMPI_MCA_OP_HAVE_AVX2) && (1 == OMPI_MCA_OP_HAVE_AVX2) */ - - #if defined(GENERATE_AVX_CODE) && defined(OMPI_MCA_OP_HAVE_AVX) && (1 == OMPI_MCA_OP_HAVE_AVX) -+#if __SSE2__ - #define OP_AVX_SSE2_DOUBLE_FUNC_3(op) \ - if( OMPI_OP_AVX_HAS_FLAGS(OMPI_OP_AVX_HAS_SSE2_FLAG) ) { \ - types_per_step = (128 / 8) / sizeof(double); \ -@@ -947,6 +1170,9 @@ static void OP_CONCAT(ompi_op_avx_3buff_##op##_float,PREPEND)(const void *_in1, - } \ - } - #else -+#error Target architecture lacks SSE2 support needed for _mm_loadu_pd and _mm_storeu_pd -+#endif /* __SSE2__ */ -+#else - #define OP_AVX_SSE2_DOUBLE_FUNC_3(op) {} - #endif /* defined(OMPI_MCA_OP_HAVE_AVX) && (1 == OMPI_MCA_OP_HAVE_AVX) */ - - -From 20be3fc25713ac2de3eb4d77b85248d7fe2bc28b Mon Sep 17 00:00:00 2001 -From: George Bosilca -Date: Tue, 5 Jan 2021 22:40:26 -0500 -Subject: [PATCH 3/3] A better test for MPI_OP performance. - -The test now has the ability to add a shift to all or to any of the -input and output buffers to assess the impact of unaligned operations. - -Signed-off-by: George Bosilca ---- - test/datatype/reduce_local.c | 161 ++++++++++++++++++++++------------- - 1 file changed, 104 insertions(+), 57 deletions(-) - -diff --git a/test/datatype/reduce_local.c b/test/datatype/reduce_local.c -index 97890f94227..f227439b714 100644 ---- a/test/datatype/reduce_local.c -+++ b/test/datatype/reduce_local.c -@@ -59,7 +59,7 @@ static int total_errors = 0; - _a < _b ? _a : _b; }) - - static void print_status(char* op, char* type, int type_size, -- int count, double duration, -+ int count, int max_shift, double *duration, int repeats, - int correct ) - { - if(correct) { -@@ -68,7 +68,15 @@ static void print_status(char* op, char* type, int type_size, - printf("%-10s %s [\033[1;31mfail\033[0m]", op, type); - total_errors++; - } -- printf(" count %-10d time %.6f seconds\n", count, duration); -+ if( 1 == max_shift ) { -+ printf(" count %-10d time (seconds) %.8f seconds\n", count, duration[0] / repeats); -+ } else { -+ printf(" count %-10d time (seconds / shifts) ", count); -+ for( int i = 0; i < max_shift; i++ ) { -+ printf("%.8f ", duration[i] / repeats ); -+ } -+ printf("\n"); -+ } - } - - static int do_ops_built = 0; -@@ -115,19 +123,23 @@ do { \ - const TYPE *_p1 = ((TYPE*)(INBUF)), *_p3 = ((TYPE*)(CHECK_BUF)); \ - TYPE *_p2 = ((TYPE*)(INOUT_BUF)); \ - skip_op_type = 0; \ -- for(int _k = 0; _k < min((COUNT), 4); +_k++ ) { \ -- memcpy(_p2, _p3, sizeof(TYPE) * (COUNT)); \ -- tstart = MPI_Wtime(); \ -- MPI_Reduce_local(_p1+_k, _p2+_k, (COUNT)-_k, (MPITYPE), (MPIOP)); \ -- tend = MPI_Wtime(); \ -- if( check ) { \ -- for( i = 0; i < (COUNT)-_k; i++ ) { \ -- if(((_p2+_k)[i]) == (((_p1+_k)[i]) OPNAME ((_p3+_k)[i]))) \ -- continue; \ -- printf("First error at alignment %d position %d (%" TYPE_PREFIX " %s %" TYPE_PREFIX " != %" TYPE_PREFIX ")\n", \ -- _k, i, (_p1+_k)[i], (#OPNAME), (_p3+_k)[i], (_p2+_k)[i]); \ -- correctness = 0; \ -- break; \ -+ for(int _k = 0; _k < min((COUNT), max_shift); +_k++ ) { \ -+ duration[_k] = 0.0; \ -+ for(int _r = repeats; _r > 0; _r--) { \ -+ memcpy(_p2, _p3, sizeof(TYPE) * (COUNT)); \ -+ tstart = MPI_Wtime(); \ -+ MPI_Reduce_local(_p1+_k, _p2+_k, (COUNT)-_k, (MPITYPE), (MPIOP)); \ -+ tend = MPI_Wtime(); \ -+ duration[_k] += (tend - tstart); \ -+ if( check ) { \ -+ for( i = 0; i < (COUNT)-_k; i++ ) { \ -+ if(((_p2+_k)[i]) == (((_p1+_k)[i]) OPNAME ((_p3+_k)[i]))) \ -+ continue; \ -+ printf("First error at alignment %d position %d (%" TYPE_PREFIX " %s %" TYPE_PREFIX " != %" TYPE_PREFIX ")\n", \ -+ _k, i, (_p1+_k)[i], (#OPNAME), (_p3+_k)[i], (_p2+_k)[i]); \ -+ correctness = 0; \ -+ break; \ -+ } \ - } \ - } \ - } \ -@@ -139,20 +151,24 @@ do { \ - const TYPE *_p1 = ((TYPE*)(INBUF)), *_p3 = ((TYPE*)(CHECK_BUF)); \ - TYPE *_p2 = ((TYPE*)(INOUT_BUF)); \ - skip_op_type = 0; \ -- for(int _k = 0; _k < min((COUNT), 4); +_k++ ) { \ -- memcpy(_p2, _p3, sizeof(TYPE) * (COUNT)); \ -- tstart = MPI_Wtime(); \ -- MPI_Reduce_local(_p1+_k, _p2+_k, (COUNT), (MPITYPE), (MPIOP)); \ -- tend = MPI_Wtime(); \ -- if( check ) { \ -- for( i = 0; i < (COUNT); i++ ) { \ -- TYPE _v1 = *(_p1+_k), _v2 = *(_p2+_k), _v3 = *(_p3+_k); \ -- if(_v2 == OPNAME(_v1, _v3)) \ -- continue; \ -- printf("First error at alignment %d position %d (%" TYPE_PREFIX " != %s(%" TYPE_PREFIX ", %" TYPE_PREFIX ")\n", \ -- _k, i, _v1, (#OPNAME), _v3, _v2); \ -- correctness = 0; \ -- break; \ -+ for(int _k = 0; _k < min((COUNT), max_shift); +_k++ ) { \ -+ duration[_k] = 0.0; \ -+ for(int _r = repeats; _r > 0; _r--) { \ -+ memcpy(_p2, _p3, sizeof(TYPE) * (COUNT)); \ -+ tstart = MPI_Wtime(); \ -+ MPI_Reduce_local(_p1+_k, _p2+_k, (COUNT), (MPITYPE), (MPIOP)); \ -+ tend = MPI_Wtime(); \ -+ duration[_k] += (tend - tstart); \ -+ if( check ) { \ -+ for( i = 0; i < (COUNT); i++ ) { \ -+ TYPE _v1 = *(_p1+_k), _v2 = *(_p2+_k), _v3 = *(_p3+_k); \ -+ if(_v2 == OPNAME(_v1, _v3)) \ -+ continue; \ -+ printf("First error at alignment %d position %d (%" TYPE_PREFIX " != %s(%" TYPE_PREFIX ", %" TYPE_PREFIX ")\n", \ -+ _k, i, _v1, (#OPNAME), _v3, _v2); \ -+ correctness = 0; \ -+ break; \ -+ } \ - } \ - } \ - } \ -@@ -163,24 +179,36 @@ int main(int argc, char **argv) - { - static void *in_buf = NULL, *inout_buf = NULL, *inout_check_buf = NULL; - int count, type_size = 8, rank, size, provided, correctness = 1; -- int repeats = 1, i, c; -- double tstart, tend; -+ int repeats = 1, i, c, op1_alignment = 0, res_alignment = 0; -+ int max_shift = 4; -+ double *duration, tstart, tend; - bool check = true; - char type[5] = "uifd", *op = "sum", *mpi_type; - int lower = 1, upper = 1000000, skip_op_type; - MPI_Op mpi_op; - -- while( -1 != (c = getopt(argc, argv, "l:u:t:o:s:n:vfh")) ) { -+ while( -1 != (c = getopt(argc, argv, "l:u:r:t:o:i:s:n:1:2:vfh")) ) { - switch(c) { - case 'l': - lower = atoi(optarg); - if( lower <= 0 ) { -- fprintf(stderr, "The number of elements must be positive\n"); -+ fprintf(stderr, "The lower number of elements must be positive\n"); - exit(-1); - } - break; - case 'u': - upper = atoi(optarg); -+ if( lower <= 0 ) { -+ fprintf(stderr, "The upper number of elements must be positive\n"); -+ exit(-1); -+ } -+ break; -+ case 'i': -+ max_shift = atoi(optarg); -+ if( max_shift <= 0 ) { -+ fprintf(stderr, "The max shift must be positive\n"); -+ exit(-1); -+ } - break; - case 'f': - check = false; -@@ -216,14 +244,32 @@ int main(int argc, char **argv) - exit(-1); - } - break; -+ case '1': -+ op1_alignment = atoi(optarg); -+ if( op1_alignment < 0 ) { -+ fprintf(stderr, "alignment for the first operand must be positive\n"); -+ exit(-1); -+ } -+ break; -+ case '2': -+ res_alignment = atoi(optarg); -+ if( res_alignment < 0 ) { -+ fprintf(stderr, "alignment for the result must be positive\n"); -+ exit(-1); -+ } -+ break; - case 'h': - fprintf(stdout, "%s options are:\n" - " -l : lower number of elements\n" - " -u : upper number of elements\n" - " -s : 8, 16, 32 or 64 bits elements\n" - " -t [i,u,f,d] : type of the elements to apply the operations on\n" -+ " -r : number of repetitions for each test\n" - " -o : comma separated list of operations to execute among\n" - " sum, min, max, prod, bor, bxor, band\n" -+ " -i : shift on all buffers to check alignment\n" -+ " -1 : (mis)alignment in elements for the first op\n" -+ " -2 : (mis)alignment in elements for the result\n" - " -v: increase the verbosity level\n" - " -h: this help message\n", argv[0]); - exit(0); -@@ -233,9 +279,10 @@ int main(int argc, char **argv) - if( !do_ops_built ) { /* not yet done, take the default */ - build_do_ops( "all", do_ops); - } -- in_buf = malloc(upper * sizeof(double)); -- inout_buf = malloc(upper * sizeof(double)); -- inout_check_buf = malloc(upper * sizeof(double)); -+ posix_memalign( &in_buf, 64, (upper + op1_alignment) * sizeof(double)); -+ posix_memalign( &inout_buf, 64, (upper + res_alignment) * sizeof(double)); -+ posix_memalign( &inout_check_buf, 64, upper * sizeof(double)); -+ duration = (double*)malloc(max_shift * sizeof(double)); - - ompi_mpi_init(argc, argv, MPI_THREAD_SERIALIZED, &provided, false); - -@@ -253,8 +300,8 @@ int main(int argc, char **argv) - correctness = 1; - if('i' == type[type_idx]) { - if( 8 == type_size ) { -- int8_t *in_int8 = (int8_t*)in_buf, -- *inout_int8 = (int8_t*)inout_buf, -+ int8_t *in_int8 = (int8_t*)((char*)in_buf + op1_alignment * sizeof(int8_t)), -+ *inout_int8 = (int8_t*)((char*)inout_buf + res_alignment * sizeof(int8_t)), - *inout_int8_for_check = (int8_t*)inout_check_buf; - for( i = 0; i < count; i++ ) { - in_int8[i] = 5; -@@ -299,8 +346,8 @@ int main(int argc, char **argv) - } - } - if( 16 == type_size ) { -- int16_t *in_int16 = (int16_t*)in_buf, -- *inout_int16 = (int16_t*)inout_buf, -+ int16_t *in_int16 = (int16_t*)((char*)in_buf + op1_alignment * sizeof(int16_t)), -+ *inout_int16 = (int16_t*)((char*)inout_buf + res_alignment * sizeof(int16_t)), - *inout_int16_for_check = (int16_t*)inout_check_buf; - for( i = 0; i < count; i++ ) { - in_int16[i] = 5; -@@ -345,8 +392,8 @@ int main(int argc, char **argv) - } - } - if( 32 == type_size ) { -- int32_t *in_int32 = (int32_t*)in_buf, -- *inout_int32 = (int32_t*)inout_buf, -+ int32_t *in_int32 = (int32_t*)((char*)in_buf + op1_alignment * sizeof(int32_t)), -+ *inout_int32 = (int32_t*)((char*)inout_buf + res_alignment * sizeof(int32_t)), - *inout_int32_for_check = (int32_t*)inout_check_buf; - for( i = 0; i < count; i++ ) { - in_int32[i] = 5; -@@ -391,8 +438,8 @@ int main(int argc, char **argv) - } - } - if( 64 == type_size ) { -- int64_t *in_int64 = (int64_t*)in_buf, -- *inout_int64 = (int64_t*)inout_buf, -+ int64_t *in_int64 = (int64_t*)((char*)in_buf + op1_alignment * sizeof(int64_t)), -+ *inout_int64 = (int64_t*)((char*)inout_buf + res_alignment * sizeof(int64_t)), - *inout_int64_for_check = (int64_t*)inout_check_buf; - for( i = 0; i < count; i++ ) { - in_int64[i] = 5; -@@ -440,8 +487,8 @@ int main(int argc, char **argv) - - if( 'u' == type[type_idx] ) { - if( 8 == type_size ) { -- uint8_t *in_uint8 = (uint8_t*)in_buf, -- *inout_uint8 = (uint8_t*)inout_buf, -+ uint8_t *in_uint8 = (uint8_t*)((char*)in_buf + op1_alignment * sizeof(uint8_t)), -+ *inout_uint8 = (uint8_t*)((char*)inout_buf + res_alignment * sizeof(uint8_t)), - *inout_uint8_for_check = (uint8_t*)inout_check_buf; - for( i = 0; i < count; i++ ) { - in_uint8[i] = 5; -@@ -486,8 +533,8 @@ int main(int argc, char **argv) - } - } - if( 16 == type_size ) { -- uint16_t *in_uint16 = (uint16_t*)in_buf, -- *inout_uint16 = (uint16_t*)inout_buf, -+ uint16_t *in_uint16 = (uint16_t*)((char*)in_buf + op1_alignment * sizeof(uint16_t)), -+ *inout_uint16 = (uint16_t*)((char*)inout_buf + res_alignment * sizeof(uint16_t)), - *inout_uint16_for_check = (uint16_t*)inout_check_buf; - for( i = 0; i < count; i++ ) { - in_uint16[i] = 5; -@@ -532,8 +579,8 @@ int main(int argc, char **argv) - } - } - if( 32 == type_size ) { -- uint32_t *in_uint32 = (uint32_t*)in_buf, -- *inout_uint32 = (uint32_t*)inout_buf, -+ uint32_t *in_uint32 = (uint32_t*)((char*)in_buf + op1_alignment * sizeof(uint32_t)), -+ *inout_uint32 = (uint32_t*)((char*)inout_buf + res_alignment * sizeof(uint32_t)), - *inout_uint32_for_check = (uint32_t*)inout_check_buf; - for( i = 0; i < count; i++ ) { - in_uint32[i] = 5; -@@ -578,8 +625,8 @@ int main(int argc, char **argv) - } - } - if( 64 == type_size ) { -- uint64_t *in_uint64 = (uint64_t*)in_buf, -- *inout_uint64 = (uint64_t*)inout_buf, -+ uint64_t *in_uint64 = (uint64_t*)((char*)in_buf + op1_alignment * sizeof(uint64_t)), -+ *inout_uint64 = (uint64_t*)((char*)inout_buf + res_alignment * sizeof(uint64_t)), - *inout_uint64_for_check = (uint64_t*)inout_check_buf; - for( i = 0; i < count; i++ ) { - in_uint64[i] = 5; -@@ -626,8 +673,8 @@ int main(int argc, char **argv) - } - - if( 'f' == type[type_idx] ) { -- float *in_float = (float*)in_buf, -- *inout_float = (float*)inout_buf, -+ float *in_float = (float*)((char*)in_buf + op1_alignment * sizeof(float)), -+ *inout_float = (float*)((char*)inout_buf + res_alignment * sizeof(float)), - *inout_float_for_check = (float*)inout_check_buf; - for( i = 0; i < count; i++ ) { - in_float[i] = 1000.0+1; -@@ -658,8 +705,8 @@ int main(int argc, char **argv) - } - - if( 'd' == type[type_idx] ) { -- double *in_double = (double*)in_buf, -- *inout_double = (double*)inout_buf, -+ double *in_double = (double*)((char*)in_buf + op1_alignment * sizeof(double)), -+ *inout_double = (double*)((char*)inout_buf + res_alignment * sizeof(double)), - *inout_double_for_check = (double*)inout_check_buf; - for( i = 0; i < count; i++ ) { - in_double[i] = 10.0+1; -@@ -691,7 +738,7 @@ int main(int argc, char **argv) - check_and_continue: - if( !skip_op_type ) - print_status(array_of_ops[do_ops[op_idx]].mpi_op_name, -- mpi_type, type_size, count, tend-tstart, correctness); -+ mpi_type, type_size, count, max_shift, duration, repeats, correctness); - } - if( !skip_op_type ) - printf("\n"); diff --git a/8348.patch b/8348.patch deleted file mode 100644 index 89d5fd7..0000000 --- a/8348.patch +++ /dev/null @@ -1,25 +0,0 @@ -From 838568da9fce85b4555b0e0cbd899c8e8ef75696 Mon Sep 17 00:00:00 2001 -From: George Bosilca -Date: Wed, 6 Jan 2021 13:30:40 -0500 -Subject: [PATCH] A started generalized request should be marked as pending. - -Fixes #8340 - -Signed-off-by: George Bosilca -(cherry picked from commit 434a2515f8aab11f505b2fca0b3d8cc41e24cef2) ---- - ompi/request/grequest.c | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/ompi/request/grequest.c b/ompi/request/grequest.c -index c895b4232b6..02affd642aa 100644 ---- a/ompi/request/grequest.c -+++ b/ompi/request/grequest.c -@@ -163,6 +163,7 @@ int ompi_grequest_start( - greq->greq_free.c_free = gfree_fn; - greq->greq_cancel.c_cancel = gcancel_fn; - greq->greq_base.req_status = ompi_status_empty; -+ greq->greq_base.req_complete = REQUEST_PENDING; - - *request = &greq->greq_base; - return OMPI_SUCCESS; diff --git a/changelog b/changelog new file mode 100644 index 0000000..e55d506 --- /dev/null +++ b/changelog @@ -0,0 +1,881 @@ +* Fri Jan 17 2025 Fedora Release Engineering - 5.0.6-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild + +* Sat Nov 16 2024 Orion Poplawski - 5.0.6-1 +- Update to 5.0.6 + +* Mon Oct 07 2024 Orion Poplawski - 5.0.5-4 +- Add upstream patch to fix hdf5 tests + +* Mon Sep 02 2024 Miroslav Suchý - 5.0.5-3 +- convert license to SPDX + +* Wed Jul 31 2024 Sandro Mani - 5.0.5-2 +- Rebuild with rpm-mpi-hooks-8-10 to fix provides (#2302033) + +* Wed Jul 31 2024 Orion Poplawski - 5.0.5-1 +- Update to 5.0.5 + +* Thu Jul 18 2024 Fedora Release Engineering - 5.0.3-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild + +* Sat Jun 08 2024 Python Maint - 5.0.3-2 +- Rebuilt for Python 3.13 + +* Wed Apr 24 2024 Orion Poplawski - 5.0.3-1 +- Update to 5.0.3 + +* Mon Mar 04 2024 David Abdurachmanov - 5.0.2-2 +- Add support for riscv64 + +* Wed Feb 07 2024 Orion Poplawski - 5.0.2-1 +- Update to 5.0.2 + +* Wed Jan 24 2024 Orion Poplawski - 5.0.1-3 +- Drop unused BR on infinipath-psm + +* Sun Jan 21 2024 Fedora Release Engineering - 5.0.1-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + +* Thu Dec 21 2023 Orion Poplawski - 5.0.1-1 +- Update to 5.0.1 + +* Tue Oct 31 2023 Yaakov Selkowitz - 5.0.0-2 +- Disable building docs in RHEL builds + +* Fri Oct 27 2023 Orion Poplawski - 5.0.0-1 +- Update to 5.0.0 +- Drops 32-bit i686 support +- Drops C++ bindings +- Add doc sub-package + +* Thu Oct 12 2023 Cristian Le - 4.1.5-8 +- Added CMAKE_PREFIX_PATH to module file + +* Sat Sep 30 2023 Benson Muite - 4.1.5-7 +- Add include and cmake directories for development files for OpenMPI packages + +* Fri Sep 22 2023 Orion Poplawski - 4.1.5-6 +- Rebuild for pmix 4.1.3 (bz#2240042) + +* Thu Jul 20 2023 Fedora Release Engineering - 4.1.5-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild + +* Mon Jul 10 2023 Yaakov Selkowitz - 4.1.5-4 +- Disable PSM2 in RHEL 10 builds + +* Thu Jun 22 2023 Yaakov Selkowitz - 4.1.5-3 +- Disable PSM, OrangeFS in RHEL builds + +* Tue Jun 13 2023 Python Maint - 4.1.5-2 +- Rebuilt for Python 3.12 + +* Sun Feb 26 2023 Orion Poplawski - 4.1.5-1 +- Update to 4.1.5 + +* Thu Jan 19 2023 Fedora Release Engineering - 4.1.4-8 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild + +* Fri Nov 11 2022 Orion Poplawski - 4.1.4-7 +- Re-enable IPv6 support - was not the issue + +* Fri Nov 11 2022 Orion Poplawski - 4.1.4-6 +- Disable IPv6 support - appears to break MPI_Init() on koji builders (bz#2141137) + +* Fri Aug 19 2022 Davide Cavalca - 4.1.4-5 +- Enable IPv6 support (bz#2119845) + +* Fri Jul 22 2022 Fedora Release Engineering - 4.1.4-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild + +* Sun Jul 10 2022 Orion Poplawski - 4.1.4-3 +- Drop java for i686 (bz#2104085) + +* Mon Jun 13 2022 Python Maint - 4.1.4-2 +- Rebuilt for Python 3.11 + +* Sun May 29 2022 Orion Poplawski - 4.1.4-1 +- Update to 4.1.4 + +* Sat Apr 16 2022 Orion Poplawski - 4.1.3-1 +- Update to 4.1.3 + +* Sat Feb 05 2022 Jiri Vanek - 4.1.2-3 +- Rebuilt for java-17-openjdk as system jdk + +* Thu Jan 20 2022 Fedora Release Engineering - 4.1.2-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild + +* Mon Nov 29 2021 Orion Poplawski - 4.1.2-1 +- Update to 4.1.2 + +* Sun Oct 10 2021 Orion Poplawski - 4.1.2-0.1.rc1 +- Update to 4.1.2rc1 + +* Fri Sep 03 2021 Sandro Mani - 4.1.1-4 +- Also own %%{_libdir}/%%{name}/lib/cmake/ + +* Thu Jul 22 2021 Fedora Release Engineering - 4.1.1-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild + +* Fri Jun 04 2021 Python Maint - 4.1.1-2 +- Rebuilt for Python 3.10 + +* Tue Apr 27 2021 Orion Poplawski - 4.1.1-1 +- Update to 4.1.1 + +* Mon Apr 05 2021 Orion Poplawski - 4.1.1-0.2.rc2 +- Update to 4.1.1rc2 + +* Thu Feb 11 2021 Orion Poplawski - 4.1.1-0.1.rc1 +- Update to 4.1.1rc1 + +* Thu Jan 28 2021 Orion Poplawski - 4.1.0-5 +- Add upstream patch for generalized requests + +* Thu Jan 28 2021 Orion Poplawski - 4.1.0-4 +- Add upstream patch to fix AVX library linkage + +* Tue Jan 26 2021 Fedora Release Engineering - 4.1.0-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild + +* Sun Jan 24 2021 Orion Poplawski - 4.1.0-2 +- Use set_build_flags macro +- Drop old opt_ macros + +* Sun Jan 24 2021 Orion Poplawski - 4.1.0-1 +- Update to 4.1.0 + +* Wed Sep 23 2020 Orion Poplawski - 4.0.5-2 +- Rebuild for libevent 2.1.12 + +* Wed Sep 02 2020 Orion Poplawski - 4.0.5-1 +- Update to 4.0.5 + +* Tue Jul 28 2020 Fedora Release Engineering - 4.0.4-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + +* Sat Jul 11 2020 Jiri Vanek - 4.0.4-2 +- Rebuilt for JDK-11, see https://fedoraproject.org/wiki/Changes/Java11 + +* Wed Jun 17 2020 Orion Poplawski - 4.0.4-1 +- Update to 4.0.4 + +* Mon May 25 2020 Miro Hrončok - 4.0.4-0.3.rc1 +- Rebuilt for Python 3.9 + +* Sun May 24 2020 Orion Poplawski - 4.0.4-0.2.rc1 +- Set OMPI_MCA_rmaps_base_oversubscribe=1 in %%_openmpi_load (bz#1839571) + +* Sun May 10 2020 Orion Poplawski - 4.0.4-0.1.rc1 +- Update to 4.0.4 rc1 + +* Thu Mar 05 2020 Orion Poplawski - 4.0.3x-1 +- Update to 4.0.3 (use x to avoid epoch) + +* Sun Mar 01 2020 Orion Poplawski - 4.0.3rc4-1 +- Update to 4.0.3rc4 + +* Sat Feb 1 2020 Orion Poplawski - 4.0.3rc3-1 +- Update to 4.0.3rc3 + +* Wed Jan 29 2020 Fedora Release Engineering - 4.0.2-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild + +* Tue Dec 10 2019 Dominik Mierzejewski - 4.0.2-4 +- disable rdma on ARM 32-bit (bz#1780584) + +* Sun Nov 24 2019 Orion Poplawski - 4.0.2-3 +- Add upstream fix for error in calculating aggregators in 32bit mode + +* Fri Nov 15 2019 Orion Poplawski - 4.0.2-2 +- Drop python2 for Fedora 32+ (bz#1773125) + +* Mon Oct 7 2019 Philip Kovacs - 4.0.2-1 +- Update to 4.0.2 + +* Sat Sep 14 2019 Orion Poplawski - 4.0.2-0.4.rc2 +- Update to 4.0.2rc2 +- Re-enable C++ bindings on power64 + +* Fri Sep 6 2019 Philip Kovacs - 4.0.2-0.3.rc1 +- Rebuild for annobin update to correct aarch64 build (bug #1748529) + +* Fri Aug 30 2019 Philip Kovacs - 4.0.2-0.2.rc1 +- Apply upstream PR 6946 to avoid linking to __mmap +- Add build deps to run upstream autogen.pl +- Remove embedded tabs in the spec + +* Thu Aug 29 2019 Philip Kovacs - 4.0.2-0.1.rc1 +- Update to 4.0.2rc1 +- Closes bug #1746564 + +* Thu Aug 29 2019 Zbigniew Jędrzejewski-Szmek - 4.0.1-11 +- Fix MANPATH so normal modules can still be loaded (#1564899) + +* Sun Aug 25 2019 Zbigniew Jędrzejewski-Szmek - 4.0.1-10 +- Rebuilt for hwloc-2.0 + +* Sun Aug 18 2019 Miro Hrončok - 4.0.1-9 +- Rebuilt for Python 3.8 + +* Fri Aug 9 2019 Philip Kovacs - 4.0.1-8 +- Remove torque support (torque retired: bug #1676147) + +* Thu Jul 25 2019 Fedora Release Engineering - 4.0.1-7 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild + +* Fri Jun 21 2019 Orion Poplawski - 4.0.1-6 +- Rebuild for libfabric 1.8 +- Re-enable UCX, hopefully issue fixed in 1.5.2 + +* Mon May 27 2019 Orion Poplawski - 4.0.1-5 +- Drop UCX support for now + +* Wed May 15 2019 Orion Poplawski - 4.0.1-4 +- Add upstream patch OSC/UCX: use correct rkey for atomic_fadd in rget/rput + +* Wed May 15 2019 Orion Poplawski - 4.0.1-3 +- Add upstream patch to fix issue with UCX usage in BTL/UCT + +* Tue May 7 2019 Orion Poplawski - 4.0.1-2 +- Add a guard for python3 version (#1705296) +- Add requires on python(abi) to python packages + +* Sun Apr 28 2019 Orion Poplawski - 4.0.1-1 +- Update to 4.0.1 + +* Sun Apr 28 2019 Orion Poplawski - 3.1.4-1 +- Update to 3.1.4 + +* Mon Apr 22 2019 Björn Esser - 3.1.3-5 +- rebuilt(opensm) + +* Wed Apr 17 2019 Christoph Junghans - 3.1.3-4 +- Rebuild to fix ibosmcomp linkage + +* Sat Mar 2 2019 Orion Poplawski - 3.1.3-3 +- Enable valgrind on s390x +- Cleanup arch conditionals + +* Tue Feb 19 2019 Orion Poplawski - 3.1.3-2 +- Enable PVFS2/OrangeFS MPI-IO support (bug #1655010) + +* Wed Feb 13 2019 Orion Poplawski - 3.1.3-1 +- Update to 3.1.3 +- Drop ppc64le patch fixed upstream +- Use external libevent and pmix, except on EL7 +- Fix EPEL7 builds + +* Sat Feb 2 2019 Orion Poplawski - 2.1.6-1 +- Update to 2.1.6 + +* Fri Feb 01 2019 Fedora Release Engineering - 2.1.6-0.2.rc1 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild + +* Wed Nov 28 2018 Orion Poplawski - 2.1.6-0.1.rc1 +- Update to 2.1.6rc1 + +* Thu Oct 11 2018 Orion Poplawski - 2.1.5-1 +- Update to 2.1.5 + +* Sun Jul 22 2018 Orion Poplawski - 2.1.1-14 +- Add BR gcc-c++ (fix FTBFS bug #1605323) + +* Fri Jul 13 2018 Fedora Release Engineering - 2.1.1-13 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild + +* Tue Jun 19 2018 Miro Hrončok - 2.1.1-12 +- Rebuilt for Python 3.7 + +* Thu May 10 2018 Troy Dawson - 2.1.1-11 +- Build with rdma-core-devel instead of libibcm-devel + +* Mon Apr 30 2018 Florian Weimer - 2.1.1-10 +- Rebuild with new flags from redhat-rpm-config + +* Fri Feb 09 2018 Igor Gnatenko - 2.1.1-9 +- Escape macros in %%changelog + +* Mon Feb 05 2018 Orion Poplawski - 2.1.1-8 +- Rebuild for rdma-core 16.2 + +* Wed Jan 31 2018 Christoph Junghans - 2.1.1-7 +- Rebuild for gfortran-8 + +* Fri Jan 12 2018 Iryna Shcherbina - 2.1.1-6 +- Update Python 2 dependency declarations to new packaging standards + (See https://fedoraproject.org/wiki/FinalizingFedoraSwitchtoPython3) + +* Wed Aug 23 2017 Adam Williamson - 2.1.1-5 +- Disable RDMA support on 32-bit ARM (#1484155) +- Disable hanging opal_fifo test on ppc64le (gh #2526 / #2966) + +* Thu Aug 03 2017 Fedora Release Engineering - 2.1.1-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild + +* Thu Jul 27 2017 Fedora Release Engineering - 2.1.1-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild + +* Wed Jul 19 2017 Orion Poplawski - 2.1.1-2 +- Provide pkgconfig files in the main namespace as well (1471512) + +* Fri May 12 2017 Orion Poplawski - 2.1.1-1 +- Update to 2.1.1 + +* Thu May 4 2017 Orion Poplawski - 2.1.0-1 +- Update to 2.1.0 + +* Sat Feb 11 2017 Fedora Release Engineering - 2.0.2-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild + +* Thu Feb 2 2017 Orion Poplawski - 2.0.2-1 +- Update to 2.0.2 + +* Sat Jan 28 2017 Björn Esser - 2.0.1-7 +- Rebuilt for GCC-7 + +* Mon Dec 19 2016 Miro Hrončok - 2.0.1-6 +- Rebuild for Python 3.6 + +* Wed Nov 2 2016 Orion Poplawski - 2.0.1-5 +- Split python support into sub-packages (bug #1391157) + +* Thu Oct 27 2016 Dan Horák - 2.0.1-4 +- Temporarily disable C++ bindings on ppc64/ppc64le (#1388561) + +* Mon Oct 24 2016 Orion Poplawski - 2.0.1-3 +- Fix License tag format +- Use /usr/share/modulefiles for modulefile install location + +* Mon Oct 24 2016 Orion Poplawski - 2.0.1-2 +- Add upstream patch for thread wait issue with mpi4py + +* Fri Oct 21 2016 Orion Poplawski - 2.0.1-1 +- Update to 2.0.1 + +* Thu Oct 20 2016 Orion Poplawski - 1.10.4-4 +- Support s390(x) (bug #1358701) + +* Thu Oct 20 2016 Orion Poplawski - 1.10.4-3 +- Enable psm/psm2 support on x86_64 (bug #1263655) + +* Wed Oct 19 2016 Orion Poplawski - 1.10.4-2 +- Enable MPI_THREAD_MULTIPLE support (bug #1369989) + +* Wed Oct 19 2016 Orion Poplawski - 1.10.4-1 +- Update to 1.10.4 + +* Thu Sep 15 2016 Orion Poplawski - 1.10.3-3 +- Rebuild for papi 5.5.0 + +* Fri Jun 24 2016 Orion Poplawski - 1.10.3-2 +- Use bundled libevent, system version causes issues (bug #1235044) + +* Wed Jun 15 2016 Orion Poplawski - 1.10.3-1 +- Update to 1.10.3 +- New javadoc location + +* Thu Feb 04 2016 Fedora Release Engineering - 1.10.2-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild + +* Tue Jan 26 2016 Orion Poplawski - 1.10.2-2 +- Rebuild for papi 5.4.3 + +* Thu Jan 21 2016 Orion Poplawski - 1.10.2-1 +- Update to 1.10.2 +- Drop upsream nbc_copy patch + +* Tue Nov 10 2015 Orion Poplawski - 1.10.1-3 +- Add upstream patch to fix zero size message + +* Tue Nov 10 2015 Fedora Release Engineering - 1.10.1-2 +- Rebuilt for https://fedoraproject.org/wiki/Changes/python3.5 + +* Thu Nov 5 2015 Orion Poplawski - 1.10.1-1 +- Update to 1.10.1 +- Require environment(modules) +- Fixup fortran module install (bug #1154982) + +* Tue Oct 6 2015 Orion Poplawski - 1.10.0-3 +- Do not set CFLAGS in %%_openmpi_load + +* Wed Sep 16 2015 Orion Poplawski - 1.10.0-2 +- Add patch to add needed opal/util/argv.h includes + +* Tue Sep 15 2015 Orion Poplawski - 1.10.0-1 +- Update to 1.10.0 + +* Thu Aug 27 2015 Zbigniew Jędrzejewski-Szmek - 1.8.8-5 +- Use .pth files to set the python path (https://fedorahosted.org/fpc/ticket/563) + +* Mon Aug 24 2015 Orion Poplawski 1.8.8-4 +- Disable valgrind only on s390 + +* Mon Aug 17 2015 Orion Poplawski 1.8.8-3 +- Do not filter libvt* provides as some dependencies link to it + +* Mon Aug 10 2015 Sandro Mani - 1.8.8-2 +- Require, BuildRequire: rpm-mpi-hooks + +* Mon Aug 10 2015 Orion Poplawski 1.8.8-1 +- Update to 1.8.8 +- Drop atomic patch applied upstream + +* Wed Jul 15 2015 Orion Poplawski 1.8.7-1 +- Update to 1.8.7 + +* Tue Jun 23 2015 Orion Poplawski 1.8.6-1 +- Update to 1.8.6 + +* Thu Jun 18 2015 Fedora Release Engineering - 1.8.5-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild + +* Tue May 5 2015 Orion Poplawski 1.8.5-1 +- Update to 1.8.5 + +* Fri May 1 2015 Orion Poplawski 1.8.5-0.2.rc3 +- Update to 1.8.5rc3 + +* Sun Apr 5 2015 Orion Poplawski 1.8.5-0.1.rc1 +- Update to 1.8.5rc1 + +* Mon Mar 30 2015 Orion Poplawski 1.8.4-7.20150324gitg9ad2aa8 +- Add upstream patch to fix race/hang on 32bit machines + +* Fri Mar 27 2015 Orion Poplawski 1.8.4-6.20150324gitg9ad2aa8 +- Update to latest 1.8.4 snapshot +- Add upstream patch to fix atomics on 32bit + +* Mon Mar 23 2015 Zbigniew Jędrzejewski-Szmek - 1.8.4-5.20150228gitgd83fb30 +- Rebuild for fortran update (#1204420) + +* Mon Mar 16 2015 Orion Poplawski 1.8.4-4.99.20150228gitgd83fb30 +- Own and ship pkgconfig files, set PKG_CONFIG_PATH in modulefile (bug #1113626) +- Drop old configure settings + +* Wed Mar 4 2015 Orion Poplawski 1.8.4-3.99.20150228gitgd83fb30 +- Update to 1.8.4.99 snapshot + +* Fri Feb 13 2015 Orion Poplawski 1.8.4-2 +- Fix MPI_FORTRAN_MOD_DIR (bug #1154982) + +* Tue Dec 23 2014 Orion Poplawski 1.8.4-1 +- Update to 1.8.4 + +* Mon Nov 17 2014 Orion Poplawski 1.8.3-3 +- Rebuild for papi soname change + +* Fri Oct 3 2014 Orion Poplawski 1.8.3-2 +- Fix typo in oshmem library name + +* Sat Sep 27 2014 Orion Poplawski 1.8.3-1 +- Update to 1.8.3 + +* Tue Sep 16 2014 Peter Robinson 1.8.2-2 +- ppc64le now has valgrind + +* Tue Aug 26 2014 Orion Poplawski 1.8.2-1 +- Update to 1.8.2 + +* Sun Aug 17 2014 Fedora Release Engineering - 1.8.1-7 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild + +* Wed Aug 6 2014 Peter Robinson 1.8.1-6 +- Rebuild (papi) + +* Mon Aug 4 2014 Dan Horák 1.8.1-5 +- no valgrind on ppc64le yet + +* Sat Aug 2 2014 Peter Robinson 1.8.1-4 +- aarch64 now has valgrind + +* Thu Jul 17 2014 Orion Poplawski 1.8.1-3 +- Add patch to prevent shmem wrappers from adding extra libs + +* Sat Jun 07 2014 Fedora Release Engineering - 1.8.1-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild + +* Wed Apr 23 2014 Orion Poplawski 1.8.1-1 +- Update to 1.8.1, fixes bug #1089044 + +* Tue Apr 1 2014 Orion Poplawski 1.8-1 +- Update to 1.8 + +* Tue Mar 25 2014 Orion Poplawski 1.7.5-2 +- Update provides filter + +* Mon Mar 24 2014 Orion Poplawski 1.7.5-1 +- Update to 1.7.5 + +* Fri Feb 21 2014 Orion Poplawski - 1.7.4-3 +- Require java-headless + +* Sat Feb 8 2014 Ville Skyttä - 1.7.4-2 +- Install macros to %%{_rpmconfdir}/macros.d where available. + +* Wed Feb 5 2014 Orion Poplawski 1.7.4-1 +- Update to 1.7.4 +- Drop format patch fixed upstream +- Build against system libevent +- Build Java mpi bindings, ship in -java sub-package +- Add requires openssh-clients + +* Tue Jan 28 2014 Peter Robinson 1.7.3-5 +- Drop mode/modeflag. mode no longer used, modeflag obsolete as set in CFLAGS +- Use distro LDFLAGS for hardened build +- Drop armv5tel options +- General spec cleanups + +* Thu Jan 16 2014 Orion Poplawski 1.7.3-4 +- Rebuild with papi 5.3.0 + +* Wed Dec 4 2013 Peter Robinson 1.7.3-3 +- valgrind not currently supported on aarch64 + +* Tue Dec 3 2013 Orion Poplawski 1.7.3-2 +- Fix compilation with -Werror=format-security (bug #1037231) + +* Sun Oct 20 2013 Orion Poplawski 1.7.3-1 +- Update to 1.7.3 +- Upstream no longer ships license incompatible files + +* Fri Aug 16 2013 Orion Poplawski 1.7.2-7 +- Move orte* compiler wrappers to devel sub-package (bug #997330) + +* Thu Aug 08 2013 Dennis Gilmore - 1.7.2-6 +- rebuild for papi soname bump bz#995092 + +* Sat Aug 03 2013 Petr Pisar - 1.7.2-5 +- Perl 5.18 rebuild + +* Fri Jul 26 2013 Orion Poplawski 1.7.2-4 +- Fix build issue with _cc_name_suffix (bug #986664) + +* Mon Jul 22 2013 Deji Akingunola - 1.7.2-3 +- Rebuild for papi's shared lib fix + +* Wed Jul 17 2013 Petr Pisar - 1.7.2-2 +- Perl 5.18 rebuild + +* Thu Jun 27 2013 Orion Poplawski 1.7.2-1 +- Update to 1.7.2 + +* Wed Apr 17 2013 Orion Poplawski 1.7.1-1 +- Update to 1.7.1 +- Add BR on hwloc +- Add BR on papi-devel + +* Tue Apr 16 2013 Orion Poplawski 1.7-1 +- Update to 1.7 +- Rebase patch to handle removed components +- Drop esmtp - no longer used + +* Sat Feb 23 2013 Orion Poplawski 1.6.4-2 +- Exclude libopen-trace.* from requires + +* Fri Feb 22 2013 Orion Poplawski 1.6.4-1 +- Update to 1.6.4 +- Drop f90sover and arm-atomics patch fixed upstream + +* Mon Jan 28 2013 Orion Poplawski 1.6.3-7 +- Make __requires_exclude more specific so we don't exclude needed libs + (bug #905263) + +* Sun Nov 18 2012 Peter Robinson 1.6.3-6 +- Update atomics patch for ARM (thanks to Jon Masters) + +* Sun Nov 11 2012 Peter Robinson 1.6.3-5 +- Atomics patch to fix building on ARM (thanks to Jon Masters) + +* Mon Nov 5 2012 Orion Poplawski 1.6.3-4 +- Add patch to fix libmpi_f90.so version +- Add patch to link tests with system libltdl +- Run make check + +* Fri Nov 2 2012 Orion Poplawski 1.6.3-3 +- Set enable-opal-multi-threads for IB support + +* Thu Nov 1 2012 Orion Poplawski 1.6.3-2 +- Update rpm macros to use the new module location + +* Wed Oct 31 2012 Orion Poplawski 1.6.3-1 +- Update to 1.6.3 + +* Sat Oct 13 2012 Orion Poplawski 1.6.2-1 +- Update to 1.6.2 +- Add BR torque-devel to enable torque support +- Drop old module file location (bug #838467) + +* Thu Sep 13 2012 Orion Poplawski 1.6.1-2 +- Drop adding -fPIC, no longer needed +- Set --disable-silent-rules for more verbose build logs +- Don't add opt_*flags to the wrappers +- Only use $RPM_OPT_FLAGS if not using the opt_*flags + +* Thu Aug 23 2012 Orion Poplawski 1.6.1-1 +- Update to 1.6.1 +- Drop hostfile patch applied upstream + +* Fri Jul 20 2012 Fedora Release Engineering - 1.6-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild + +* Tue May 15 2012 Orion Poplawski 1.6-2 +- Add patch from upstream to fix default hostfile location + +* Tue May 15 2012 Orion Poplawski 1.6-1 +- Update to 1.6 +- Drop arm patch, appears to be addressed upstream +- Remove extraneous wrapper link libraries (bug 814798) + +* Tue Apr 3 2012 Peter Robinson - 1.5.5-1 +- Update to 1.5.5 + +* Tue Feb 28 2012 Fedora Release Engineering - 1.5.4-5.1 +- Rebuilt for c++ ABI breakage + +* Wed Feb 22 2012 Orion Poplawski 1.5.4-4.1 +- Rebuild with hwloc 1.4 + +* Wed Feb 15 2012 Peter Robinson - 1.5.4-4 +- Rebuild for hwloc soname bump + +* Fri Jan 20 2012 Doug Ledford - 1.5.4-3 +- Move modules file to mpi directory and make it conflict with any other + mpi module (bug #651074) + +* Sun Jan 8 2012 Orion Poplawski 1.5.4-2 +- Rebuild with gcc 4.7 (bug #772443) + +* Thu Nov 17 2011 Orion Poplawski 1.5.4-1 +- Update to 1.5.4 +- Drop dt-textrel patch fixed upstream +- Fixup handling removed files (bug #722534) +- Uses hwloc instead of plpa +- Exclude private libraries from provides/requires (bug #741104) +- Drop --enable-mpi-threads & --enable-openib-ibcm, no longer recognized + +* Sat Jun 18 2011 Peter Robinson 1.5-4 +- Exclude ARM platforms due to current lack of "atomic primitives" on the platform + +* Thu Mar 17 2011 Jay Fenlason 1.5-3 +- Add dt-textrel patch to close + Resolves: bz679489 +- Add memchecker and esmtp support + Resolves: bz647011 + +* Tue Feb 08 2011 Fedora Release Engineering - 1.5-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild + +* Mon Oct 18 2010 Jay Fenlason 1.5-1 +- set MANPATH in openmpi module file +- Upgrade to 1.5 +- Workaround for rhbz#617766 appears to no longer be needed for 1.5 +- remove pkgconfig files in instal +- Remove orteCC.1 dangling symlink +- Adjust the files entries for share/openmpi/help* and share/openmpi/mca* +- Adjust the files entries for share/openmpi/mpi* +- Add files entry for share/openmpi/orte*.txt + +* Sun Sep 05 2010 Dennis Gilmore - 1.4.1-7 +- disable valgrind support on sparc arches + +* Sat Jul 24 2010 David Malcolm - 1.4.1-6 +- workaround for rhbz#617766 + +* Wed Jul 21 2010 David Malcolm - 1.4.1-5 +- Rebuilt for https://fedoraproject.org/wiki/Features/Python_2.7/MassRebuild + +* Mon Mar 29 2010 Jay Fenlason - 1.4.1-4 +- Update to fix licencing and packaging issues: + Use the system plpa and ltdl librarires rather than the ones in the tarball + Remove licence incompatible files from the tarball. +- update module.in to prepend-path PYTHONPATH + +* Tue Mar 9 2010 Jay Fenlason - 1.4.1-3 +- remove the pkgconfig file completely like we did in RHEL. + +* Tue Jan 26 2010 Jay Fenlason - 1.4.1-2 +- BuildRequires: python + +* Tue Jan 26 2010 Jay Fenlason - 1.4.1-1 +- New upstream version, which includes the changeset_r22324 patch. +- Correct a typo in the Source0 line in this spec file. + +* Fri Jan 15 2010 Doug Ledford - 1.4-4 +- Fix an issue with usage of _cc_name_suffix that cause a broken define in + our module file + +* Fri Jan 15 2010 Doug Ledford - 1.4-3 +- Fix pkgconfig file substitution +- Bump version so we are later than the equivalent version from Red Hat + Enterprise Linux + +* Wed Jan 13 2010 Doug Ledford - 1.4-1 +- Update to latest upstream stable version +- Add support for libibcm usage +- Enable sge support via configure options since it's no longer on by default +- Add patch to resolve allreduce issue (bz538199) +- Remove no longer needed patch for Chelsio cards + +* Tue Sep 22 2009 Jay Fenlason - 1.3.3-6 +- Create and own man* directories for use by dependent packages. + +* Wed Sep 16 2009 Jay Fenlason - 1.3.3-5 +- Move the module file from %%{_datadir}/Modules/modulefiles/%%{namearch} to + %%{_sysconfdir}/modulefiles/%%{namearch} where it belongs. +- Have the -devel subpackage own the man1 and man7 directories for completeness. +- Add a blank line before the clean section. +- Remove --enable-mpirun-prefix-by-default from configure. + +* Wed Sep 9 2009 Jay Fenlason - 1.3.3-4 +- Modify packaging to conform to + https://fedoraproject.org/wiki/PackagingDrafts/MPI (bz521334). +- remove --with-ft=cr from configure, as it was apparently causing problems + for some people. +- Add librdmacm-devel and librdmacm to BuildRequires (related bz515565). +- Add openmpi-bz515567.patch to add support for the latest Chelsio device IDs + (related bz515567). +- Add exclude-arch (s390 s390x) because we don't have required -devel packages + there. + +* Sat Jul 25 2009 Fedora Release Engineering - 1.3.3-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild + +* Tue Jul 21 2009 Doug Ledford - 1.3.3-2 +- Add MPI_BIN and MPI_LIB to the modules file (related bz511099) + +* Tue Jul 21 2009 Doug Ledford - 1.3.3-1 +- Make sure all created dirs are owned (bz474677) +- Fix loading of pkgconfig file (bz476844) +- Resolve file conflict between us and libotf (bz496131) +- Resolve dangling symlinks issue (bz496909) +- Resolve unexpanded %%{mode} issues (bz496911) +- Restore -devel subpackage (bz499851) +- Make getting the default openmpi devel environment easier (bz504357) +- Make the -devel package pull in the base package (bz459458) +- Make it easier to use alternative compilers to build package (bz246484) + +* Sat Jul 18 2009 Jussi Lehtola - 1.3.1-4 +- Add Provides: openmpi-devel to fix other package builds in rawhide. + +* Fri May 08 2009 Lubomir Rintel - 1.3.1-3 +- Treat i586 the same way as i386 + +* Wed Apr 22 2009 Doug Ledford - 1.3.1-2 +- fixed broken update +- Resolves: bz496909, bz496131, bz496911 + +* Tue Apr 14 2009 Tom "spot" Callaway - 1.3.1-1 +- update to 1.3.1, cleanup alternatives, spec, make new vt subpackage + +* Thu Feb 26 2009 Fedora Release Engineering - 1.2.4-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild + +* Mon Feb 18 2008 Fedora Release Engineering - 1.2.4-2 +- Autorebuild for GCC 4.3 + +* Wed Oct 17 2007 Doug Ledford - 1.2.4-1 +- Update to 1.2.4 upstream version +- Build against libtorque +- Pass a valid mode to open +- Resolves: bz189441, bz265141 + +* Tue Aug 28 2007 Fedora Release Engineering - 1.2.3-5 +- Rebuild for selinux ppc32 issue. + +* Mon Jul 16 2007 Doug Ledford - 1.2.3-4 +- Fix a directory permission problem on the base openmpi directories + +* Thu Jul 12 2007 Florian La Roche - 1.2.3-3 +- requires alternatives for various sub-rpms + +* Mon Jul 02 2007 Doug Ledford - 1.2.3-2 +- Fix dangling symlink issue caused by a bad macro usage +- Resolves: bz246450 + +* Wed Jun 27 2007 Doug Ledford - 1.2.3-1 +- Update to latest upstream version +- Fix file ownership on -libs package +- Take a swing at solving the multi-install compatibility issues + +* Mon Feb 19 2007 Doug Ledford - 1.1.1-7 +- Bump version to be at least as high as the RHEL4U5 openmpi +- Integrate fixes made in RHEL4 openmpi into RHEL5 (fix a multilib conflict + for the openmpi.module file by moving from _datadir to _libdir, make sure + all sed replacements have the g flag so they replace all instances of + the marker per line, not just the first, and add a %%defattr tag to the + files section of the -libs package to avoid install errors about + brewbuilder not being a user or group) +- Resolves: bz229298 + +* Wed Jan 17 2007 Doug Ledford - 1.1.1-5 +- Remove the FORTIFY_SOURCE and stack protect options +- Related: bz213075 + +* Fri Oct 20 2006 Doug Ledford - 1.1.1-4 +- Bump and build against the final openib-1.1 package + +* Wed Oct 18 2006 Doug Ledford - 1.1.1-3 +- Fix an snprintf length bug in opal/util/cmd_line.c +- RESOLVES: rhbz#210714 + +* Wed Oct 18 2006 Doug Ledford - 1.1.1-2 +- Bump and build against openib-1.1-0.pre1.1 instead of 1.0 + +* Tue Oct 17 2006 Doug Ledford - 1.1.1-1 +- Update to upstream 1.1.1 version + +* Fri Oct 13 2006 Doug Ledford - 1.1-7 +- ia64 can't take -m64 on the gcc command line, so don't set it there + +* Wed Oct 11 2006 Doug Ledford - 1.1-6 +- Bump rev to match fc6 rev +- Fixup some issue with alternatives support +- Split the 32bit and 64bit libs ld.so.conf.d files into two files so + multilib or single lib installs both work properly +- Put libs into their own package +- Add symlinks to /usr/share/openmpi/bin%%{mode} so that opal_wrapper-%%{mode} + can be called even if it isn't the currently selected default method in + the alternatives setup (opal_wrapper needs to be called by mpicc, mpic++, + etc. in order to determine compile mode from argv[0]). + +* Sun Aug 27 2006 Doug Ledford - 1.1-4 +- Make sure the post/preun scripts only add/remove alternatives on initial + install and final removal, otherwise don't touch. + +* Fri Aug 25 2006 Doug Ledford - 1.1-3 +- Don't ghost the mpi.conf file as that means it will get removed when + you remove 1 out of a number of alternatives based packages +- Put the .mod file in -devel + +* Mon Aug 7 2006 Doug Ledford - 1.1-2 +- Various lint cleanups +- Switch to using the standard alternatives mechanism instead of a home + grown one + +* Wed Aug 2 2006 Doug Ledford - 1.1-1 +- Upgrade to 1.1 +- Build with Infiniband support via openib + +* Mon Jun 12 2006 Jason Vas Dias - 1.0.2-1 +- Upgrade to 1.0.2 + +* Wed Feb 15 2006 Jason Vas Dias - 1.0.1-1 +- Import into Fedora Core +- Resolve LAM clashes + +* Wed Jan 25 2006 Orion Poplawski - 1.0.1-2 +- Use configure options to install includes and libraries +- Add ld.so.conf.d file to find libraries +- Add -fPIC for x86_64 + +* Tue Jan 24 2006 Orion Poplawski - 1.0.1-1 +- 1.0.1 +- Use alternatives + +* Sat Nov 19 2005 Ed Hill - 1.0-2 +- fix lam conflicts + +* Fri Nov 18 2005 Ed Hill - 1.0-1 +- initial specfile created diff --git a/macros.openmpi b/macros.openmpi index 1ee6a3c..b4f7fa5 100644 --- a/macros.openmpi +++ b/macros.openmpi @@ -1,7 +1,7 @@ %_openmpi_load \ . /etc/profile.d/modules.sh; \ module load mpi/openmpi-%{_arch}; \ - export OMPI_MCA_rmaps_base_oversubscribe=1 + export PRTE_MCA_rmaps_default_mapping_policy=:oversubscribe %_openmpi_unload \ . /etc/profile.d/modules.sh; \ module unload mpi/openmpi-%{_arch}; diff --git a/openmpi-braces.patch b/openmpi-braces.patch new file mode 100644 index 0000000..61b3c59 --- /dev/null +++ b/openmpi-braces.patch @@ -0,0 +1,16 @@ +diff --git a/oshmem/mca/memheap/base/memheap_base_frame.c b/oshmem/mca/memheap/base/memheap_base_frame.c +index 53a71b27a9..82658e0979 100644 +--- a/oshmem/mca/memheap/base/memheap_base_frame.c ++++ b/oshmem/mca/memheap/base/memheap_base_frame.c +@@ -33,9 +33,9 @@ + + int mca_memheap_base_output = -1; + int mca_memheap_base_key_exchange = 1; +-opal_list_t mca_memheap_base_components_opened = {{0}}; ++opal_list_t mca_memheap_base_components_opened = {}; + int mca_memheap_base_already_opened = 0; +-mca_memheap_map_t mca_memheap_base_map = {{{{0}}}}; ++mca_memheap_map_t mca_memheap_base_map = {}; + int mca_memheap_num_segments_warn = 32; + + static int mca_memheap_base_register(mca_base_register_flag_t flags) diff --git a/openmpi-drop-recommonmark.patch b/openmpi-drop-recommonmark.patch new file mode 100644 index 0000000..9ee88a1 --- /dev/null +++ b/openmpi-drop-recommonmark.patch @@ -0,0 +1,31 @@ +diff -ru openmpi-5.0.10/config/oac/oac_setup_sphinx.m4 openmpi-5.0.10-new/config/oac/oac_setup_sphinx.m4 +--- openmpi-5.0.10/config/oac/oac_setup_sphinx.m4 2026-02-23 21:21:40.731399193 +0100 ++++ openmpi-5.0.10-new/config/oac/oac_setup_sphinx.m4 2026-07-27 17:10:12.450825327 +0200 +@@ -115,7 +115,7 @@ + author = 'Testing' + import sphinx_rtd_theme + # Note the extra quoting needed for square brackets because this is m4 +-extensions = [[ 'recommonmark', 'sphinx_rtd_theme', 'sphinx.ext.extlinks' ]] ++extensions = [[ 'sphinx_rtd_theme', 'sphinx.ext.extlinks' ]] + html_theme = 'sphinx_rtd_theme' + EOF + echo "Hello world" > index.rst +diff -ru openmpi-5.0.10/docs/conf.py openmpi-5.0.10-new/docs/conf.py +--- openmpi-5.0.10/docs/conf.py 2026-02-23 21:21:10.775279351 +0100 ++++ openmpi-5.0.10-new/docs/conf.py 2026-07-27 17:10:34.017830912 +0200 +@@ -174,7 +174,6 @@ + # ones. + import sphinx_rtd_theme + extensions = [ +- 'recommonmark', + "sphinx_rtd_theme", + "sphinx.ext.extlinks", + ] +diff -ru openmpi-5.0.10/docs/requirements.txt openmpi-5.0.10-new/docs/requirements.txt +--- openmpi-5.0.10/docs/requirements.txt 2026-02-23 21:21:10.811279501 +0100 ++++ openmpi-5.0.10-new/docs/requirements.txt 2026-07-27 17:10:43.482113314 +0200 +@@ -1,4 +1,3 @@ + sphinx>=4.2.0 +-recommonmark + docutils + sphinx-rtd-theme diff --git a/openmpi-inline.patch b/openmpi-inline.patch new file mode 100644 index 0000000..dd901e8 --- /dev/null +++ b/openmpi-inline.patch @@ -0,0 +1,13 @@ +diff --git a/ompi/mca/part/persist/part_persist.h b/ompi/mca/part/persist/part_persist.h +index ccc8f8f197..86fb9bac42 100644 +--- a/ompi/mca/part/persist/part_persist.h ++++ b/ompi/mca/part/persist/part_persist.h +@@ -490,7 +490,7 @@ mca_part_persist_psend_init(const void* buf, + return err; + } + +-__opal_attribute_always_inline__ static inline int ++static inline int + mca_part_persist_start(size_t count, ompi_request_t** requests) + { + int err = OMPI_SUCCESS; diff --git a/openmpi.module.in b/openmpi.module.in index 41583c4..71cdbc3 100644 --- a/openmpi.module.in +++ b/openmpi.module.in @@ -6,6 +6,7 @@ conflict mpi prepend-path PATH @LIBDIR@/bin prepend-path LD_LIBRARY_PATH @LIBDIR@/lib prepend-path PKG_CONFIG_PATH @LIBDIR@/lib/pkgconfig +prepend-path CMAKE_PREFIX_PATH @LIBDIR@ prepend-path MANPATH :@MANDIR@ setenv MPI_BIN @LIBDIR@/bin setenv MPI_SYSCONFIG @ETCDIR@ @@ -13,8 +14,6 @@ setenv MPI_FORTRAN_MOD_DIR @FMODDIR@ setenv MPI_INCLUDE @INCDIR@ setenv MPI_LIB @LIBDIR@/lib setenv MPI_MAN @MANDIR@ -setenv MPI_PYTHON_SITEARCH @PY2SITEARCH@ -setenv MPI_PYTHON2_SITEARCH @PY2SITEARCH@ setenv MPI_PYTHON3_SITEARCH @PY3SITEARCH@ setenv MPI_COMPILER @COMPILER@ setenv MPI_SUFFIX @SUFFIX@ diff --git a/openmpi.pth.py2 b/openmpi.pth.py2 deleted file mode 100644 index a2dc353..0000000 --- a/openmpi.pth.py2 +++ /dev/null @@ -1 +0,0 @@ -import sys, os; s = os.getenv('MPI_PYTHON2_SITEARCH'); s and (s in sys.path or sys.path.append(s)) diff --git a/.rpmlint b/openmpi.rpmlintrc similarity index 93% rename from .rpmlint rename to openmpi.rpmlintrc index 0aa5b0e..2342110 100644 --- a/.rpmlint +++ b/openmpi.rpmlintrc @@ -1,4 +1,3 @@ -from Config import * addFilter("shared-library-calls-exit .*/lib(mpi|open-rte|oshmem|_java)\.so"); # We use environment modules to load these paths addFilter("file-not-in-%lang /usr/share/man/openmpi-"); diff --git a/openmpi.spec b/openmpi.spec index 52b5fcc..c0ecb85 100644 --- a/openmpi.spec +++ b/openmpi.spec @@ -5,48 +5,74 @@ %global macrosdir %(d=%{_rpmconfigdir}/macros.d; [ -d $d ] || d=%{_sysconfdir}/rpm; echo $d) -%if 0%{?fedora} >= 32 || 0%{?rhel} >= 8 -%bcond_with python2 -%else -%bcond_without python2 -%endif - -%ifarch aarch64 ppc64le x86_64 +# ucx on ppc64le/power10 is broken https://github.com/openucx/ucx/issues/10780 +%ifarch aarch64 x86_64 %bcond_without ucx %else %bcond_with ucx %endif -# ARM 32-bit is not supported by rdma -# https://bugzilla.redhat.com/show_bug.cgi?id=1780584 -%ifarch %{arm} -%bcond_with rdma -%else %bcond_without rdma + +# No more Java on i686 +%ifarch %{java_arches} +%bcond_without java +%else +%bcond_with java %endif +%if %{defined rhel} +%bcond_with orangefs +%bcond_with sphinx +%else +%bcond_without orangefs +%bcond_without sphinx +%endif + +%ifarch x86_64 +%if 0%{?rhel} >= 10 +%bcond_with psm2 +%else +%bcond_without psm2 +%endif +%else +%bcond_with psm2 +%endif + +# Some RCs require unreleased pmix version - at least let us test builds +%bcond_without pmix + # Run autogen - needed for some patches -# For Patch0 -%bcond_without autogen +%bcond autogen 1 Name: openmpi%{?_cc_name_suffix} -Version: 4.1.0 -Release: 5%{?dist} +Version: 5.0.10 +Release: %autorelease Summary: Open Message Passing Interface -License: BSD and MIT and Romio +# Automatically converted from old format: BSD and MIT and Romio - review is highly recommended. +# main code is BSD-3-Clause-Open-MPI +# 3rd-party/romio341 is mpich2 +# 3rd-party/treematch is BSD-3-Clause +# oshmem/mca/memheap/ptmalloc/malloc.c is LicenseRef-Fedora-Public-Domain +# opal/util/qsort.c is BSD-4-Clause-UC +# java/ (in subpackage) is Apache-2.0 +# 3rd-party/openpmix/src/mca/psec/munge/psec_munge.c is LGPL-2.0-or-later +# doc/ see bellow in subpackage +License: BSD-3-Clause-Open-MPI AND mpich2 AND BSD-3-Clause AND LicenseRef-Fedora-Public-Domain AND BSD-4-Clause-UC URL: http://www.open-mpi.org/ +ExcludeArch: %{ix86} # We can't use %%{name} here because of _cc_name_suffix -Source0: https://www.open-mpi.org/software/ompi/v4.1/downloads/openmpi-%{version}.tar.bz2 +Source0: https://www.open-mpi.org/software/ompi/v5.0/downloads/openmpi-%{version}.tar.bz2 Source1: openmpi.module.in -Source2: openmpi.pth.py2 Source3: openmpi.pth.py3 Source4: macros.openmpi - -# Fix AVX library linkage -Patch0: https://patch-diff.githubusercontent.com/raw/open-mpi/ompi/pull/8322.patch -# Fix generalized requests (mpi4py test failure) -Patch1: https://patch-diff.githubusercontent.com/raw/open-mpi/ompi/pull/8348.patch +# Fix always inline failure - https://github.com/open-mpi/ompi/pull/13756 +Patch: openmpi-inline.patch +# Fix brace initialization - https://github.com/open-mpi/ompi/pull/13758 +Patch: openmpi-braces.patch +# Drop unused recommonmark - https://github.com/open-mpi/ompi/pull/14215 +Patch: openmpi-drop-recommonmark.patch BuildRequires: gcc-c++ BuildRequires: gcc-gfortran @@ -56,9 +82,10 @@ BuildRequires: libtool BuildRequires: perl(Data::Dumper) BuildRequires: perl(File::Find) %endif +%ifarch %{valgrind_arches} BuildRequires: valgrind-devel +%endif %if %{with rdma} -BuildRequires: opensm-devel > 3.3.0 BuildRequires: rdma-core-devel %endif # Doesn't compile: @@ -66,41 +93,46 @@ BuildRequires: rdma-core-devel # loop->getLoopHead()->getStartAddress(), loop_stmts ); #BuildRequires: dyninst-devel BuildRequires: hwloc-devel -# So configure can find lstopo -BuildRequires: hwloc-gui -BuildRequires: java-devel -# Old libevent causes issues -%if !0%{?el7} -BuildRequires: libevent-devel +%if %{with java} +BuildRequires: java-25-devel +%else +Obsoletes: %{name}-java < %{version}-%{release} +Obsoletes: %{name}-java-devel < %{version}-%{release} %endif +# Old libevent causes issues +BuildRequires: libevent-devel BuildRequires: libfabric-devel -%ifnarch s390 s390x +%ifnarch s390x BuildRequires: papi-devel %endif +%if %{with orangefs} BuildRequires: orangefs-devel +%endif BuildRequires: perl-generators BuildRequires: perl-interpreter BuildRequires: perl(Getopt::Long) -BuildRequires: pmix-devel +%if %{with pmix} +BuildRequires: pmix-devel >= 4.2.7 +%endif +BuildRequires: prrte-devel BuildRequires: python%{python3_pkgversion}-devel -%ifarch x86_64 -BuildRequires: infinipath-psm-devel +%if %{with psm2} BuildRequires: libpsm2-devel %endif %if %{with ucx} BuildRequires: ucx-devel %endif BuildRequires: zlib-devel -%if !0%{?el7} BuildRequires: rpm-mpi-hooks +%if %{with sphinx} +# For docs +BuildRequires: /usr/bin/sphinx-build +BuildRequires: python3-sphinx_rtd_theme %endif Provides: mpi -%if 0%{?rhel} -# Need this for /etc/profile.d/modules.sh -Requires: environment-modules -%endif Requires: environment(modules) +Requires: prrte # openmpi currently requires ssh to run # https://svn.open-mpi.org/trac/ompi/ticket/4228 Requires: openssh-clients @@ -122,48 +154,47 @@ researchers. For more information, see http://www.open-mpi.org/ . Summary: Development files for openmpi Requires: %{name} = %{version}-%{release}, gcc-gfortran Provides: mpi-devel -%if !0%{?el7} Requires: rpm-mpi-hooks # Make sure this package is rebuilt with correct Python version when updating # Otherwise mpi.req from rpm-mpi-hooks doesn't work # https://bugzilla.redhat.com/show_bug.cgi?id=1705296 Requires: (python(abi) = %{python3_version} if python3) -%endif %description devel Contains development headers and libraries for openmpi. +%package doc +Summary: HTML documentation for openmpi +License: BSD-3-Clause AND BSD-3-Clause-Open-MPI AND mpich2 AND MIT AND (MIT OR GPL-2.0-or-later) AND (OFL-1.1 AND MIT) +BuildArch: noarch + +%description doc +HTML documentation for openmpi. + +%if %{with java} %package java Summary: Java library +License: Apache-2.0 Requires: %{name} = %{version}-%{release} -Requires: java-headless +Requires: java-25-headless %description java Java library. %package java-devel Summary: Java development files for openmpi +License: Apache-2.0 Requires: %{name}-java = %{version}-%{release} -Requires: java-devel +Requires: java-25-devel %description java-devel Contains development wrapper for compiling Java with openmpi. +%endif # We set this to for convenience, since this is the unique dir we use for this # particular package, version, compiler %global namearch openmpi-%{_arch}%{?_cc_name_suffix} -%if %{with python2} -%package -n python2-openmpi -Summary: OpenMPI support for Python 2 -BuildRequires: python2-devel -Requires: %{name} = %{version}-%{release} -Requires: python(abi) = %{python2_version} - -%description -n python2-openmpi -OpenMPI support for Python 2. -%endif - %package -n python%{python3_pkgversion}-openmpi Summary: OpenMPI support for Python 3 Requires: %{name} = %{version}-%{release} @@ -174,7 +205,7 @@ OpenMPI support for Python 3. %prep -%autosetup -p1 +%autosetup -p1 -n %{name}-%{version} %if %{with autogen} ./autogen.pl --force %endif @@ -188,15 +219,23 @@ OpenMPI support for Python 3. --sysconfdir=%{_sysconfdir}/%{namearch} \ --disable-silent-rules \ --enable-builtin-atomics \ - --enable-mpi-cxx \ + --enable-ipv6 \ +%if %{with java} --enable-mpi-java \ +%endif --enable-mpi1-compatibility \ +%if %{with sphinx} + --enable-sphinx \ +%endif + --with-prrte=external \ --with-sge \ +%ifarch %{valgrind_arches} --with-valgrind \ --enable-memchecker \ +%endif --with-hwloc=/usr \ -%if !0%{?el7} --with-libevent=external \ +%if %{with pmix} --with-pmix=external \ %endif @@ -206,10 +245,6 @@ OpenMPI support for Python 3. %make_install find %{buildroot}%{_libdir}/%{name}/lib -name \*.la | xargs rm find %{buildroot}%{_mandir}/%{namearch} -type f | xargs gzip -9 -ln -s mpicc.1.gz %{buildroot}%{_mandir}/%{namearch}/man1/mpiCC.1.gz -# Remove dangling symlink -rm %{buildroot}%{_mandir}/%{namearch}/man1/mpiCC.1 -mkdir %{buildroot}%{_mandir}/%{namearch}/man{2,4,5,6,8,9,n} # Make the environment-modules file mkdir -p %{buildroot}%{_datadir}/modulefiles/mpi @@ -219,11 +254,6 @@ sed 's#@LIBDIR@#%{_libdir}/%{name}#; s#@FMODDIR@#%{_fmoddir}/%{name}#; s#@INCDIR@#%{_includedir}/%{namearch}#; s#@MANDIR@#%{_mandir}/%{namearch}#; -%if %{with python2} - s#@PY2SITEARCH@#%{python2_sitearch}/%{name}#; -%else - /@PY2SITEARCH@/d; -%endif s#@PY3SITEARCH@#%{python3_sitearch}/%{name}#; s#@COMPILER@#openmpi-%{_arch}%{?_cc_name_suffix}#; s#@SUFFIX@#%{?_cc_name_suffix}_openmpi#' \ @@ -247,20 +277,24 @@ cd %{buildroot}%{_libdir}/pkgconfig ln -s ../%{name}/lib/pkgconfig/*.pc . cd - +# Create cmake dir +mkdir -p %{buildroot}%{_libdir}/%{name}/lib/cmake/ + +# Create directories for OpenMPI packages with development files +mkdir -p %{buildroot}%{_libdir}/%{name}/lib/openmpi/cmake +mkdir -p %{buildroot}%{_libdir}/%{name}/include + # Remove extraneous wrapper link libraries (bug 814798) sed -i -e s/-ldl// -e s/-lhwloc// \ %{buildroot}%{_libdir}/%{name}/share/openmpi/*-wrapper-data.txt # install .pth files -%if %{with python2} -mkdir -p %{buildroot}/%{python2_sitearch}/%{name} -install -pDm0644 %{SOURCE2} %{buildroot}/%{python2_sitearch}/openmpi.pth -%endif mkdir -p %{buildroot}/%{python3_sitearch}/%{name} install -pDm0644 %{SOURCE3} %{buildroot}/%{python3_sitearch}/openmpi.pth %check -make check +fail=1 +make check || ( cat test/*/test-suite.log && exit $fail ) %files %license LICENSE @@ -269,58 +303,54 @@ make check %dir %{_libdir}/%{name}/bin %dir %{_libdir}/%{name}/lib %dir %{_libdir}/%{name}/lib/openmpi +%dir %{_libdir}/%{name}/include %dir %{_mandir}/%{namearch} %dir %{_mandir}/%{namearch}/man* %config(noreplace) %{_sysconfdir}/%{namearch}/* %{_libdir}/%{name}/bin/mpi[er]* %{_libdir}/%{name}/bin/ompi* -%{_libdir}/%{name}/bin/orte[-dr_]* %if %{with ucx} %{_libdir}/%{name}/bin/oshmem_info +%endif %{_libdir}/%{name}/bin/oshrun -%{_libdir}/%{name}/bin/shmemrun -%endif -%{_libdir}/%{name}/lib/*.so.40* -%{_libdir}/%{name}/lib/libmca_common_ofi.so.10* -%{_libdir}/%{name}/lib/libmca*.so.41* -%{_libdir}/%{name}/lib/libmca*.so.50* -%if 0%{?el7} +%if %{without pmix} +%{_libdir}/%{name}/bin/pattrs +%{_libdir}/%{name}/bin/pctrl +%{_libdir}/%{name}/bin/pevent +%{_libdir}/%{name}/bin/plookup +%{_libdir}/%{name}/bin/pmix_info +%{_libdir}/%{name}/bin/pmixcc +%{_libdir}/%{name}/bin/pps +%{_libdir}/%{name}/bin/pquery +%{_libdir}/%{name}/lib/libpmix.so.2* %{_libdir}/%{name}/lib/pmix/ +%{_libdir}/%{name}/share/pmix/ +%{_mandir}/%{namearch}/man1/pmix_info.1* +%{_mandir}/%{namearch}/man5/openpmix.5* %endif -%{_mandir}/%{namearch}/man1/mpi[er]* +%{_mandir}/%{namearch}/man7/Open-MPI.7* +%{_libdir}/%{name}/lib/*.so.40* +%{_libdir}/%{name}/lib/*.so.80* +%{_mandir}/%{namearch}/man1/mpirun.1* +%{_mandir}/%{namearch}/man1/mpisync.1* %{_mandir}/%{namearch}/man1/ompi* -%{_mandir}/%{namearch}/man1/orte[-dr_]* %if %{with ucx} %{_mandir}/%{namearch}/man1/oshmem_info* -%{_mandir}/%{namearch}/man1/oshrun* -%{_mandir}/%{namearch}/man1/shmemrun* %endif -%{_mandir}/%{namearch}/man7/ompi_* -%{_mandir}/%{namearch}/man7/opal_* -%{_mandir}/%{namearch}/man7/orte* %{_libdir}/%{name}/lib/openmpi/* %{_datadir}/modulefiles/mpi/ %dir %{_libdir}/%{name}/share %dir %{_libdir}/%{name}/share/openmpi %{_libdir}/%{name}/share/openmpi/amca-param-sets %{_libdir}/%{name}/share/openmpi/help*.txt -%if %{with rdma} -%{_libdir}/%{name}/share/openmpi/mca-btl-openib-device-params.ini -%endif -%if 0%{?el7} -%{_libdir}/%{name}/share/pmix/ -%endif %files devel %dir %{_includedir}/%{namearch} -%{_libdir}/%{name}/bin/aggregate_profile.pl %{_libdir}/%{name}/bin/mpi[cCf]* %{_libdir}/%{name}/bin/opal_* -%{_libdir}/%{name}/bin/orte[cCf]* %if %{with ucx} %{_libdir}/%{name}/bin/osh[cCf]* %endif -%{_libdir}/%{name}/bin/profile2mat.pl %if %{with ucx} %{_libdir}/%{name}/bin/shmem[cCf]* %endif @@ -328,11 +358,13 @@ make check %{_fmoddir}/%{name}/ %{_libdir}/%{name}/lib/*.so %{_libdir}/%{name}/lib/*.mod +%{_libdir}/%{name}/lib/cmake/ %{_libdir}/%{name}/lib/pkgconfig/ %{_libdir}/pkgconfig/*.pc %{_mandir}/%{namearch}/man1/mpi[cCf]* %if %{with ucx} %{_mandir}/%{namearch}/man1/osh[cCf]* +%{_mandir}/%{namearch}/man1/oshmem-wrapper-compiler.1* %{_mandir}/%{namearch}/man1/shmem[cCf]* %endif %{_mandir}/%{namearch}/man1/opal_* @@ -341,20 +373,20 @@ make check %{_libdir}/%{name}/share/openmpi/*-wrapper-data.txt %{macrosdir}/macros.%{namearch} +%files doc +%license LICENSE +%doc %{_libdir}/%{name}/share/doc/ +%exclude %{_libdir}/%{name}/share/doc/openmpi/javadoc-openmpi + +%if %{with java} %files java %{_libdir}/%{name}/lib/mpi.jar %files java-devel %{_libdir}/%{name}/bin/mpijavac %{_libdir}/%{name}/bin/mpijavac.pl -# Currently this only contaings openmpi/javadoc -%{_libdir}/%{name}/share/doc/ +%doc %{_libdir}/%{name}/share/doc/openmpi/javadoc-openmpi %{_mandir}/%{namearch}/man1/mpijavac.1.gz - -%if %{with python2} -%files -n python2-openmpi -%dir %{python2_sitearch}/%{name} -%{python2_sitearch}/openmpi.pth %endif %files -n python%{python3_pkgversion}-openmpi @@ -363,753 +395,4 @@ make check %changelog -* Thu Jan 28 2021 Orion Poplawski - 4.1.0-5 -- Add upstream patch for generalized requests - -* Thu Jan 28 2021 Orion Poplawski - 4.1.0-4 -- Add upstream patch to fix AVX library linkage - -* Tue Jan 26 2021 Fedora Release Engineering - 4.1.0-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild - -* Sun Jan 24 2021 Orion Poplawski - 4.1.0-2 -- Use set_build_flags macro -- Drop old opt_ macros - -* Sun Jan 24 2021 Orion Poplawski - 4.1.0-1 -- Update to 4.1.0 - -* Wed Sep 23 2020 Orion Poplawski - 4.0.5-2 -- Rebuild for libevent 2.1.12 - -* Wed Sep 02 2020 Orion Poplawski - 4.0.5-1 -- Update to 4.0.5 - -* Tue Jul 28 2020 Fedora Release Engineering - 4.0.4-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild - -* Sat Jul 11 2020 Jiri Vanek - 4.0.4-2 -- Rebuilt for JDK-11, see https://fedoraproject.org/wiki/Changes/Java11 - -* Wed Jun 17 2020 Orion Poplawski - 4.0.4-1 -- Update to 4.0.4 - -* Mon May 25 2020 Miro Hrončok - 4.0.4-0.3.rc1 -- Rebuilt for Python 3.9 - -* Sun May 24 2020 Orion Poplawski - 4.0.4-0.2.rc1 -- Set OMPI_MCA_rmaps_base_oversubscribe=1 in %%_openmpi_load (bz#1839571) - -* Sun May 10 2020 Orion Poplawski - 4.0.4-0.1.rc1 -- Update to 4.0.4 rc1 - -* Thu Mar 05 2020 Orion Poplawski - 4.0.3x-1 -- Update to 4.0.3 (use x to avoid epoch) - -* Sun Mar 01 2020 Orion Poplawski - 4.0.3rc4-1 -- Update to 4.0.3rc4 - -* Sat Feb 1 2020 Orion Poplawski - 4.0.3rc3-1 -- Update to 4.0.3rc3 - -* Wed Jan 29 2020 Fedora Release Engineering - 4.0.2-5 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild - -* Tue Dec 10 2019 Dominik Mierzejewski - 4.0.2-4 -- disable rdma on ARM 32-bit (bz#1780584) - -* Sun Nov 24 2019 Orion Poplawski - 4.0.2-3 -- Add upstream fix for error in calculating aggregators in 32bit mode - -* Fri Nov 15 2019 Orion Poplawski - 4.0.2-2 -- Drop python2 for Fedora 32+ (bz#1773125) - -* Mon Oct 7 2019 Philip Kovacs - 4.0.2-1 -- Update to 4.0.2 - -* Sat Sep 14 2019 Orion Poplawski - 4.0.2-0.4.rc2 -- Update to 4.0.2rc2 -- Re-enable C++ bindings on power64 - -* Fri Sep 6 2019 Philip Kovacs - 4.0.2-0.3.rc1 -- Rebuild for annobin update to correct aarch64 build (bug #1748529) - -* Fri Aug 30 2019 Philip Kovacs - 4.0.2-0.2.rc1 -- Apply upstream PR 6946 to avoid linking to __mmap -- Add build deps to run upstream autogen.pl -- Remove embedded tabs in the spec - -* Thu Aug 29 2019 Philip Kovacs - 4.0.2-0.1.rc1 -- Update to 4.0.2rc1 -- Closes bug #1746564 - -* Thu Aug 29 2019 Zbigniew Jędrzejewski-Szmek - 4.0.1-11 -- Fix MANPATH so normal modules can still be loaded (#1564899) - -* Sun Aug 25 2019 Zbigniew Jędrzejewski-Szmek - 4.0.1-10 -- Rebuilt for hwloc-2.0 - -* Sun Aug 18 2019 Miro Hrončok - 4.0.1-9 -- Rebuilt for Python 3.8 - -* Fri Aug 9 2019 Philip Kovacs - 4.0.1-8 -- Remove torque support (torque retired: bug #1676147) - -* Thu Jul 25 2019 Fedora Release Engineering - 4.0.1-7 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild - -* Fri Jun 21 2019 Orion Poplawski - 4.0.1-6 -- Rebuild for libfabric 1.8 -- Re-enable UCX, hopefully issue fixed in 1.5.2 - -* Mon May 27 2019 Orion Poplawski - 4.0.1-5 -- Drop UCX support for now - -* Wed May 15 2019 Orion Poplawski - 4.0.1-4 -- Add upstream patch OSC/UCX: use correct rkey for atomic_fadd in rget/rput - -* Wed May 15 2019 Orion Poplawski - 4.0.1-3 -- Add upstream patch to fix issue with UCX usage in BTL/UCT - -* Tue May 7 2019 Orion Poplawski - 4.0.1-2 -- Add a guard for python3 version (#1705296) -- Add requires on python(abi) to python packages - -* Sun Apr 28 2019 Orion Poplawski - 4.0.1-1 -- Update to 4.0.1 - -* Sun Apr 28 2019 Orion Poplawski - 3.1.4-1 -- Update to 3.1.4 - -* Mon Apr 22 2019 Björn Esser - 3.1.3-5 -- rebuilt(opensm) - -* Wed Apr 17 2019 Christoph Junghans - 3.1.3-4 -- Rebuild to fix ibosmcomp linkage - -* Sat Mar 2 2019 Orion Poplawski - 3.1.3-3 -- Enable valgrind on s390x -- Cleanup arch conditionals - -* Tue Feb 19 2019 Orion Poplawski - 3.1.3-2 -- Enable PVFS2/OrangeFS MPI-IO support (bug #1655010) - -* Wed Feb 13 2019 Orion Poplawski - 3.1.3-1 -- Update to 3.1.3 -- Drop ppc64le patch fixed upstream -- Use external libevent and pmix, except on EL7 -- Fix EPEL7 builds - -* Sat Feb 2 2019 Orion Poplawski - 2.1.6-1 -- Update to 2.1.6 - -* Fri Feb 01 2019 Fedora Release Engineering - 2.1.6-0.2.rc1 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild - -* Wed Nov 28 2018 Orion Poplawski - 2.1.6-0.1.rc1 -- Update to 2.1.6rc1 - -* Thu Oct 11 2018 Orion Poplawski - 2.1.5-1 -- Update to 2.1.5 - -* Sun Jul 22 2018 Orion Poplawski - 2.1.1-14 -- Add BR gcc-c++ (fix FTBFS bug #1605323) - -* Fri Jul 13 2018 Fedora Release Engineering - 2.1.1-13 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild - -* Tue Jun 19 2018 Miro Hrončok - 2.1.1-12 -- Rebuilt for Python 3.7 - -* Thu May 10 2018 Troy Dawson - 2.1.1-11 -- Build with rdma-core-devel instead of libibcm-devel - -* Mon Apr 30 2018 Florian Weimer - 2.1.1-10 -- Rebuild with new flags from redhat-rpm-config - -* Fri Feb 09 2018 Igor Gnatenko - 2.1.1-9 -- Escape macros in %%changelog - -* Mon Feb 05 2018 Orion Poplawski - 2.1.1-8 -- Rebuild for rdma-core 16.2 - -* Wed Jan 31 2018 Christoph Junghans - 2.1.1-7 -- Rebuild for gfortran-8 - -* Fri Jan 12 2018 Iryna Shcherbina - 2.1.1-6 -- Update Python 2 dependency declarations to new packaging standards - (See https://fedoraproject.org/wiki/FinalizingFedoraSwitchtoPython3) - -* Wed Aug 23 2017 Adam Williamson - 2.1.1-5 -- Disable RDMA support on 32-bit ARM (#1484155) -- Disable hanging opal_fifo test on ppc64le (gh #2526 / #2966) - -* Thu Aug 03 2017 Fedora Release Engineering - 2.1.1-4 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild - -* Thu Jul 27 2017 Fedora Release Engineering - 2.1.1-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild - -* Wed Jul 19 2017 Orion Poplawski - 2.1.1-2 -- Provide pkgconfig files in the main namespace as well (1471512) - -* Fri May 12 2017 Orion Poplawski - 2.1.1-1 -- Update to 2.1.1 - -* Thu May 4 2017 Orion Poplawski - 2.1.0-1 -- Update to 2.1.0 - -* Sat Feb 11 2017 Fedora Release Engineering - 2.0.2-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild - -* Thu Feb 2 2017 Orion Poplawski - 2.0.2-1 -- Update to 2.0.2 - -* Sat Jan 28 2017 Björn Esser - 2.0.1-7 -- Rebuilt for GCC-7 - -* Mon Dec 19 2016 Miro Hrončok - 2.0.1-6 -- Rebuild for Python 3.6 - -* Wed Nov 2 2016 Orion Poplawski - 2.0.1-5 -- Split python support into sub-packages (bug #1391157) - -* Thu Oct 27 2016 Dan Horák - 2.0.1-4 -- Temporarily disable C++ bindings on ppc64/ppc64le (#1388561) - -* Mon Oct 24 2016 Orion Poplawski - 2.0.1-3 -- Fix License tag format -- Use /usr/share/modulefiles for modulefile install location - -* Mon Oct 24 2016 Orion Poplawski - 2.0.1-2 -- Add upstream patch for thread wait issue with mpi4py - -* Fri Oct 21 2016 Orion Poplawski - 2.0.1-1 -- Update to 2.0.1 - -* Thu Oct 20 2016 Orion Poplawski - 1.10.4-4 -- Support s390(x) (bug #1358701) - -* Thu Oct 20 2016 Orion Poplawski - 1.10.4-3 -- Enable psm/psm2 support on x86_64 (bug #1263655) - -* Wed Oct 19 2016 Orion Poplawski - 1.10.4-2 -- Enable MPI_THREAD_MULTIPLE support (bug #1369989) - -* Wed Oct 19 2016 Orion Poplawski - 1.10.4-1 -- Update to 1.10.4 - -* Thu Sep 15 2016 Orion Poplawski - 1.10.3-3 -- Rebuild for papi 5.5.0 - -* Fri Jun 24 2016 Orion Poplawski - 1.10.3-2 -- Use bundled libevent, system version causes issues (bug #1235044) - -* Wed Jun 15 2016 Orion Poplawski - 1.10.3-1 -- Update to 1.10.3 -- New javadoc location - -* Thu Feb 04 2016 Fedora Release Engineering - 1.10.2-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild - -* Tue Jan 26 2016 Orion Poplawski - 1.10.2-2 -- Rebuild for papi 5.4.3 - -* Thu Jan 21 2016 Orion Poplawski - 1.10.2-1 -- Update to 1.10.2 -- Drop upsream nbc_copy patch - -* Tue Nov 10 2015 Orion Poplawski - 1.10.1-3 -- Add upstream patch to fix zero size message - -* Tue Nov 10 2015 Fedora Release Engineering - 1.10.1-2 -- Rebuilt for https://fedoraproject.org/wiki/Changes/python3.5 - -* Thu Nov 5 2015 Orion Poplawski - 1.10.1-1 -- Update to 1.10.1 -- Require environment(modules) -- Fixup fortran module install (bug #1154982) - -* Tue Oct 6 2015 Orion Poplawski - 1.10.0-3 -- Do not set CFLAGS in %%_openmpi_load - -* Wed Sep 16 2015 Orion Poplawski - 1.10.0-2 -- Add patch to add needed opal/util/argv.h includes - -* Tue Sep 15 2015 Orion Poplawski - 1.10.0-1 -- Update to 1.10.0 - -* Thu Aug 27 2015 Zbigniew Jędrzejewski-Szmek - 1.8.8-5 -- Use .pth files to set the python path (https://fedorahosted.org/fpc/ticket/563) - -* Mon Aug 24 2015 Orion Poplawski 1.8.8-4 -- Disable valgrind only on s390 - -* Mon Aug 17 2015 Orion Poplawski 1.8.8-3 -- Do not filter libvt* provides as some dependencies link to it - -* Mon Aug 10 2015 Sandro Mani - 1.8.8-2 -- Require, BuildRequire: rpm-mpi-hooks - -* Mon Aug 10 2015 Orion Poplawski 1.8.8-1 -- Update to 1.8.8 -- Drop atomic patch applied upstream - -* Wed Jul 15 2015 Orion Poplawski 1.8.7-1 -- Update to 1.8.7 - -* Tue Jun 23 2015 Orion Poplawski 1.8.6-1 -- Update to 1.8.6 - -* Thu Jun 18 2015 Fedora Release Engineering - 1.8.5-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild - -* Tue May 5 2015 Orion Poplawski 1.8.5-1 -- Update to 1.8.5 - -* Fri May 1 2015 Orion Poplawski 1.8.5-0.2.rc3 -- Update to 1.8.5rc3 - -* Sun Apr 5 2015 Orion Poplawski 1.8.5-0.1.rc1 -- Update to 1.8.5rc1 - -* Mon Mar 30 2015 Orion Poplawski 1.8.4-7.20150324gitg9ad2aa8 -- Add upstream patch to fix race/hang on 32bit machines - -* Fri Mar 27 2015 Orion Poplawski 1.8.4-6.20150324gitg9ad2aa8 -- Update to latest 1.8.4 snapshot -- Add upstream patch to fix atomics on 32bit - -* Mon Mar 23 2015 Zbigniew Jędrzejewski-Szmek - 1.8.4-5.20150228gitgd83fb30 -- Rebuild for fortran update (#1204420) - -* Mon Mar 16 2015 Orion Poplawski 1.8.4-4.99.20150228gitgd83fb30 -- Own and ship pkgconfig files, set PKG_CONFIG_PATH in modulefile (bug #1113626) -- Drop old configure settings - -* Wed Mar 4 2015 Orion Poplawski 1.8.4-3.99.20150228gitgd83fb30 -- Update to 1.8.4.99 snapshot - -* Fri Feb 13 2015 Orion Poplawski 1.8.4-2 -- Fix MPI_FORTRAN_MOD_DIR (bug #1154982) - -* Tue Dec 23 2014 Orion Poplawski 1.8.4-1 -- Update to 1.8.4 - -* Mon Nov 17 2014 Orion Poplawski 1.8.3-3 -- Rebuild for papi soname change - -* Fri Oct 3 2014 Orion Poplawski 1.8.3-2 -- Fix typo in oshmem library name - -* Sat Sep 27 2014 Orion Poplawski 1.8.3-1 -- Update to 1.8.3 - -* Tue Sep 16 2014 Peter Robinson 1.8.2-2 -- ppc64le now has valgrind - -* Tue Aug 26 2014 Orion Poplawski 1.8.2-1 -- Update to 1.8.2 - -* Sun Aug 17 2014 Fedora Release Engineering - 1.8.1-7 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild - -* Wed Aug 6 2014 Peter Robinson 1.8.1-6 -- Rebuild (papi) - -* Mon Aug 4 2014 Dan Horák 1.8.1-5 -- no valgrind on ppc64le yet - -* Sat Aug 2 2014 Peter Robinson 1.8.1-4 -- aarch64 now has valgrind - -* Thu Jul 17 2014 Orion Poplawski 1.8.1-3 -- Add patch to prevent shmem wrappers from adding extra libs - -* Sat Jun 07 2014 Fedora Release Engineering - 1.8.1-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild - -* Wed Apr 23 2014 Orion Poplawski 1.8.1-1 -- Update to 1.8.1, fixes bug #1089044 - -* Tue Apr 1 2014 Orion Poplawski 1.8-1 -- Update to 1.8 - -* Tue Mar 25 2014 Orion Poplawski 1.7.5-2 -- Update provides filter - -* Mon Mar 24 2014 Orion Poplawski 1.7.5-1 -- Update to 1.7.5 - -* Fri Feb 21 2014 Orion Poplawski - 1.7.4-3 -- Require java-headless - -* Sat Feb 8 2014 Ville Skyttä - 1.7.4-2 -- Install macros to %%{_rpmconfdir}/macros.d where available. - -* Wed Feb 5 2014 Orion Poplawski 1.7.4-1 -- Update to 1.7.4 -- Drop format patch fixed upstream -- Build against system libevent -- Build Java mpi bindings, ship in -java sub-package -- Add requires openssh-clients - -* Tue Jan 28 2014 Peter Robinson 1.7.3-5 -- Drop mode/modeflag. mode no longer used, modeflag obsolete as set in CFLAGS -- Use distro LDFLAGS for hardened build -- Drop armv5tel options -- General spec cleanups - -* Thu Jan 16 2014 Orion Poplawski 1.7.3-4 -- Rebuild with papi 5.3.0 - -* Wed Dec 4 2013 Peter Robinson 1.7.3-3 -- valgrind not currently supported on aarch64 - -* Tue Dec 3 2013 Orion Poplawski 1.7.3-2 -- Fix compilation with -Werror=format-security (bug #1037231) - -* Sun Oct 20 2013 Orion Poplawski 1.7.3-1 -- Update to 1.7.3 -- Upstream no longer ships license incompatible files - -* Fri Aug 16 2013 Orion Poplawski 1.7.2-7 -- Move orte* compiler wrappers to devel sub-package (bug #997330) - -* Thu Aug 08 2013 Dennis Gilmore - 1.7.2-6 -- rebuild for papi soname bump bz#995092 - -* Sat Aug 03 2013 Petr Pisar - 1.7.2-5 -- Perl 5.18 rebuild - -* Fri Jul 26 2013 Orion Poplawski 1.7.2-4 -- Fix build issue with _cc_name_suffix (bug #986664) - -* Mon Jul 22 2013 Deji Akingunola - 1.7.2-3 -- Rebuild for papi's shared lib fix - -* Wed Jul 17 2013 Petr Pisar - 1.7.2-2 -- Perl 5.18 rebuild - -* Thu Jun 27 2013 Orion Poplawski 1.7.2-1 -- Update to 1.7.2 - -* Wed Apr 17 2013 Orion Poplawski 1.7.1-1 -- Update to 1.7.1 -- Add BR on hwloc -- Add BR on papi-devel - -* Tue Apr 16 2013 Orion Poplawski 1.7-1 -- Update to 1.7 -- Rebase patch to handle removed components -- Drop esmtp - no longer used - -* Sat Feb 23 2013 Orion Poplawski 1.6.4-2 -- Exclude libopen-trace.* from requires - -* Fri Feb 22 2013 Orion Poplawski 1.6.4-1 -- Update to 1.6.4 -- Drop f90sover and arm-atomics patch fixed upstream - -* Mon Jan 28 2013 Orion Poplawski 1.6.3-7 -- Make __requires_exclude more specific so we don't exclude needed libs - (bug #905263) - -* Sun Nov 18 2012 Peter Robinson 1.6.3-6 -- Update atomics patch for ARM (thanks to Jon Masters) - -* Sun Nov 11 2012 Peter Robinson 1.6.3-5 -- Atomics patch to fix building on ARM (thanks to Jon Masters) - -* Mon Nov 5 2012 Orion Poplawski 1.6.3-4 -- Add patch to fix libmpi_f90.so version -- Add patch to link tests with system libltdl -- Run make check - -* Fri Nov 2 2012 Orion Poplawski 1.6.3-3 -- Set enable-opal-multi-threads for IB support - -* Thu Nov 1 2012 Orion Poplawski 1.6.3-2 -- Update rpm macros to use the new module location - -* Wed Oct 31 2012 Orion Poplawski 1.6.3-1 -- Update to 1.6.3 - -* Sat Oct 13 2012 Orion Poplawski 1.6.2-1 -- Update to 1.6.2 -- Add BR torque-devel to enable torque support -- Drop old module file location (bug #838467) - -* Thu Sep 13 2012 Orion Poplawski 1.6.1-2 -- Drop adding -fPIC, no longer needed -- Set --disable-silent-rules for more verbose build logs -- Don't add opt_*flags to the wrappers -- Only use $RPM_OPT_FLAGS if not using the opt_*flags - -* Thu Aug 23 2012 Orion Poplawski 1.6.1-1 -- Update to 1.6.1 -- Drop hostfile patch applied upstream - -* Fri Jul 20 2012 Fedora Release Engineering - 1.6-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild - -* Tue May 15 2012 Orion Poplawski 1.6-2 -- Add patch from upstream to fix default hostfile location - -* Tue May 15 2012 Orion Poplawski 1.6-1 -- Update to 1.6 -- Drop arm patch, appears to be addressed upstream -- Remove extraneous wrapper link libraries (bug 814798) - -* Tue Apr 3 2012 Peter Robinson - 1.5.5-1 -- Update to 1.5.5 - -* Tue Feb 28 2012 Fedora Release Engineering - 1.5.4-5.1 -- Rebuilt for c++ ABI breakage - -* Wed Feb 22 2012 Orion Poplawski 1.5.4-4.1 -- Rebuild with hwloc 1.4 - -* Wed Feb 15 2012 Peter Robinson - 1.5.4-4 -- Rebuild for hwloc soname bump - -* Fri Jan 20 2012 Doug Ledford - 1.5.4-3 -- Move modules file to mpi directory and make it conflict with any other - mpi module (bug #651074) - -* Sun Jan 8 2012 Orion Poplawski 1.5.4-2 -- Rebuild with gcc 4.7 (bug #772443) - -* Thu Nov 17 2011 Orion Poplawski 1.5.4-1 -- Update to 1.5.4 -- Drop dt-textrel patch fixed upstream -- Fixup handling removed files (bug #722534) -- Uses hwloc instead of plpa -- Exclude private libraries from provides/requires (bug #741104) -- Drop --enable-mpi-threads & --enable-openib-ibcm, no longer recognized - -* Sat Jun 18 2011 Peter Robinson 1.5-4 -- Exclude ARM platforms due to current lack of "atomic primitives" on the platform - -* Thu Mar 17 2011 Jay Fenlason 1.5-3 -- Add dt-textrel patch to close - Resolves: bz679489 -- Add memchecker and esmtp support - Resolves: bz647011 - -* Tue Feb 08 2011 Fedora Release Engineering - 1.5-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild - -* Mon Oct 18 2010 Jay Fenlason 1.5-1 -- set MANPATH in openmpi module file -- Upgrade to 1.5 -- Workaround for rhbz#617766 appears to no longer be needed for 1.5 -- remove pkgconfig files in instal -- Remove orteCC.1 dangling symlink -- Adjust the files entries for share/openmpi/help* and share/openmpi/mca* -- Adjust the files entries for share/openmpi/mpi* -- Add files entry for share/openmpi/orte*.txt - -* Sun Sep 05 2010 Dennis Gilmore - 1.4.1-7 -- disable valgrind support on sparc arches - -* Sat Jul 24 2010 David Malcolm - 1.4.1-6 -- workaround for rhbz#617766 - -* Wed Jul 21 2010 David Malcolm - 1.4.1-5 -- Rebuilt for https://fedoraproject.org/wiki/Features/Python_2.7/MassRebuild - -* Mon Mar 29 2010 Jay Fenlason - 1.4.1-4 -- Update to fix licencing and packaging issues: - Use the system plpa and ltdl librarires rather than the ones in the tarball - Remove licence incompatible files from the tarball. -- update module.in to prepend-path PYTHONPATH - -* Tue Mar 9 2010 Jay Fenlason - 1.4.1-3 -- remove the pkgconfig file completely like we did in RHEL. - -* Tue Jan 26 2010 Jay Fenlason - 1.4.1-2 -- BuildRequires: python - -* Tue Jan 26 2010 Jay Fenlason - 1.4.1-1 -- New upstream version, which includes the changeset_r22324 patch. -- Correct a typo in the Source0 line in this spec file. - -* Fri Jan 15 2010 Doug Ledford - 1.4-4 -- Fix an issue with usage of _cc_name_suffix that cause a broken define in - our module file - -* Fri Jan 15 2010 Doug Ledford - 1.4-3 -- Fix pkgconfig file substitution -- Bump version so we are later than the equivalent version from Red Hat - Enterprise Linux - -* Wed Jan 13 2010 Doug Ledford - 1.4-1 -- Update to latest upstream stable version -- Add support for libibcm usage -- Enable sge support via configure options since it's no longer on by default -- Add patch to resolve allreduce issue (bz538199) -- Remove no longer needed patch for Chelsio cards - -* Tue Sep 22 2009 Jay Fenlason - 1.3.3-6 -- Create and own man* directories for use by dependent packages. - -* Wed Sep 16 2009 Jay Fenlason - 1.3.3-5 -- Move the module file from %%{_datadir}/Modules/modulefiles/%%{namearch} to - %%{_sysconfdir}/modulefiles/%%{namearch} where it belongs. -- Have the -devel subpackage own the man1 and man7 directories for completeness. -- Add a blank line before the clean section. -- Remove --enable-mpirun-prefix-by-default from configure. - -* Wed Sep 9 2009 Jay Fenlason - 1.3.3-4 -- Modify packaging to conform to - https://fedoraproject.org/wiki/PackagingDrafts/MPI (bz521334). -- remove --with-ft=cr from configure, as it was apparently causing problems - for some people. -- Add librdmacm-devel and librdmacm to BuildRequires (related bz515565). -- Add openmpi-bz515567.patch to add support for the latest Chelsio device IDs - (related bz515567). -- Add exclude-arch (s390 s390x) because we don't have required -devel packages - there. - -* Sat Jul 25 2009 Fedora Release Engineering - 1.3.3-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild - -* Tue Jul 21 2009 Doug Ledford - 1.3.3-2 -- Add MPI_BIN and MPI_LIB to the modules file (related bz511099) - -* Tue Jul 21 2009 Doug Ledford - 1.3.3-1 -- Make sure all created dirs are owned (bz474677) -- Fix loading of pkgconfig file (bz476844) -- Resolve file conflict between us and libotf (bz496131) -- Resolve dangling symlinks issue (bz496909) -- Resolve unexpanded %%{mode} issues (bz496911) -- Restore -devel subpackage (bz499851) -- Make getting the default openmpi devel environment easier (bz504357) -- Make the -devel package pull in the base package (bz459458) -- Make it easier to use alternative compilers to build package (bz246484) - -* Sat Jul 18 2009 Jussi Lehtola - 1.3.1-4 -- Add Provides: openmpi-devel to fix other package builds in rawhide. - -* Fri May 08 2009 Lubomir Rintel - 1.3.1-3 -- Treat i586 the same way as i386 - -* Wed Apr 22 2009 Doug Ledford - 1.3.1-2 -- fixed broken update -- Resolves: bz496909, bz496131, bz496911 - -* Tue Apr 14 2009 Tom "spot" Callaway - 1.3.1-1 -- update to 1.3.1, cleanup alternatives, spec, make new vt subpackage - -* Thu Feb 26 2009 Fedora Release Engineering - 1.2.4-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild - -* Mon Feb 18 2008 Fedora Release Engineering - 1.2.4-2 -- Autorebuild for GCC 4.3 - -* Wed Oct 17 2007 Doug Ledford - 1.2.4-1 -- Update to 1.2.4 upstream version -- Build against libtorque -- Pass a valid mode to open -- Resolves: bz189441, bz265141 - -* Tue Aug 28 2007 Fedora Release Engineering - 1.2.3-5 -- Rebuild for selinux ppc32 issue. - -* Mon Jul 16 2007 Doug Ledford - 1.2.3-4 -- Fix a directory permission problem on the base openmpi directories - -* Thu Jul 12 2007 Florian La Roche - 1.2.3-3 -- requires alternatives for various sub-rpms - -* Mon Jul 02 2007 Doug Ledford - 1.2.3-2 -- Fix dangling symlink issue caused by a bad macro usage -- Resolves: bz246450 - -* Wed Jun 27 2007 Doug Ledford - 1.2.3-1 -- Update to latest upstream version -- Fix file ownership on -libs package -- Take a swing at solving the multi-install compatibility issues - -* Mon Feb 19 2007 Doug Ledford - 1.1.1-7 -- Bump version to be at least as high as the RHEL4U5 openmpi -- Integrate fixes made in RHEL4 openmpi into RHEL5 (fix a multilib conflict - for the openmpi.module file by moving from _datadir to _libdir, make sure - all sed replacements have the g flag so they replace all instances of - the marker per line, not just the first, and add a %%defattr tag to the - files section of the -libs package to avoid install errors about - brewbuilder not being a user or group) -- Resolves: bz229298 - -* Wed Jan 17 2007 Doug Ledford - 1.1.1-5 -- Remove the FORTIFY_SOURCE and stack protect options -- Related: bz213075 - -* Fri Oct 20 2006 Doug Ledford - 1.1.1-4 -- Bump and build against the final openib-1.1 package - -* Wed Oct 18 2006 Doug Ledford - 1.1.1-3 -- Fix an snprintf length bug in opal/util/cmd_line.c -- RESOLVES: rhbz#210714 - -* Wed Oct 18 2006 Doug Ledford - 1.1.1-2 -- Bump and build against openib-1.1-0.pre1.1 instead of 1.0 - -* Tue Oct 17 2006 Doug Ledford - 1.1.1-1 -- Update to upstream 1.1.1 version - -* Fri Oct 13 2006 Doug Ledford - 1.1-7 -- ia64 can't take -m64 on the gcc command line, so don't set it there - -* Wed Oct 11 2006 Doug Ledford - 1.1-6 -- Bump rev to match fc6 rev -- Fixup some issue with alternatives support -- Split the 32bit and 64bit libs ld.so.conf.d files into two files so - multilib or single lib installs both work properly -- Put libs into their own package -- Add symlinks to /usr/share/openmpi/bin%%{mode} so that opal_wrapper-%%{mode} - can be called even if it isn't the currently selected default method in - the alternatives setup (opal_wrapper needs to be called by mpicc, mpic++, - etc. in order to determine compile mode from argv[0]). - -* Sun Aug 27 2006 Doug Ledford - 1.1-4 -- Make sure the post/preun scripts only add/remove alternatives on initial - install and final removal, otherwise don't touch. - -* Fri Aug 25 2006 Doug Ledford - 1.1-3 -- Don't ghost the mpi.conf file as that means it will get removed when - you remove 1 out of a number of alternatives based packages -- Put the .mod file in -devel - -* Mon Aug 7 2006 Doug Ledford - 1.1-2 -- Various lint cleanups -- Switch to using the standard alternatives mechanism instead of a home - grown one - -* Wed Aug 2 2006 Doug Ledford - 1.1-1 -- Upgrade to 1.1 -- Build with Infiniband support via openib - -* Mon Jun 12 2006 Jason Vas Dias - 1.0.2-1 -- Upgrade to 1.0.2 - -* Wed Feb 15 2006 Jason Vas Dias - 1.0.1-1 -- Import into Fedora Core -- Resolve LAM clashes - -* Wed Jan 25 2006 Orion Poplawski - 1.0.1-2 -- Use configure options to install includes and libraries -- Add ld.so.conf.d file to find libraries -- Add -fPIC for x86_64 - -* Tue Jan 24 2006 Orion Poplawski - 1.0.1-1 -- 1.0.1 -- Use alternatives - -* Sat Nov 19 2005 Ed Hill - 1.0-2 -- fix lam conflicts - -* Fri Nov 18 2005 Ed Hill - 1.0-1 -- initial specfile created - +%autochangelog diff --git a/sources b/sources index ebb82c2..34f655a 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (openmpi-4.1.0.tar.bz2) = eaf086ab4929ce5a9a3e867c8315bf802ff4dc75d3f05d740e22dfd97803a4559212dacbe06920d42ac6644f46057eb6980cccf5a8b0a7df9c5bdf5bffc0b3a6 +SHA512 (openmpi-5.0.10.tar.bz2) = 24d29c2e88549e5a59f47dac0a2327db99644c59fd2991441d0ec23edb95aa7328fcd67bd44601ce9f11b0af90d36fddf82643e23f0f6e7c013c99f9bbd9738e