From 31165b13c779c80b31ed6bf8eaa804a2d5421e15847cc092ddbd6dd9d733df01 Mon Sep 17 00:00:00 2001 From: Nicolas Morey Date: Thu, 5 Sep 2024 07:58:19 +0000 Subject: [PATCH] - Add test-datatype-partial.c-fix-compiler-warnings.patch to fix testuite compilation with GCC >= 14 OBS-URL: https://build.opensuse.org/package/show/science:HPC/openmpi4?expand=0&rev=38 --- .gitattributes | 23 + .gitignore | 1 + _multibuild | 6 + _service | 17 + ...dd-VF-support-for-ConnectX-4-5-and-6.patch | 39 + macros.hpc-openmpi | 21 + mpivars.csh | 15 + mpivars.sh | 31 + openmpi-4.1.6.0.439b23db6288.tar.bz2 | 3 + openmpi4-C99.diff | 96 +++ openmpi4-rpmlintrc | 9 + openmpi4.changes | 378 +++++++++ openmpi4.spec | 793 ++++++++++++++++++ ...d-mpir-add-version-to-shared-library.patch | 22 + ...type-partial.c-fix-compiler-warnings.patch | 80 ++ 15 files changed, 1534 insertions(+) create mode 100644 .gitattributes create mode 100644 .gitignore create mode 100644 _multibuild create mode 100644 _service create mode 100644 btl-openib-Add-VF-support-for-ConnectX-4-5-and-6.patch create mode 100644 macros.hpc-openmpi create mode 100644 mpivars.csh create mode 100644 mpivars.sh create mode 100644 openmpi-4.1.6.0.439b23db6288.tar.bz2 create mode 100644 openmpi4-C99.diff create mode 100644 openmpi4-rpmlintrc create mode 100644 openmpi4.changes create mode 100644 openmpi4.spec create mode 100644 orted-mpir-add-version-to-shared-library.patch create mode 100644 test-datatype-partial.c-fix-compiler-warnings.patch diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..9b03811 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,23 @@ +## Default LFS +*.7z filter=lfs diff=lfs merge=lfs -text +*.bsp filter=lfs diff=lfs merge=lfs -text +*.bz2 filter=lfs diff=lfs merge=lfs -text +*.gem filter=lfs diff=lfs merge=lfs -text +*.gz filter=lfs diff=lfs merge=lfs -text +*.jar filter=lfs diff=lfs merge=lfs -text +*.lz filter=lfs diff=lfs merge=lfs -text +*.lzma filter=lfs diff=lfs merge=lfs -text +*.obscpio filter=lfs diff=lfs merge=lfs -text +*.oxt filter=lfs diff=lfs merge=lfs -text +*.pdf filter=lfs diff=lfs merge=lfs -text +*.png filter=lfs diff=lfs merge=lfs -text +*.rpm filter=lfs diff=lfs merge=lfs -text +*.tbz filter=lfs diff=lfs merge=lfs -text +*.tbz2 filter=lfs diff=lfs merge=lfs -text +*.tgz filter=lfs diff=lfs merge=lfs -text +*.ttf filter=lfs diff=lfs merge=lfs -text +*.txz filter=lfs diff=lfs merge=lfs -text +*.whl filter=lfs diff=lfs merge=lfs -text +*.xz filter=lfs diff=lfs merge=lfs -text +*.zip filter=lfs diff=lfs merge=lfs -text +*.zst filter=lfs diff=lfs merge=lfs -text diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..57affb6 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.osc diff --git a/_multibuild b/_multibuild new file mode 100644 index 0000000..825bf2e --- /dev/null +++ b/_multibuild @@ -0,0 +1,6 @@ + + standard + testsuite + gnu-hpc + gnu-hpc-testsuite + diff --git a/_service b/_service new file mode 100644 index 0000000..6241cdf --- /dev/null +++ b/_service @@ -0,0 +1,17 @@ + + + git + https://github.com/open-mpi/ompi.git + no + .git + openmpi + @PARENT_TAG@.@TAG_OFFSET@.%h + v(.*) + \1 + 439b23db6288f0370f6fcc80c8c0a06ad86d6873 + + + openmpi*.tar + bz2 + + diff --git a/btl-openib-Add-VF-support-for-ConnectX-4-5-and-6.patch b/btl-openib-Add-VF-support-for-ConnectX-4-5-and-6.patch new file mode 100644 index 0000000..cc7db16 --- /dev/null +++ b/btl-openib-Add-VF-support-for-ConnectX-4-5-and-6.patch @@ -0,0 +1,39 @@ +commit 034e90d7efb94011d7018266586588801c3afdbc +Author: Nicolas Morey-Chaisemartin +Date: Tue Sep 13 15:48:03 2022 +0200 + + btl: openib: Add VF support for ConnectX 4, 5 and 6 + + Signed-off-by: Nicolas Morey-Chaisemartin + +diff --git opal/mca/btl/openib/mca-btl-openib-device-params.ini opal/mca/btl/openib/mca-btl-openib-device-params.ini +index c46c303a35d5..b9949de235b8 100644 +--- opal/mca/btl/openib/mca-btl-openib-device-params.ini ++++ opal/mca/btl/openib/mca-btl-openib-device-params.ini +@@ -174,7 +174,7 @@ max_inline_data = 256 + + [Mellanox ConnectX4] + vendor_id = 0x2c9,0x5ad,0x66a,0x8f1,0x1708,0x03ba,0x15b3,0x119f +-vendor_part_id = 4115,4117 ++vendor_part_id = 4115,4116,4117,4118 + use_eager_rdma = 1 + mtu = 4096 + max_inline_data = 256 +@@ -183,7 +183,7 @@ max_inline_data = 256 + + [Mellanox ConnectX5] + vendor_id = 0x2c9,0x5ad,0x66a,0x8f1,0x1708,0x03ba,0x15b3,0x119f +-vendor_part_id = 4119,4121 ++vendor_part_id = 4119,4120,4121,4122 + use_eager_rdma = 1 + mtu = 4096 + max_inline_data = 256 +@@ -192,7 +192,7 @@ max_inline_data = 256 + + [Mellanox ConnectX6] + vendor_id = 0x2c9,0x5ad,0x66a,0x8f1,0x1708,0x03ba,0x15b3,0x119f +-vendor_part_id = 4123 ++vendor_part_id = 4123,4124 + use_eager_rdma = 1 + mtu = 4096 + max_inline_data = 256 diff --git a/macros.hpc-openmpi b/macros.hpc-openmpi new file mode 100644 index 0000000..f6d9650 --- /dev/null +++ b/macros.hpc-openmpi @@ -0,0 +1,21 @@ +# +# openmpi +# + +%hpc_openmpi_init(V:) \ + %{-V: %define _mf_ver %{-V*}} \ + %{expand: %%global hpc_openmpi_dep_version %%{?_mf_ver}%%{?!_mf_ver:3}} \ + %{expand: %%global hpc_openmpi_dir openmpi%{hpc_openmpi_dep_version}} \ + %{expand: %%global hpc_openmpi_pack_version %{hpc_openmpi_dep_version}} \ + %{expand: %%global _hpc_openmpi_modules openmpi} + +# We may have to add a version here. +%hpc_setup_openmpi \ + module load openmpi + +%hpc_openmpi_requires \ +Requires: libopenmpi%{hpc_openmpi_dep_version}-%{hpc_compiler_family}%{hpc_cf_pack_version}-hpc + +%hpc_openmpi_requires_devel \ +Requires: openmpi%{hpc_openmpi_dep_version}-%{hpc_compiler_family}%{hpc_cf_pack_version}-hpc-devel + diff --git a/mpivars.csh b/mpivars.csh new file mode 100644 index 0000000..5c7f4a3 --- /dev/null +++ b/mpivars.csh @@ -0,0 +1,15 @@ +set -f path= ( prefix/bin $path ) + +if ($?MANPATH) then + if ( "$MANPATH" !~ *prefix/man* ) then + setenv MANPATH prefix/man:$MANPATH + endif +else + setenv MANPATH prefix/man: +endif + +if ($?LD_LIBRARY_PATH) then + setenv LD_LIBRARY_PATH libdir:$LD_LIBRARY_PATH +else + setenv LD_LIBRARY_PATH libdir +endif diff --git a/mpivars.sh b/mpivars.sh new file mode 100644 index 0000000..c8317da --- /dev/null +++ b/mpivars.sh @@ -0,0 +1,31 @@ +case $PATH in + *prefix/bin*) + true + ;; + *) + PATH=prefix/bin:$PATH +esac + + +case $MANPATH in + *prefix/share/man*) + true + ;; + *) + MANPATH=prefix/share/man:$MANPATH + export MANPATH +esac + + +case $LD_LIBRARY_PATH in + *libdir*) + true + ;; + *) + if [ -z "$LD_LIBRARY_PATH" ]; then + LD_LIBRARY_PATH=libdir + else + LD_LIBRARY_PATH="libdir:$LD_LIBRARY_PATH" + fi + export LD_LIBRARY_PATH +esac diff --git a/openmpi-4.1.6.0.439b23db6288.tar.bz2 b/openmpi-4.1.6.0.439b23db6288.tar.bz2 new file mode 100644 index 0000000..1aed49a --- /dev/null +++ b/openmpi-4.1.6.0.439b23db6288.tar.bz2 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:10610ab832942c763acc2dd31a8eb3cb8da3e1f36b57a7971857b0bf625e6d4a +size 6564781 diff --git a/openmpi4-C99.diff b/openmpi4-C99.diff new file mode 100644 index 0000000..3865b4f --- /dev/null +++ b/openmpi4-C99.diff @@ -0,0 +1,96 @@ +--- ./opal/mca/pmix/pmix3x/pmix/src/hwloc/hwloc.c~ 2023-09-25 20:20:09.000000000 +0000 ++++ ./opal/mca/pmix/pmix3x/pmix/src/hwloc/hwloc.c 2024-07-29 16:12:38.161908410 +0000 +@@ -48,7 +48,7 @@ + + #if HWLOC_API_VERSION >= 0x20000 + static size_t shmemsize = 0; +-static size_t shmemaddr; ++static uintptr_t shmemaddr; + static char *shmemfile = NULL; + static int shmemfd = -1; + +@@ -58,10 +58,10 @@ + pmix_hwloc_vm_map_kind_t *kindp); + static int use_hole(unsigned long holebegin, + unsigned long holesize, +- unsigned long *addrp, ++ uintptr_t *addrp, + unsigned long size); + static int find_hole(pmix_hwloc_vm_hole_kind_t hkind, +- size_t *addrp, ++ uintptr_t *addrp, + size_t size); + static int enough_space(const char *filename, + size_t space_req, +@@ -584,7 +584,7 @@ + + static int use_hole(unsigned long holebegin, + unsigned long holesize, +- unsigned long *addrp, ++ uintptr_t *addrp, + unsigned long size) + { + unsigned long aligned; +@@ -615,7 +615,7 @@ + } + + static int find_hole(pmix_hwloc_vm_hole_kind_t hkind, +- size_t *addrp, size_t size) ++ uintptr_t *addrp, size_t size) + { + unsigned long biggestbegin = 0; + unsigned long biggestsize = 0; +--- ./orte/mca/rtc/hwloc/rtc_hwloc.c~ 2023-09-25 20:20:09.000000000 +0000 ++++ ./orte/mca/rtc/hwloc/rtc_hwloc.c 2024-07-26 16:29:16.763923042 +0000 +@@ -67,7 +67,7 @@ + + #if HWLOC_API_VERSION >= 0x20000 + static size_t shmemsize = 0; +-static size_t shmemaddr; ++static uintptr_t shmemaddr; + static char *shmemfile = NULL; + static int shmemfd = -1; + +@@ -77,10 +77,10 @@ + orte_rtc_hwloc_vm_map_kind_t *kindp); + static int use_hole(unsigned long holebegin, + unsigned long holesize, +- unsigned long *addrp, ++ uintptr_t *addrp, + unsigned long size); + static int find_hole(orte_rtc_hwloc_vm_hole_kind_t hkind, +- size_t *addrp, ++ uintptr_t *addrp, + size_t size); + static int enough_space(const char *filename, + size_t space_req, +@@ -524,7 +524,7 @@ + + static int use_hole(unsigned long holebegin, + unsigned long holesize, +- unsigned long *addrp, ++ uintptr_t *addrp, + unsigned long size) + { + unsigned long aligned; +@@ -576,7 +576,7 @@ + } + + static int find_hole(orte_rtc_hwloc_vm_hole_kind_t hkind, +- size_t *addrp, size_t size) ++ uintptr_t *addrp, size_t size) + { + unsigned long biggestbegin = 0; + unsigned long biggestsize = 0; +--- ./ompi/mca/io/romio321/romio/adio/include/adio.h~ 2023-09-25 20:20:09.000000000 +0000 ++++ ./ompi/mca/io/romio321/romio/adio/include/adio.h 2024-07-29 15:40:10.597565427 +0000 +@@ -97,6 +97,9 @@ + #ifdef MPI_OFFSET_IS_INT + typedef int ADIO_Offset; + # define ADIO_OFFSET MPI_INT ++#elif __SIZEOF_SIZE_T__ == 4 ++ typedef long ADIO_Offset; ++# define ADIO_OFFSET MPI_LONG + #elif defined(HAVE_LONG_LONG_64) + typedef long long ADIO_Offset; + # ifdef HAVE_MPI_LONG_LONG_INT diff --git a/openmpi4-rpmlintrc b/openmpi4-rpmlintrc new file mode 100644 index 0000000..e8b2f4c --- /dev/null +++ b/openmpi4-rpmlintrc @@ -0,0 +1,9 @@ +# This line is mandatory to access the configuration functions +from Config import * + +addFilter("openmpi.*-config.* useless-provides") +addFilter("openmpi.*-devel.* shared-lib-calls-exit") +addFilter("openmpi.*-libs.* rpath-in-buildconfig") +addFilter("openmpi.*-libs.* shared-lib-calls-exit") +addFilter("openmpi.*-libs.* useless-provides") +addFilter("libopenmpi.* shlib-policy-name-error") diff --git a/openmpi4.changes b/openmpi4.changes new file mode 100644 index 0000000..ed3b14b --- /dev/null +++ b/openmpi4.changes @@ -0,0 +1,378 @@ +------------------------------------------------------------------- +Thu Sep 5 06:58:41 UTC 2024 - Nicolas Morey + +- Add test-datatype-partial.c-fix-compiler-warnings.patch to fix + testuite compilation with GCC >= 14 + +------------------------------------------------------------------- +Mon Jul 29 16:40:16 UTC 2024 - Martin Jambor + +- Add openmpi4-C99.diff to fix the most egregious type violations that + not only prevent building the standard flavor with GCC 14 opn i586 + but that are just bugs too. + +------------------------------------------------------------------- +Tue Jun 25 13:24:03 UTC 2024 - Nicolas Morey + +- Disable 32b builds of hpc flavours + +------------------------------------------------------------------- +Mon Feb 26 12:47:01 UTC 2024 - Dominique Leuenberger + +- Use %autosetup macro. Allows to eliminate the usage of deprecated + PatchN. + +------------------------------------------------------------------- +Tue Oct 10 09:44:40 UTC 2023 - Nicolas Morey + +- Drop %vers macro so that the Version tag can be parsed more easily + +------------------------------------------------------------------- +Mon Oct 2 07:35:01 UTC 2023 - Nicolas Morey + +- Update to 4.1.6: + - Update embedded PMIx to 3.2.5. + - Fix issue with buffered sends and MTL-based interfaces (Libfabric, + PSM, Portals). + - Add missing MPI_F_STATUS_SIZE to mpi.h. + - Update Fortran mpi module configure check to be more correct. + - Update to properly handle PMIx v>=4.2.3. + - Fix minor issues and add some minor performance optimizations with + OFI support. + - Support the "striping_factor" and "striping_unit" MPI_Info names + recomended by the MPI standard for parallel IO. + - Fixed some minor issues with UCX support. + - Minor optimization for 0-byte MPI_Alltoallw (i.e., make it a no-op). + +------------------------------------------------------------------- +Mon Aug 7 17:02:04 UTC 2023 - Nicolas Morey + +- Drop support for TrueScale (bsc#1212146) + +------------------------------------------------------------------- +Tue Jul 25 13:04:21 UTC 2023 - Nicolas Morey + +- Update to 4.1.5: + - Fix crash in one -sided applications for certain process layouts. + - Update embedded OpenPMIx to version 3.2.4 + - Backport patches to Libevent for CVE -2016 -10195, CVE -2016 -10196, and + CVE -2016 -10197. Note that Open MPI's internal libevent does not + use the impacted portions of the Libevent code base. + - SHMEM improvements: + - Fix initializer bugs in SHMEM interface. + - Fix unsigned type comparisons generating warnings. + - Fix use after clear issue in shmem_ds_reset. + - UCX improvements + - Fix memory registration bug that could occur when UCX was built + but not selected. + - Reduce overhead of add_procs with intercommunicators. + - Enable multi_send_nb by default. + - Call opal_progress while waiting for a UCX fence to complete. + - Fix data corruption bug in osc/rdma component. + - Fix overflow bug in alltoall collective + - Fix crash when displaying topology. + - Add some MPI_F_XXX constants that were missing from mpi.h. + - coll/ucc bug fixes. + +------------------------------------------------------------------- +Fri Sep 23 10:24:16 UTC 2022 - Nicolas Morey-Chaisemartin + +- Replace btl-openib-Add-VF-support-for-ConnectX-5-and-6.patch + by btl-openib-Add-VF-support-for-ConnectX-4-5-and-6.patch to add ConnectX4 VF suppor + +------------------------------------------------------------------- +Thu Sep 8 09:32:41 UTC 2022 - Nicolas Morey-Chaisemartin + +- Enable libfabric on all arch +- Switch to external libevent for all flavors +- Switch to external hwloc and PMIx for HPC builds +- Update rpmlintrc file to ignore missing libname suffix in libopenmpi packages +- Add patch btl-openib-Add-VF-support-for-ConnectX-5-and-6.patch to support + ConnectX 5 and 6 VF + +------------------------------------------------------------------- +Wed Aug 3 08:18:34 UTC 2022 - Dirk Müller + +- update to 4.1.4: + * Fix possible length integer overflow in numerous non-blocking collective + operations. + * Fix segmentation fault in UCX if MPI Tool interface is finalized before + MPI_Init is called. + * Remove /usr/bin/python dependency in configure. + * Fix OMPIO issue with long double etypes. + * Update treematch topology component to fix numerous correctness issues. + * Fix memory leak in UCX MCA parameter registration. + * Fix long operation closing file descriptors on non-Linux systems that + can appear as a hang to users. + * Fix for attribute handling on GCC 11 due to pointer aliasing. + * Fix multithreaded race in UCX PML's datatype handling. + * Fix a correctness issue in CUDA Reduce algorithm. + * Fix compilation issue with CUDA GPUDirect RDMA support. + * Fix to make shmem_calloc(..., 0) conform to the OpenSHMEM specification. + * Add UCC collectives component. + * Fix divide by zero issue in OMPI IO component. + * Fix compile issue with libnl when not in standard search locations. + * Fixed a seg fault in the smcuda BTL. Thanks to Moritz Kreutzer and + @Stadik for reporting the issue. + * Added support for ELEMENTAL to the MPI handle comparison functions + in the mpi_f08 module. Thanks to Salvatore Filippone for raising + the issue. + * Minor datatype performance improvements in the CUDA-based code paths. + * Fix MPI_ALLTOALLV when used with MPI_IN_PLACE. + * Fix MPI_BOTTOM handling for non-blocking collectives. Thanks to + Lisandro Dalcin for reporting the problem. + * Enable OPAL memory hooks by default for UCX. + * Many compiler warnings fixes, particularly for newer versions of + GCC. + * Fix intercommunicator overflow with large payload collectives. Also + fixed MPI_REDUCE_SCATTER_BLOCK for similar issues with large payload + collectives. + * Back-port ROMIO 3.3 fix to use stat64() instead of stat() on GPFS. + * Fixed several non-blocking MPI collectives to not round fractions + based on float precision. + * Fix compile failure for --enable-heterogeneous. Also updated the + README to clarify that --enable-heterogeneous is functional, but + still not recomended for most environments. + * Minor fixes to OMPIO, including: + - Fixing the open behavior of shared memory shared file pointers. + Thanks to Axel Huebl for reporting the issue + - Fixes to clean up lockfiles when closing files. Thanks to Eric + Chamberland for reporting the issue. + * Update LSF configure failure output to be more clear (e.g., on RHEL + platforms). + * Update if_[in|ex]clude behavior in btl_tcp and oob_tcp to select + *all* interfaces that fall within the specified subnet range. + * ROMIO portability fix for OpenBSD + * Fix handling of MPI_IN_PLACE with MPI_ALLTOALLW and improve performance + of MPI_ALLTOALL and MPI_ALLTOALLV for MPI_IN_PLACE. + * Fix one-sided issue with empty groups in Post-Start-Wait-Complete + synchronization mode. + * Fix Fortran status returns in certain use cases involving + Generalized Requests + * Romio datatype bug fixes. + * Fix oshmem_shmem_finalize() when main() returns non-zero value. + * Fix wrong affinity under LSF with the membind option. + * Fix count==0 cases in MPI_REDUCE and MPI_IREDUCE. + * Fix ssh launching on Bourne-flavored shells when the user has "set + -u" set in their shell startup files. + * Correctly process 0 slots with the mpirun --host option. + * Ensure to unlink and rebind socket when the Open MPI session + directory already exists. + * Fix a segv in mpirun --disable-dissable-map. + * Fix a potential hang in the memory hook handling. + * Slight performance improvement in MPI_WAITALL when running in + MPI_THREAD_MULTIPLE. + * Fix hcoll datatype mapping and rooted operation behavior. + * Correct some operations modifying MPI_Status.MPI_ERROR when it is + disallowed by the MPI standard. + * UCX updates: + - Fix datatype reference count issues. + - Detach dynamic window memory when freeing a window. + - Fix memory leak in datatype handling. + * Fix various atomic operations issues. + * mpirun: try to set the curses winsize to the pty of the spawned + task. Thanks to Stack Overflow user @Seriously for reporting the + issue. + * PMIx updates: + - Fix compatibility with external PMIx v4.x installations. + - Fix handling of PMIx v3.x compiler/linker flags. Thanks to Erik + Schnetter for reporting the issue. + - Skip SLURM-provided PMIx detection when appropriate. Thanks to + Alexander Grund for reporting the issue. + * Fix handling by C++ compilers when they #include the STL "" + header file, which ends up including Open MPI's text VERSION file + (which is not C code). Thanks to @srpgilles for reporting the + issue. + * Fix MPI_Op support for MPI_LONG. + * Make the MPI C++ bindings library (libmpi_cxx) explicitly depend on + the OPAL internal library (libopen-pal). Thanks to Ye Luo for + reporting the issue. + * Fix configure handling of "--with-libevent=/usr". + * Fix memory leak when opening Lustre files. Thanks to Bert Wesarg + for submitting the fix. + * Fix MPI_SENDRECV_REPLACE to correctly process datatype errors. + Thanks to Lisandro Dalcin for reporting the issue. + * Fix MPI_SENDRECV_REPLACE to correctly handle large data. Thanks + Jakub Benda for reporting this issue and suggesting a fix. + * Add workaround for TCP "dropped connection" errors to drastically + reduce the possibility of this happening. + * OMPIO updates: + - Fix handling when AMODE is not set. Thanks to Rainer Keller for + reporting the issue and supplying the fix. + - Fix FBTL "posix" component linking issue. Thanks for Honggang Li + for reporting the issue. + - Fixed segv with MPI_FILE_GET_BYTE_OFFSET on 0-sized file view. + - Thanks to GitHub user @shanedsnyder for submitting the issue. + * OFI updates: + - Multi-plane / Multi-Nic nic selection cleanups + - Add support for exporting Open MPI memory monitors into + Libfabric. + - Ensure that Cisco usNIC devices are never selected by the OFI + MTL. + - Fix buffer overflow in OFI networking setup. Thanks to Alexander + Grund for reporting the issue and supplying the fix. + * Fix SSEND on tag matching networks. + * Fix error handling in several MPI collectives. + * Fix the ordering of MPI_COMM_SPLIT_TYPE. Thanks to Wolfgang + Bangerth for raising the issue. + * No longer install the orted-mpir library (it's an internal / Libtool + convenience library). Thanks to Andrew Hesford for the fix. + * PSM2 updates: + - Allow advanced users to disable PSM2 version checking. + - Fix to allow non-default installation locations of psm2.h. + +------------------------------------------------------------------- +Wed Apr 28 11:08:54 UTC 2021 - Nicolas Morey-Chaisemartin + +- openmpi4 is now the default openmpi for releases > 15.3 +- Add orted-mpir-add-version-to-shared-library.patch to fix unversionned library +- Change RPM macros install path to %{_rpmmacrodir} + +------------------------------------------------------------------- +Wed Apr 28 09:24:33 UTC 2021 - Nicolas Morey-Chaisemartin + +- Update to version 4.1.1 + - Fix a number of datatype issues, including an issue with + improper handling of partial datatypes that could lead to + an unexpected application failure. + - Change UCX PML to not warn about MPI_Request leaks during + MPI_FINALIZE by default. The old behavior can be restored with + the mca_pml_ucx_request_leak_check MCA parameter. + - Reverted temporary solution that worked around launch issues in + SLURM v20.11.{0,1,2}. SchedMD encourages users to avoid these + versions and to upgrade to v20.11.3 or newer. + - Updated PMIx to v3.2.2. + - Disabled gcc built-in atomics by default on aarch64 platforms. + - Disabled UCX PML when UCX v1.8.0 is detected. UCX version 1.8.0 has a bug that + may cause data corruption when its TCP transport is used in conjunction with + the shared memory transport. UCX versions prior to v1.8.0 are not affected by + this issue. Thanks to @ksiazekm for reporting the issue. + - Fixed detection of available UCX transports/devices to better inform PML + prioritization. + - Fixed SLURM support to mark ORTE daemons as non-MPI tasks. + - Improved AVX detection to more accurately detect supported + platforms. Also improved the generated AVX code, and switched to + using word-based MCA params for the op/avx component (vs. numeric + big flags). + - Improved OFI compatibility support and fixed memory leaks in error + handling paths. + - Improved HAN collectives with support for Barrier and Scatter. Thanks + to @EmmanuelBRELLE for these changes and the relevant bug fixes. + - Fixed MPI debugger support (i.e., the MPIR_Breakpoint() symbol). + Thanks to @louisespellacy-arm for reporting the issue. + - Fixed ORTE bug that prevented debuggers from reading MPIR_Proctable. + - Removed PML uniformity check from the UCX PML to address performance + regression. + - Fixed MPI_Init_thread(3) statement about C++ binding and update + references about MPI_THREAD_MULTIPLE. Thanks to Andreas Lösel for + bringing the outdated docs to our attention. + - Added fence_nb to Flux PMIx support to address segmentation faults. + - Ensured progress of AIO requests in the POSIX FBTL component to + prevent exceeding maximum number of pending requests on MacOS. + - Used OPAL's mutli-thread support in the orted to leverage atomic + operations for object refcounting. + - Fixed segv when launching with static TCP ports. + - Fixed --debug-daemons mpirun CLI option. + - Fixed bug where mpirun did not honor --host in a managed job + allocation. + - Made a managed allocation filter a hostfile/hostlist. + - Fixed bug to marked a generalized request as pending once initiated. + - Fixed external PMIx v4.x check. + - Fixed OSHMEM build with `--enable-mem-debug`. + - Fixed a performance regression observed with older versions of GCC when + __ATOMIC_SEQ_CST is used. Thanks to @BiplabRaut for reporting the issue. + - Fixed buffer allocation bug in the binomial tree scatter algorithm when + non-contiguous datatypes are used. Thanks to @sadcat11 for reporting the issue. + - Fixed bugs related to the accumulate and atomics functionality in the + osc/rdma component. + - Fixed race condition in MPI group operations observed with + MPI_THREAD_MULTIPLE threading level. + - Fixed a deadlock in the TCP BTL's connection matching logic. + - Fixed pml/ob1 compilation error when CUDA support is enabled. + - Fixed a build issue with Lustre caused by unnecessary header includes. + - Fixed a build issue with IMB LSF workload manager. + - Fixed linker error with UCX SPML. + +------------------------------------------------------------------- +Wed Mar 24 08:01:35 UTC 2021 - Egbert Eich + +- Update to version 4.1.0 + * collectives: Add HAN and ADAPT adaptive collectives components. + Both components are off by default and can be enabled by specifying + "mpirun --mca coll_adapt_priority 100 --mca coll_han_priority 100 ...". + We intend to enable both by default in Open MPI 5.0. + * OMPIO is now the default for MPI-IO on all filesystems, including + Lustre (prior to this, ROMIO was the default for Lustre). Many + thanks to Mark Dixon for identifying MPI I/O issues and providing + access to Lustre systems for testing. + * Minor MPI one-sided RDMA performance improvements. + * Fix hcoll MPI_SCATTERV with MPI_IN_PLACE. + * Add AVX support for MPI collectives. + * Updates to mpirun(1) about "slots" and PE=x values. + * Fix buffer allocation for large environment variables. Thanks to + @zrss for reporting the issue. + * Upgrade the embedded OpenPMIx to v3.2.2. + * Fix issue with extra-long values in MCA files. Thanks to GitHub + user @zrss for bringing the issue to our attention. + * UCX: Fix zero-sized datatype transfers. + * Fix --cpu-list for non-uniform modes. + * Fix issue in PMIx callback caused by missing memory barrier on Arm platforms. + * OFI MTL: Various bug fixes. + * Fixed issue where MPI_TYPE_CREATE_RESIZED would create a datatype + with unexpected extent on oddly-aligned datatypes. + * collectives: Adjust default tuning thresholds for many collective + algorithms + * runtime: fix situation where rank-by argument does not work + * Portals4: Clean up error handling corner cases + * runtime: Remove --enable-install-libpmix option, which has not + worked since it was added + * UCX: Allow UCX 1.8 to be used with the btl uct + * UCX: Replace usage of the deprecated NB API of UCX with NBX + * OMPIO: Add support for the IME file system + * OFI/libfabric: Added support for multiple NICs + * OFI/libfabric: Added support for Scalable Endpoints + * OFI/libfabric: Added btl for one-sided support + * OFI/libfabric: Multiple small bugfixes + * libnbc: Adding numerous performance-improving algorithms +- Removed: reproducible.patch - replaced by spec file settings. + +------------------------------------------------------------------- +Tue Sep 8 18:35:17 UTC 2020 - Nicolas Morey-Chaisemartin + +- Update to version 4.0.5 + - See NEWS for the detailled changelog + +------------------------------------------------------------------- +Thu Jun 11 08:42:56 UTC 2020 - Nicolas Morey-Chaisemartin + +- Update to version 4.0.4 + - See NEWS for the detailled changelog + +------------------------------------------------------------------- +Tue Jun 9 08:40:06 UTC 2020 - Nicolas Morey-Chaisemartin + +- Update to version 4.0.3 + - See NEWS for the detailled changelog + - Fixes compilation with UCX 1.8 +- Drop memory-patcher-fix-compiler-warning.patch which was merged upstream + +------------------------------------------------------------------- +Thu Mar 19 08:28:04 UTC 2020 - Nicolas Morey-Chaisemartin + +- Drop different package string between SLES and Leap + +------------------------------------------------------------------- +Wed Jan 15 09:05:14 UTC 2020 - Nicolas Morey-Chaisemartin + +- Add memory-patcher-fix-compiler-warning.patch to fix 64bit portability issues + +------------------------------------------------------------------- +Thu Oct 31 17:05:14 UTC 2019 - Nicolas Morey-Chaisemartin + +- Link against libnuma (bsc#1155120) + +------------------------------------------------------------------- +Thu Oct 24 14:40:07 UTC 2019 - Nicolas Morey-Chaisemartin + +- Initial version (4.0.2) +- Add reproducible.patch for reproducible builds. diff --git a/openmpi4.spec b/openmpi4.spec new file mode 100644 index 0000000..7106037 --- /dev/null +++ b/openmpi4.spec @@ -0,0 +1,793 @@ +# +# spec file +# +# Copyright (c) 2024 SUSE LLC +# Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana +# University Research and Technology +# Corporation. All rights reserved. +# Copyright (c) 2004-2005 The University of Tennessee and The University +# of Tennessee Research Foundation. All rights +# reserved. +# Copyright (c) 2004-2005 High Performance Computing Center Stuttgart, +# University of Stuttgart. All rights reserved. +# Copyright (c) 2004-2005 The Regents of the University of California. +# All rights reserved. +# Copyright (c) 2006-2016 Cisco Systems, Inc. All rights reserved. +# Copyright (c) 2013 Mellanox Technologies, Inc. +# All rights reserved. +# Copyright (c) 2015 Research Organization for Information Science +# and Technology (RIST). All rights reserved. +# Copyright (c) 2003, The Regents of the University of California, through +# Lawrence Berkeley National Laboratory (subject to receipt of any +# required approvals from the U.S. Dept. of Energy). All rights reserved. +# +# All modifications and additions to the file contributed by third parties +# remain the property of their copyright owners, unless otherwise agreed +# upon. The license for this file, and modifications and additions to the +# file, is the same license as for the pristine package itself (unless the +# license for the pristine package is not an Open Source License, in which +# case the license is the MIT License). An "Open Source License" is a +# license that conforms to the Open Source Definition (Version 1.9) +# published by the Open Source Initiative. + +# Please submit bugfixes or comments via https://bugs.opensuse.org/ +# + + +%global flavor @BUILD_FLAVOR@%{nil} + +# Static libraries are disabled by default +# for non HPC builds +# To enable them, simply uncomment: +# % define build_static_devel 1 + +%global pname openmpi +%define _vers 4_1_6 +%define m_f_ver 4 +%bcond_with ringdisabled + +%if "%flavor" == "" +ExclusiveArch: do_not_build + %{bcond_with hpc} + %define package_name %pname%{m_f_ver} +%else + # Trickery for OBS Staging. If _with_ringdisabled is set + # we only want to build the flavors required by other rings packages. + # Do not build any other ones + %if %{with ringdisabled} + %if "%flavor" != "standard" +ExclusiveArch: do_not_build + %endif + %endif + + %if "%flavor" == "standard" || "%flavor" == "testsuite" + %define package_name %{pname}%{m_f_ver} + %bcond_with hpc + %if "%flavor" == "testsuite" + %define testsuite 1 + %endif + %else + %bcond_without hpc +# Needs to be defined here to avoid hen/egg problem with test packages. + %define package_name %{pname}_%{_vers}-%{compiler_family}%{?c_f_ver}-hpc + %define build_static_devel 1 + %endif +%endif + +%if "%flavor" == "gnu-hpc" +%define compiler_family gnu +%undefine c_f_ver +%endif + +%if "%flavor" == "gnu7-hpc" +%define compiler_family gnu +%define c_f_ver 7 +%endif + +%if "%flavor" == "gnu-hpc-testsuite" +%define compiler_family gnu +%undefine c_f_ver +%define testsuite 1 +%endif + +%if "%flavor" == "gnu7-hpc-testsuite" +%define compiler_family gnu +%define c_f_ver 7 +%define testsuite 1 +%endif + +%if 0%{?suse_version} >= 1320 +%ifarch aarch64 %power64 x86_64 s390x +%define with_ucx 1 +%endif +%endif + +# Detect whether we are the default openMPI implemantation or not +%if "%{flavor}" == "standard" && (%{suse_version} > 1500 || 0%{?sle_version} > 150300) +%define default_openmpi 1 +%else +%define default_openmpi 0 +%endif + +%if %{with hpc} +%{!?compiler_family:%global compiler_family gnu} +%{hpc_init -M -c %compiler_family %{?c_f_ver:-v %{c_f_ver}} -m openmpi %{?mpi_f_ver:-V %{mpi_f_ver}}} + +%global hpc_openmpi_dep_version %(VER=%m_f_ver; echo -n ${VER}) +%global hpc_openmpi_dir openmpi%{hpc_openmpi_dep_version} +%global hpc_openmpi_pack_version %{hpc_openmpi_dep_version} +%{bcond_without pmix} +%{bcond_without hwloc} +ExcludeArch: i586 %arm s390 +%else +%{bcond_with pmix} +%{bcond_with hwloc} +%endif + +%define git_ver .0.439b23db6288 + +############################################################################# +# +# Preamble Section +# +############################################################################# + +Name: %{package_name}%{?testsuite:-testsuite} +Version: 4.1.6 +Release: 0 +Summary: An implementation of MPI/SHMEM (Version %{m_f_ver}) +License: BSD-3-Clause +Group: Development/Libraries/Parallel +URL: https://www.open-mpi.org/ +Source0: openmpi-%{version}%{git_ver}.tar.bz2 +Source2: openmpi4-rpmlintrc +Source3: macros.hpc-openmpi +Source4: mpivars.sh +Source5: mpivars.csh +Patch1: orted-mpir-add-version-to-shared-library.patch +Patch2: btl-openib-Add-VF-support-for-ConnectX-4-5-and-6.patch +Patch3: openmpi4-C99.diff +Patch4: test-datatype-partial.c-fix-compiler-warnings.patch +Provides: mpi +BuildRoot: %{_tmppath}/%{name}-%{version}-build +BuildRequires: autoconf +BuildRequires: automake +BuildRequires: fdupes +BuildRequires: flex +BuildRequires: hostname +BuildRequires: libevent-devel +BuildRequires: libfabric-devel +BuildRequires: libibumad-devel +BuildRequires: libibverbs-devel +BuildRequires: libtool +# net-tools is required to run hostname +BuildRequires: net-tools +%if 0%{?testsuite} +BuildArch: noarch +BuildRequires: %{package_name} = %{version} +%endif +%if 0%{?with_ucx} +BuildRequires: libucm-devel +BuildRequires: libucp-devel +BuildRequires: libucs-devel +BuildRequires: libuct-devel +%endif +%if %{with hwloc} +BuildRequires: hwloc-devel +%endif +%if %{with pmix} +BuildRequires: pmix-devel +%endif +%if %{without hpc} +BuildRequires: Modules +BuildRequires: gcc-c++ +BuildRequires: gcc-fortran +BuildRequires: mpi-selector +Requires: mpi-selector +Requires(preun):mpi-selector +Requires: %{package_name}-libs = %{version} +%else +BuildRequires: %{compiler_family}%{?c_f_ver}-compilers-hpc-macros-devel +BuildRequires: lua-lmod +BuildRequires: suse-hpc +%if 0%{!?testsuite:1} +Requires: lib%{package_name} = %{version} +%endif +%hpc_requires +%endif + +%ifarch x86_64 +BuildRequires: libnuma-devel +BuildRequires: libpsm2-devel +BuildRequires: numactl +%endif + +Requires: openmpi-runtime-config +Recommends: openmpi%{m_f_ver}-config +%if 0%{?default_openmpi} +Provides: openmpi = %{version} +%endif +# OpenMPI requires ssh (or rsh) to run even on a single host +# Force ssh to make sure the install works out of the box +Requires: openssh + +%if %{without hpc} +%define mpi_prefix %{_libdir}/mpi/gcc/openmpi%{m_f_ver} + +%define mpi_bindir %{mpi_prefix}/bin +%define mpi_libdir %{mpi_prefix}/%{_lib} +%define mpi_datadir %{mpi_prefix}/share +%define mpi_helpdir %{mpi_datadir}/%{pname}%{m_f_ver} +%define mpi_includedir %{mpi_prefix}/include +%define mpi_mandir %{mpi_prefix}/share/man +%else +%define mpi_prefix %hpc_prefix + +%define mpi_bindir %hpc_bindir +%define mpi_libdir %hpc_libdir +%define mpi_datadir %hpc_datadir +%define mpi_helpdir %{mpi_datadir}/openmpi +%define mpi_includedir %hpc_includedir +%define mpi_mandir %hpc_mandir + +%endif + +%description +%if 0%{?testsuite} +This package is just needed to run the testsuite and does not contain +anything interesting. +%else +OpenMPI is an implementation of the Message Passing Interface, a +standardized API typically used for parallel and/or distributed +computing. OpenMPI is the merged result of four prior implementations +where the team found for them to excel in one or more areas, +such as latency or throughput. + +OpenMPI also includes an implementation of the OpenSHMEM parallel +programming API, which is a Partitioned Global Address Space (PGAS) +abstraction layer providing inter-process communication using +one-sided communication techniques. + +This package provides general tools (mpirun, mpiexec, etc.) and the +Module Component Architecture (MCA) base and plugins necessary for +running Open MPI/OpenSHMEM version %{m_f_ver} jobs. +%endif + +%if 0%{!?testsuite:1} +%package %{!?with_hpc:libs}%{?with_hpc:-n lib%{name}} +Summary: OpenMPI runtime libraries for OpenMPI %{?with_hpc:HPC} version %{version} +Group: System/Libraries +Requires: %{name} = %{version} +%if 0%{?default_openmpi} +Provides: openmpi-libs = %{version} +%endif +%{?with_hpc:%hpc_requires} + +%description %{!?with_hpc:libs}%{?with_hpc:-n lib%{name}} +OpenMPI is an implementation of the Message Passing Interface, a +standardized API typically used for parallel and/or distributed +computing. OpenMPI is the merged result of four prior implementations +where the team found for them to excel in one or more areas, +such as latency or throughput. + +OpenMPI also includes an implementation of the OpenSHMEM parallel +programming API, which is a Partitioned Global Address Space (PGAS) +abstraction layer providing inter-process communication using +one-sided communication techniques. + +This package provides the Open MPI/OpenSHMEM version %{m_f_ver} +shared libraries. + +%package devel +Summary: SDK for openMPI %{?with_hpc:HPC} version %{version} +Group: Development/Libraries/Parallel +Requires: libibumad-devel +Requires: libibverbs-devel +%if %{without hpc} +Requires: libstdc++-devel +%if 0%{?default_openmpi} +Provides: openmpi-devel = %{version} +%endif +%else +%hpc_requires_devel +%endif +Requires: %{name} = %{version} + +%description devel +OpenMPI is an implementation of the Message Passing Interface, a +standardized API typically used for parallel and/or distributed +computing. OpenMPI is the merged result of four prior implementations +where the team found for them to excel in one or more areas, +such as latency or throughput. + +OpenMPI also includes an implementation of the OpenSHMEM parallel +programming API, which is a Partitioned Global Address Space (PGAS) +abstraction layer providing inter-process communication using +one-sided communication techniques. + +This package provides the development files for Open MPI/OpenSHMEM +version %{m_f_ver}, such as wrapper compilers and header files for +MPI/OpenSHMEM development. + +%package docs +Summary: Documentation for Open MPI/SHMEM %{?with_hpc:HPC} version %{version} +Group: Documentation/Man +Requires: %{name} = %{version} + +%description docs +OpenMPI is an implementation of the Message Passing Interface, a +standardized API typically used for parallel and/or distributed +computing. OpenMPI is the merged result of four prior implementations +where the team found for them to excel in one or more areas, +such as latency or throughput. + +OpenMPI also includes an implementation of the OpenSHMEM parallel +programming API, which is a Partitioned Global Address Space (PGAS) +abstraction layer providing inter-process communication using +one-sided communication techniques. + +This subpackage provides the documentation for Open MPI/OpenSHMEM. + +%package macros-devel +Summary: Macros for openMPI version %{version} +Group: Development/Libraries/Parallel +Requires: %{name}-devel = %{version} +# Make sure no two openmpi macro file can be installed at once +Provides: %{pname}-macros-provider = %{version} +Conflicts: otherproviders(%{pname}-macros-provider) +# Conflict (without providing) with the older openmpi-hpc-macros-devel flag +# to avoid issue with older packages +Conflicts: otherproviders(%{pname}-hpc-macros-devel) + +%if 0%{?default_openmpi} +Provides: openmpi-macros-devel = %{version} +%endif + +%description macros-devel +Macros for building RPM packages for OpenMPI version %{version}. + +%if 0%{?build_static_devel} +%package devel-static +Summary: Static libraries for openMPI %{?with_hpc:HPC} version %{version} +Group: Development/Libraries/Parallel +Requires: %{name}-devel = %{version} +%if 0%{?default_openmpi} +Provides: openmpi-devel-static = %{version} +%endif + +%description devel-static +OpenMPI is an implementation of the Message Passing Interface, a +standardized API typically used for parallel and/or distributed +computing. OpenMPI is the merged result of four prior implementations +where the team found for them to excel in one or more areas, +such as latency or throughput. + +This RPM contains the static library files, which are packaged separately from +the dynamic library and headers. +%endif + +%if %{without hpc} +%package -n %{pname}%{m_f_ver}-config +Summary: Runtime configuration files for openMPI %{?with_hpc:HPC} version %{version} +Group: Development/Libraries/Parallel +Provides: openmpi-runtime-config = %{version} +Conflicts: otherproviders(openmpi-runtime-config) +%if %{without pmix} +# OpenMPI4 is PMIx enabled +Provides: pmix-runtime-config = %{version} +Conflicts: otherproviders(pmix-runtime-config) +%endif + +%description -n %{pname}%{m_f_ver}-config +OpenMPI is an implementation of the Message Passing Interface, a +standardized API typically used for parallel and/or distributed +computing. OpenMPI is the merged result of four prior implementations +where the team found for them to excel in one or more areas, +such as latency or throughput. + +This RPM contains the configuration files for OpenMPI runtime (Version 3). +%endif + +%if %{with hpc} +%{hpc_master_package -L -a} +%{hpc_master_package -l} +%{hpc_master_package devel} +%{hpc_master_package docs} +%{hpc_master_package macros-devel} +%{hpc_master_package -a devel-static} +%endif # ?with_hpc +%endif # !testsuite + +%if "%(echo %version | tr '.' '_')" != "%_vers" +%{error: Fix _vers variable to match package version!} +%endif + +############################################################################# +# +# Prepatory Section +# +############################################################################# +%prep +echo FLAVOR %{flavor} +%if %{with hpc} +echo with HPC +%endif +%if %{without hpc} +echo without HPC +%endif +%autosetup -p0 -n openmpi-%{version}%{git_ver} + +%if %{without hpc} +cat > %{_sourcedir}/baselibs.conf < %{buildroot}%{mpi_bindir}/mpivars.sh +sed -e 's,prefix,%{mpi_prefix},g' -e 's,libdir,%{mpi_libdir},g' %{SOURCE5} \ + > %{buildroot}%{mpi_bindir}/mpivars.csh + +mkdir -p %{buildroot}%{_datadir}/modules/gnu-openmpi +cat << EOF > %{buildroot}%{_datadir}/modules/gnu-openmpi/%{version} +#%%Module +proc ModulesHelp { } { + global dotversion + puts stderr "\tLoads the gnu - openmpi %{version} Environment" +} + +module-whatis "Loads the gnu openmpi %{version} Environment." +conflict gnu-openmpi +prepend-path PATH %{mpi_bindir} +prepend-path INCLUDE %{mpi_includedir} +prepend-path INCLUDE %{mpi_libdir} +prepend-path MANPATH %{mpi_mandir} +prepend-path LD_LIBRARY_PATH %{mpi_libdir} + +EOF + +mkdir -p %{buildroot}%{_rpmmacrodir} +cat <%{buildroot}%{_rpmmacrodir}/macros.openmpi +# +# openmpi +# +%openmpi_prefix %{mpi_prefix} +%setup_openmpi source %{mpi_bindir}/mpivars.sh + +%openmpi_requires Requires: %{name}-libs +%openmpi_devel_requires Requires: %{name}-devel + +EOF +%else +%hpc_write_modules_files +#%%Module1.0##################################################################### + +proc ModulesHelp { } { + +puts stderr " " +puts stderr "This module loads the %{pname} library built with the %{compiler_family} toolchain." +puts stderr "\nVersion %{version}\n" + +} +module-whatis "Name: %{pname} built with %{compiler_family} toolchain" +module-whatis "Version: %{version}" +module-whatis "Category: runtime library" +module-whatis "Description: %{SUMMARY:0}" +module-whatis "URL: %{url}" + +set version %{version} + +setenv MPI_DIR %{hpc_mpi_install_path} +prepend-path PATH %{hpc_bindir} +prepend-path MANPATH %{hpc_mandir} +prepend-path LD_LIBRARY_PATH %{hpc_libdir} +prepend-path MODULEPATH %{hpc_modulepath} +%{hpc_modulefile_add_pkgconfig_path} + +family "MPI" +EOF +cat < %{buildroot}/%{mpi_bindir}/mpivars.sh +%hpc_setup_compiler +module load %{hpc_mpi_family}%{?pack_suff}/%{version} +EOF +sed -e "s/export/setenv/" -e "s/=/ /" \ + %{buildroot}/%{mpi_bindir}/mpivars.sh > \ + %{buildroot}/%{mpi_bindir}/mpivars.csh +mkdir -p %{buildroot}%{_rpmmacrodir} +mkdir -p %{buildroot}%{_rpmmacrodir} +cp %{S:3} %{buildroot}%{_rpmmacrodir} + +# Drop the files that should go into %{pname}-config as we only package them +# in the non HPC build +rm -f %{buildroot}%{_sysconfdir}/openmpi-default-hostfile +rm -f %{buildroot}%{_sysconfdir}/openmpi-mca-params.conf +rm -f %{buildroot}%{_sysconfdir}/openmpi-totalview.tcl +%if %{without pmix} +rm -f %{buildroot}%{_sysconfdir}/pmix-mca-params.conf +%endif +%endif + +%if %{without hpc} +%post +# Always register. We might be already registered in the case of an udate +# but mpi-selector handles it fine +/usr/bin/mpi-selector \ + --register %{name} \ + --source-dir %{mpi_bindir} \ + --yes + +%preun +# Only unregister when uninstalling +if [ "$1" = "0" ]; then + /usr/bin/mpi-selector --unregister %{name} --yes + # Deregister the default if we are uninstalling it + if [ "$(/usr/bin/mpi-selector --system --query)" = "%{name}" ]; then + /usr/bin/mpi-selector --system --unset --yes + fi +fi + +%post libs -p /sbin/ldconfig +%postun libs -p /sbin/ldconfig +%else #!?with_hpc +# make it default +%post -n lib%{name} -p /sbin/ldconfig +%postun -n lib%{name} -p /sbin/ldconfig + +%postun +%hpc_module_delete_if_default +%endif #!?with_hpc + +%files +%defattr(-, root, root) +%doc NEWS README +%license LICENSE +%dir %{mpi_prefix} +%dir %{mpi_bindir} +%dir %{mpi_libdir} +%dir %{mpi_datadir} +%dir %{mpi_mandir} +%{mpi_bindir}/mpivars.csh +%{mpi_bindir}/mpivars.sh + +%if %{without hpc} +%dir %{_libdir}/mpi +%dir %{_libdir}/mpi/gcc +%dir %{_datadir}/modules/gnu-openmpi +%{_datadir}/modules/gnu-openmpi/%{version} +%else # with hpc +%hpc_mpi_dirs +%hpc_modules_files +%endif # with hpc +# +%{mpi_bindir}/mpirun +%{mpi_bindir}/ompi-clean +%{mpi_bindir}/ompi-server +%{mpi_bindir}/ompi_info +%{mpi_bindir}/orte-clean +%{mpi_bindir}/orte-info +%{mpi_bindir}/orte-server +%{mpi_bindir}/orted +%{mpi_bindir}/orterun + +%if 0%{?with_ucx} +%{mpi_bindir}/oshmem_info +%{mpi_bindir}/oshrun +%{mpi_bindir}/shmemrun +%endif + +%if %{without hpc} +%{mpi_bindir}/aggregate_profile.pl +%{mpi_bindir}/profile2mat.pl +%endif + +%dir %{mpi_datadir}/openmpi +%dir %{mpi_datadir}/openmpi/amca-param-sets +%{mpi_datadir}/openmpi/amca-param-sets/btl-openib-benchmark +%{mpi_datadir}/openmpi/amca-param-sets/example.conf +%{mpi_datadir}/openmpi/mca-btl-openib-device-params.ini +%{mpi_datadir}/openmpi/*-data.txt +%{mpi_datadir}/openmpi/help-*.txt +%if %{without pmix} +%dir %{mpi_datadir}/pmix +%{mpi_datadir}/pmix/help-*.txt +%endif + +%files %{!?with_hpc:libs}%{?with_hpc:-n lib%{name}} +%defattr(-,root,root) +%dir %mpi_prefix/ +%dir %mpi_libdir/ +%mpi_libdir/*.so.* +%{mpi_libdir}/openmpi/*.so +%if %{without pmix} +%dir %mpi_libdir/pmix/ +%{mpi_libdir}/pmix/*.so +%endif + +%files devel +%defattr(-, root, root) +%dir %{mpi_libdir}/openmpi +%dir %{mpi_libdir}/pkgconfig +%{mpi_includedir} +%{mpi_libdir}/*.so +%{mpi_libdir}/pkgconfig/*.pc +%{mpi_libdir}/mpi.mod +%if 0%{?suse_version} >= 1320 +%{mpi_libdir}/mpi_f08*.mod +%{mpi_libdir}/pmpi_f08*.mod +%endif +%{mpi_bindir}/mpiCC +%{mpi_bindir}/mpic++ +%{mpi_bindir}/mpicc +%{mpi_bindir}/mpicxx +%{mpi_bindir}/mpiexec +%{mpi_bindir}/mpif77 +%{mpi_bindir}/mpif90 +%{mpi_bindir}/mpifort +%{mpi_bindir}/opal_wrapper +%{mpi_bindir}/ortecc +%if 0%{?with_ucx} +%{mpi_bindir}/oshcc +%{mpi_bindir}/oshCC +%{mpi_bindir}/oshc++ +%{mpi_bindir}/oshcxx +%{mpi_bindir}/oshfort +%{mpi_bindir}/shmemcc +%{mpi_bindir}/shmemCC +%{mpi_bindir}/shmemc++ +%{mpi_bindir}/shmemcxx +%{mpi_bindir}/shmemfort +%endif +%{mpi_datadir}/openmpi/openmpi-valgrind.supp +%if %{without pmix} +%{mpi_datadir}/pmix/pmix-valgrind.supp +%endif + +%files docs +%defattr(-, root, root, -) +%{mpi_mandir} + +%files macros-devel +%defattr(-,root,root,-) +%if %{with hpc} +%{_rpmmacrodir}/macros.hpc-openmpi +%else +%{_rpmmacrodir}/macros.openmpi +%endif + +%if 0%{?build_static_devel} +%files devel-static +%defattr(-, root, root) +%{mpi_libdir}/*.la +%{mpi_libdir}/openmpi/*.la +%{mpi_libdir}/*.a +%{mpi_libdir}/openmpi/*.a +%endif + +%if %{without hpc} +%files -n %{pname}%{m_f_ver}-config +%config %{_sysconfdir}/openmpi-default-hostfile +%config %{_sysconfdir}/openmpi-mca-params.conf +%if %{without pmix} +%config %{_sysconfdir}/pmix-mca-params.conf +%endif +%{_sysconfdir}/openmpi-totalview.tcl +%endif + +%endif # !?testsuite + +%changelog diff --git a/orted-mpir-add-version-to-shared-library.patch b/orted-mpir-add-version-to-shared-library.patch new file mode 100644 index 0000000..52ba5cb --- /dev/null +++ b/orted-mpir-add-version-to-shared-library.patch @@ -0,0 +1,22 @@ +commit bd2ceac4315c772e02cbb070e443d1acf2512da1 +Author: Andrew J. Hesford +Date: Thu Apr 29 15:13:23 2021 -0400 + + orted-mpir: add version to shared library + + Because orted-mpir is installed in the public library direrctory, it + should have a version. Assign the library libopen_rte_so_version to be + consistent with the rest of the RTE. + + Signed-off-by: Andrew J. Hesford + +diff --git orte/orted/orted-mpir/Makefile.am orte/orted/orted-mpir/Makefile.am +index 5c0dd335644a..8105dd4a6b83 100644 +--- orte/orted/orted-mpir/Makefile.am ++++ orte/orted/orted-mpir/Makefile.am +@@ -19,4 +19,4 @@ lib_LTLIBRARIES = lib@ORTE_LIB_PREFIX@open-orted-mpir.la + lib@ORTE_LIB_PREFIX@open_orted_mpir_la_SOURCES = \ + orted_mpir_breakpoint.c \ + orted_mpir.h +-lib@ORTE_LIB_PREFIX@open_orted_mpir_la_LDFLAGS = -avoid-version ++lib@ORTE_LIB_PREFIX@open_orted_mpir_la_LDFLAGS = -version-info $(libopen_rte_so_version) diff --git a/test-datatype-partial.c-fix-compiler-warnings.patch b/test-datatype-partial.c-fix-compiler-warnings.patch new file mode 100644 index 0000000..441b7d1 --- /dev/null +++ b/test-datatype-partial.c-fix-compiler-warnings.patch @@ -0,0 +1,80 @@ +commit e74008f6c67c104f1eb59c488e2c22c0302c87e0 +Author: Jeff Squyres +Date: Fri Nov 18 06:50:24 2022 -0500 + + test/datatype/partial.c: fix compiler warnings + + There are a bunch of other warnings in tests, but I was recently + working with a user in this specific test, and the warnings annoyed + me. So I fixed them in this test (but not other tests). + + Signed-off-by: Jeff Squyres + (cherry picked from commit 98abc08a6e2a0a4181a823c1b81a238964710240) + +diff --git test/datatype/partial.c test/datatype/partial.c +index c064db7193dd..15ea0cad7800 100644 +--- test/datatype/partial.c ++++ test/datatype/partial.c +@@ -5,6 +5,7 @@ + * reserved. + * Copyright (c) 2018 Triad National Security, LLC. All rights + * reserved. ++ * Copyright (c) 2022 Cisco Systems, Inc. All rights reserved. + * $COPYRIGHT$ + * + * Additional copyrights may follow +@@ -52,7 +53,7 @@ static void show_neighborhood(double* ptr, int how_many, bool show_hex) + printf("\n : "); + for( i = -how_many; i < how_many; i++ ) { + if( 0 == i ) printf(" <"); +- for( int j = 0; j < sizeof(double); j++ ) { ++ for( size_t j = 0; j < sizeof(double); j++ ) { + printf("%02x", cptr[i * sizeof(double)+j]); + } + if( 0 == i ) printf("> "); +@@ -71,7 +72,7 @@ static void show_neighborhood(double* ptr, int how_many, bool show_hex) + + int main( int argc, char* argv[] ) + { +- opal_datatype_t* vector; ++ ompi_datatype_t* vector; + ompi_datatype_t* base; + uint32_t iov_count; + size_t max_data, size, length; +@@ -88,13 +89,13 @@ int main( int argc, char* argv[] ) + ompi_datatype_create_vector(TYPE_COUNT, TYPE_BLEN, TYPE_STRIDE, MPI_DOUBLE, &base); + ompi_datatype_create_contiguous(CONT_COUNT, base, &vector); + +- opal_datatype_commit( vector ); ++ opal_datatype_commit(&vector->super); + + ompi_datatype_dump(vector); + +- opal_datatype_type_size(vector, &size); +- opal_datatype_type_extent(vector, &extent); +- opal_datatype_type_extent(base, &base_extent); ++ opal_datatype_type_size(&vector->super, &size); ++ opal_datatype_type_extent(&vector->super, &extent); ++ opal_datatype_type_extent(&base->super, &base_extent); + + array = (double*)malloc( extent * COUNT ); + packed = (double*)malloc( size * COUNT ); +@@ -113,7 +114,7 @@ int main( int argc, char* argv[] ) + * of the buffered operation. + */ + convertor = opal_convertor_create( opal_local_arch, 0 ); +- opal_convertor_prepare_for_recv( convertor, vector, COUNT, array ); ++ opal_convertor_prepare_for_recv(convertor, &vector->super, COUNT, array); + + for( length = 0; length < (size * COUNT); ) { + iov[0].iov_base = bpacked + length; +@@ -124,7 +125,8 @@ int main( int argc, char* argv[] ) + opal_convertor_unpack( convertor, iov, &iov_count, &max_data ); + length += max_data; + +- int idx = 0, checked = 0; ++ int idx = 0; ++ size_t checked = 0; + for( int m = 0; m < COUNT; m++ ) { + char* mptr = (char*)array + m * extent; + for( int k = 0; k < CONT_COUNT; k++ ) {