diff --git a/.gitignore b/.gitignore index d89aa68..3ca97ee 100644 --- a/.gitignore +++ b/.gitignore @@ -69,5 +69,3 @@ openmpi-1.4.1-RH.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/13281.patch b/13281.patch new file mode 100644 index 0000000..3bcfaf3 --- /dev/null +++ b/13281.patch @@ -0,0 +1,30 @@ +From d5c84ea4595ea1fbb5b213621e0966ebe0fd3cc9 Mon Sep 17 00:00:00 2001 +From: Joseph Schuchart +Date: Wed, 28 May 2025 10:11:58 -0400 +Subject: [PATCH] Force alignment of opal_atomic_int128_t to be 16B + +Some architectures will align 128bit integer on 8B but require 16B alignment +for 128bit CAS instructions and otherwise fall back to a lock-based +atomicity model. By forcing 16bit alignment we can ensure that the variables +are properly aligned and the fall-back is not triggered. + +Thanks to Ulrich Weigand for the analysis and proposed fix in https://github.com/open-mpi/ompi/issues/10988#issuecomment-2913388506. + +Signed-off-by: Joseph Schuchart +--- + opal/include/opal_stdatomic.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/opal/include/opal_stdatomic.h b/opal/include/opal_stdatomic.h +index 35437551208..f7dd8353d3b 100644 +--- a/opal/include/opal_stdatomic.h ++++ b/opal/include/opal_stdatomic.h +@@ -72,7 +72,7 @@ typedef _Atomic opal_int128_t opal_atomic_int128_t; + + # else + +-typedef volatile opal_int128_t opal_atomic_int128_t; ++typedef volatile opal_int128_t opal_atomic_int128_t __opal_attribute_aligned__(16); + + # endif + diff --git a/openmpi-braces.patch b/openmpi-braces.patch deleted file mode 100644 index 61b3c59..0000000 --- a/openmpi-braces.patch +++ /dev/null @@ -1,16 +0,0 @@ -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 deleted file mode 100644 index 9ee88a1..0000000 --- a/openmpi-drop-recommonmark.patch +++ /dev/null @@ -1,31 +0,0 @@ -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 deleted file mode 100644 index dd901e8..0000000 --- a/openmpi-inline.patch +++ /dev/null @@ -1,13 +0,0 @@ -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.spec b/openmpi.spec index c0ecb85..d5f879b 100644 --- a/openmpi.spec +++ b/openmpi.spec @@ -12,7 +12,13 @@ %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 +%endif # No more Java on i686 %ifarch %{java_arches} @@ -43,22 +49,14 @@ %bcond_without pmix # Run autogen - needed for some patches -%bcond autogen 1 +%bcond autogen 0 Name: openmpi%{?_cc_name_suffix} -Version: 5.0.10 +Version: 5.0.8 Release: %autorelease Summary: Open Message Passing Interface # 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 +License: LicenseRef-Callaway-BSD AND LicenseRef-Callaway-MIT AND LicenseRef-Romio URL: http://www.open-mpi.org/ ExcludeArch: %{ix86} @@ -67,12 +65,8 @@ Source0: https://www.open-mpi.org/software/ompi/v5.0/downloads/openmpi-%{ Source1: openmpi.module.in Source3: openmpi.pth.py3 Source4: macros.openmpi -# 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 + +Patch0: https://github.com/open-mpi/ompi/pull/13281.patch BuildRequires: gcc-c++ BuildRequires: gcc-gfortran @@ -86,6 +80,7 @@ BuildRequires: perl(File::Find) BuildRequires: valgrind-devel %endif %if %{with rdma} +BuildRequires: opensm-devel > 3.3.0 BuildRequires: rdma-core-devel %endif # Doesn't compile: @@ -93,6 +88,8 @@ BuildRequires: rdma-core-devel # loop->getLoopHead()->getStartAddress(), loop_stmts ); #BuildRequires: dyninst-devel BuildRequires: hwloc-devel +# So configure can find lstopo +BuildRequires: hwloc-gui %if %{with java} BuildRequires: java-25-devel %else @@ -100,7 +97,9 @@ Obsoletes: %{name}-java < %{version}-%{release} Obsoletes: %{name}-java-devel < %{version}-%{release} %endif # Old libevent causes issues +%if !0%{?el7} BuildRequires: libevent-devel +%endif BuildRequires: libfabric-devel %ifnarch s390x BuildRequires: papi-devel @@ -114,6 +113,8 @@ BuildRequires: perl(Getopt::Long) %if %{with pmix} BuildRequires: pmix-devel >= 4.2.7 %endif +# For configure to find /usr/bin/prte +BuildRequires: prrte BuildRequires: prrte-devel BuildRequires: python%{python3_pkgversion}-devel %if %{with psm2} @@ -123,14 +124,21 @@ BuildRequires: libpsm2-devel BuildRequires: ucx-devel %endif BuildRequires: zlib-devel +%if !0%{?el7} BuildRequires: rpm-mpi-hooks +%endif %if %{with sphinx} # For docs BuildRequires: /usr/bin/sphinx-build +BuildRequires: python3-recommonmark BuildRequires: python3-sphinx_rtd_theme %endif Provides: mpi +%if 0%{?rhel} == 7 +# Need this for /etc/profile.d/modules.sh +Requires: environment-modules +%endif Requires: environment(modules) Requires: prrte # openmpi currently requires ssh to run @@ -154,18 +162,19 @@ 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 @@ -174,7 +183,6 @@ HTML documentation for openmpi. %if %{with java} %package java Summary: Java library -License: Apache-2.0 Requires: %{name} = %{version}-%{release} Requires: java-25-headless @@ -183,7 +191,6 @@ Java library. %package java-devel Summary: Java development files for openmpi -License: Apache-2.0 Requires: %{name}-java = %{version}-%{release} Requires: java-25-devel @@ -234,10 +241,12 @@ OpenMPI support for Python 3. --enable-memchecker \ %endif --with-hwloc=/usr \ +%if !0%{?el7} --with-libevent=external \ %if %{with pmix} --with-pmix=external \ %endif +%endif %make_build V=1 @@ -303,6 +312,7 @@ make check || ( cat test/*/test-suite.log && exit $fail ) %dir %{_libdir}/%{name}/bin %dir %{_libdir}/%{name}/lib %dir %{_libdir}/%{name}/lib/openmpi +%dir %{_libdir}/%{name}/lib/openmpi/cmake %dir %{_libdir}/%{name}/include %dir %{_mandir}/%{namearch} %dir %{_mandir}/%{namearch}/man* @@ -331,6 +341,9 @@ make check || ( cat test/*/test-suite.log && exit $fail ) %{_mandir}/%{namearch}/man7/Open-MPI.7* %{_libdir}/%{name}/lib/*.so.40* %{_libdir}/%{name}/lib/*.so.80* +%if 0%{?el7} +%{_libdir}/%{name}/lib/pmix/ +%endif %{_mandir}/%{namearch}/man1/mpirun.1* %{_mandir}/%{namearch}/man1/mpisync.1* %{_mandir}/%{namearch}/man1/ompi* @@ -343,6 +356,9 @@ make check || ( cat test/*/test-suite.log && exit $fail ) %dir %{_libdir}/%{name}/share/openmpi %{_libdir}/%{name}/share/openmpi/amca-param-sets %{_libdir}/%{name}/share/openmpi/help*.txt +%if 0%{?el7} +%{_libdir}/%{name}/share/pmix/ +%endif %files devel %dir %{_includedir}/%{namearch} diff --git a/sources b/sources index 34f655a..1083caf 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (openmpi-5.0.10.tar.bz2) = 24d29c2e88549e5a59f47dac0a2327db99644c59fd2991441d0ec23edb95aa7328fcd67bd44601ce9f11b0af90d36fddf82643e23f0f6e7c013c99f9bbd9738e +SHA512 (openmpi-5.0.8.tar.bz2) = de9128edaa1886f90f1452b8cee3c3962d7666beed96d7b95c601278c2debc7d7efecc9403792d428ce12131ce30416d6bc6bb657fb1a5490f53c6b6e369b080