From c1eb839278fb88a1fb79fe0ce8d982b7fbb7cc451e23b7c6a5e51f8f3e53dbff Mon Sep 17 00:00:00 2001 From: Nicolas Morey Date: Sun, 25 Jan 2026 18:18:13 +0100 Subject: [PATCH] Update to v5.0.0 - ADI - MPID_Comm_get_lpid removed - MPID_Intercomm_exchange_map renamed to MPID_Intercomm_exchange and parameters now include tag, context_id, and will perform context_id exchange and lpid exchange. - CH4:OFI - added native RNDV feature - General - MPI_VERSION/MPI_SUBVERSION updated to 5 and 0. MPICH now supports the MPI 5.0 standard. - MPIR_CHKLMEM_ and MPIR_CHKPMEM_ macros are simplified - Rename MPIR_CVAR_DEBUG_PROGRESS_TIMEOUT to MPIR_CVAR_PROGRESS_TIMEOUT - MPICH now generates the MPI-IO bindings when ROMIO is build inside MPICH. - Yaksa is now maintained inside MPICH rather than as an external submodule. - Added internal builtin datatypes and external builtin datatypes are mapped to internal types - Removed MPIR_Find_{local,external}. Added in MPIR_Comm struct. - Use MPIR_Comm_get_{node,node_roots}_comm to obtain node_comm and node_roots_comm. - Added MPI_LOGICAL1, MPI_LOGICAL2, MPI_LOGICAL4, MPI_LOGICAL8, and MPI_LOGICAL16. - Added MPIX_BFLOAT16, and added software reduction support for MPIX_BFLOAT16 and MPIX_C_FLOAT16. - Reworked AVX and AVX512 support. - PMI 2 is now deprecated. Please consider switching to PMI 1. - PMI 2 thread support is removed. - PMI 1 upgraded to PMI 1.2, adding new API PMI_Barrier_group. - MPI_Session_init default to MPI_THREAD_MULTIPLE. Thread levels are global. - Internal collective interface replaces the last parameter "MPIR_Errflag_t errflag" with "int coll_attr". Signed-off-by: Nicolas Morey --- ...IDI_POSIX_mpi_release_gather_release.patch | 20 +-- mpich-4.3.2.tar.gz | 3 - mpich-5.0.0.tar.gz | 3 + mpich.changes | 34 +++++ mpich.spec | 5 +- romio-test-fix-bad-snprintf-arguments.patch | 124 ------------------ 6 files changed, 49 insertions(+), 140 deletions(-) delete mode 100644 mpich-4.3.2.tar.gz create mode 100644 mpich-5.0.0.tar.gz delete mode 100644 romio-test-fix-bad-snprintf-arguments.patch diff --git a/ch4-shm-fix-data-type-for-recv_bytes-in-MPIDI_POSIX_mpi_release_gather_release.patch b/ch4-shm-fix-data-type-for-recv_bytes-in-MPIDI_POSIX_mpi_release_gather_release.patch index 282f867..52e5c4f 100644 --- a/ch4-shm-fix-data-type-for-recv_bytes-in-MPIDI_POSIX_mpi_release_gather_release.patch +++ b/ch4-shm-fix-data-type-for-recv_bytes-in-MPIDI_POSIX_mpi_release_gather_release.patch @@ -1,4 +1,4 @@ -commit 564c0affae6a79b3c99fce5717c402182d74daa1 +commit 7d1129bb636b97d03b36412015bc6cb2d085665e Author: Nicolas Morey Date: Sat Nov 8 23:34:58 2025 +0100 @@ -12,30 +12,30 @@ Date: Sat Nov 8 23:34:58 2025 +0100 Signed-off-by: Nicolas Morey diff --git src/mpid/ch4/shm/posix/release_gather/release_gather.h src/mpid/ch4/shm/posix/release_gather/release_gather.h -index ac966cb9772e..ff1308830d00 100644 +index e5e055f20b57..b49e1c84e65e 100644 --- src/mpid/ch4/shm/posix/release_gather/release_gather.h +++ src/mpid/ch4/shm/posix/release_gather/release_gather.h -@@ -121,7 +121,7 @@ MPL_STATIC_INLINE_PREFIX int MPIDI_POSIX_mpi_release_gather_release(void *local_ +@@ -124,7 +124,7 @@ MPL_STATIC_INLINE_PREFIX int MPIDI_POSIX_mpi_release_gather_release(void *local_ datatype, root, MPIR_BCAST_TAG, comm_ptr, &status); MPIR_ERR_CHECK(mpi_errno); - MPIR_Get_count_impl(&status, MPI_BYTE, &recv_bytes); + MPIR_Get_count_impl(&status, MPIR_BYTE_INTERNAL, &recv_bytes); - MPIR_Typerep_copy(bcast_data_addr, &recv_bytes, sizeof(int), + MPIR_Typerep_copy(bcast_data_addr, &recv_bytes, sizeof(MPI_Aint), MPIR_TYPEREP_FLAG_NONE); - /* It is necessary to copy the errflag as well to handle the case when non-root + /* It is necessary to copy the coll_attr as well to handle the case when non-root * becomes temporary root as part of compositions (or smp aware colls). These temp -@@ -146,7 +146,7 @@ MPL_STATIC_INLINE_PREFIX int MPIDI_POSIX_mpi_release_gather_release(void *local_ +@@ -149,7 +149,7 @@ MPL_STATIC_INLINE_PREFIX int MPIDI_POSIX_mpi_release_gather_release(void *local_ /* When error checking is enabled, place the datasize in shm_buf first, followed by the - * errflag, followed by the actual data with an offset of (2*cacheline_size) bytes from + * coll_attr, followed by the actual data with an offset of (2*cacheline_size) bytes from * the starting address */ - MPIR_Typerep_copy(bcast_data_addr, &count, sizeof(int), MPIR_TYPEREP_FLAG_NONE); + MPIR_Typerep_copy(bcast_data_addr, &count, sizeof(MPI_Aint), MPIR_TYPEREP_FLAG_NONE); - /* It is necessary to copy the errflag as well to handle the case when non-root + /* It is necessary to copy the coll_attr as well to handle the case when non-root * becomes root as part of compositions (or smp aware colls). These roots might * expect same data as other ranks but different from the actual root. So only -@@ -218,8 +218,9 @@ MPL_STATIC_INLINE_PREFIX int MPIDI_POSIX_mpi_release_gather_release(void *local_ +@@ -221,8 +221,9 @@ MPL_STATIC_INLINE_PREFIX int MPIDI_POSIX_mpi_release_gather_release(void *local_ * datasize is copied out from shm_buffer and compared against the count a rank was - * expecting. Also, the errflag is copied out. In case of mismatch mpi_errno is set. + * expecting. Also, the coll_attr is copied out. In case of mismatch mpi_errno is set. * Actual data starts after (2*cacheline_size) bytes */ - int recv_bytes, recv_errflag; - MPIR_Typerep_copy(&recv_bytes, bcast_data_addr, sizeof(int), MPIR_TYPEREP_FLAG_NONE); diff --git a/mpich-4.3.2.tar.gz b/mpich-4.3.2.tar.gz deleted file mode 100644 index 902dde0..0000000 --- a/mpich-4.3.2.tar.gz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:47d774587a7156a53752218c811c852e70ac44db9c502dc3f399b4cb817e3818 -size 37697007 diff --git a/mpich-5.0.0.tar.gz b/mpich-5.0.0.tar.gz new file mode 100644 index 0000000..2f65c4f --- /dev/null +++ b/mpich-5.0.0.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e9350e32224283e95311f22134f36c98e3cd1c665d17fae20a6cc92ed3cffe11 +size 37638722 diff --git a/mpich.changes b/mpich.changes index d15cfe4..df8200a 100644 --- a/mpich.changes +++ b/mpich.changes @@ -1,3 +1,37 @@ +------------------------------------------------------------------- +Sun Jan 25 18:12:49 UTC 2026 - Nicolas Morey + +- Update to v5.0.0 + - ADI + - MPID_Comm_get_lpid removed + - MPID_Intercomm_exchange_map renamed to MPID_Intercomm_exchange + and parameters now include tag, context_id, and will + perform context_id exchange and lpid exchange. + - CH4:OFI + - added native RNDV feature + - General + - MPI_VERSION/MPI_SUBVERSION updated to 5 and 0. + MPICH now supports the MPI 5.0 standard. + - MPIR_CHKLMEM_ and MPIR_CHKPMEM_ macros are simplified + - Rename MPIR_CVAR_DEBUG_PROGRESS_TIMEOUT to MPIR_CVAR_PROGRESS_TIMEOUT + - MPICH now generates the MPI-IO bindings when ROMIO is build inside MPICH. + - Yaksa is now maintained inside MPICH rather than as an external submodule. + - Added internal builtin datatypes and external builtin datatypes are mapped to internal types + - Removed MPIR_Find_{local,external}. Added in MPIR_Comm struct. + - Use MPIR_Comm_get_{node,node_roots}_comm to obtain node_comm and node_roots_comm. + - Added MPI_LOGICAL1, MPI_LOGICAL2, MPI_LOGICAL4, MPI_LOGICAL8, and MPI_LOGICAL16. + - Added MPIX_BFLOAT16, and added software reduction support for + MPIX_BFLOAT16 and MPIX_C_FLOAT16. + - Reworked AVX and AVX512 support. + - PMI 2 is now deprecated. Please consider switching to PMI 1. + - PMI 2 thread support is removed. + - PMI 1 upgraded to PMI 1.2, adding new API PMI_Barrier_group. + - MPI_Session_init default to MPI_THREAD_MULTIPLE. Thread levels are global. + - Internal collective interface replaces the last parameter + "MPIR_Errflag_t errflag" with "int coll_attr". +- Refresh ch4-shm-fix-data-type-for-recv_bytes-in-MPIDI_POSIX_mpi_release_gather_release.patch +- Drop patch picked upstream romio-test-fix-bad-snprintf-arguments.patch + ------------------------------------------------------------------- Tue Nov 4 17:54:18 UTC 2025 - Nicolas Morey diff --git a/mpich.spec b/mpich.spec index 6752049..838d211 100644 --- a/mpich.spec +++ b/mpich.spec @@ -70,7 +70,7 @@ ExclusiveArch: do_not_build %define package_name %{pname}%{?pack_suff} Name: %{package_name}%{?testsuite:-testsuite} -Version: 4.3.2 +Version: 5.0.0 Release: 0 Summary: High-performance and widely portable implementation of MPI License: MIT @@ -83,8 +83,7 @@ Source100: _multibuild Source101: README.md Patch1: autogen-only-deal-with-json-yaksa-if-enabled.patch Patch2: autoconf-pull-dynamic-and-not-static-libs-from-pkg-config.patch -Patch3: romio-test-fix-bad-snprintf-arguments.patch -Patch4: ch4-shm-fix-data-type-for-recv_bytes-in-MPIDI_POSIX_mpi_release_gather_release.patch +Patch3: ch4-shm-fix-data-type-for-recv_bytes-in-MPIDI_POSIX_mpi_release_gather_release.patch BuildRoot: %{_tmppath}/%{name}-%{version}-build BuildRequires: fdupes diff --git a/romio-test-fix-bad-snprintf-arguments.patch b/romio-test-fix-bad-snprintf-arguments.patch deleted file mode 100644 index 40c0148..0000000 --- a/romio-test-fix-bad-snprintf-arguments.patch +++ /dev/null @@ -1,124 +0,0 @@ -commit 4da63a0032ea22d1530adf4da05a095d841bc969 -Author: Nicolas Morey -Date: Fri Aug 1 13:24:12 2025 +0200 - - romio: test: fix bad snprintf arguments - - Even though there can not be a buffer overflow as the string is properly - sized, noncontig_coll2 fails when built with -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=3 : - ---- - FAIL: noncontig_coll2 - ===================== - Thread 1 "noncontig_coll2" received signal SIGABRT, Aborted. - 0x00007ffff709c5fc in __pthread_kill_implementation () from /lib64/libc.so.6 - (gdb) bt - #0 0x00007ffff709c5fc in __pthread_kill_implementation () - from /lib64/libc.so.6 - #1 0x00007ffff7042106 in raise () from /lib64/libc.so.6 - #2 0x00007ffff702938b in abort () from /lib64/libc.so.6 - #3 0x00007ffff702a3ab in __libc_message_impl.cold () from /lib64/libc.so.6 - #4 0x00007ffff712b4fb in __fortify_fail () from /lib64/libc.so.6 - #5 0x00007ffff712adc6 in __chk_fail () from /lib64/libc.so.6 - #6 0x00007ffff712c8f5 in __snprintf_chk () from /lib64/libc.so.6 - #7 0x000000000040275e in snprintf (__s=0x4aafee "", __n=, - __fmt=0x404077 "%s,") at /usr/include/bits/stdio2.h:68 - #8 default_str (mynod=, len=61, array=0x59fca0, - dest=0x4aafd0 "hostname,") - at src/mpi/romio/test/noncontig_coll2.c:189 - #9 main (argc=, argv=) - at src/mpi/romio/test/noncontig_coll2.c:330 - ---- - This is due to the len parameter of snprintf not being updated as we - advance in the string. - Fix this issue by introducing a remaining len var that contains the exact amount - of bytes left. - - Signed-off-by: Nicolas Morey - -diff --git src/mpi/romio/test/noncontig_coll2.c src/mpi/romio/test/noncontig_coll2.c -index 2b37d4749fc9..beade70c2388 100644 ---- src/mpi/romio/test/noncontig_coll2.c -+++ src/mpi/romio/test/noncontig_coll2.c -@@ -181,12 +181,14 @@ int cb_gather_name_array(MPI_Comm comm, ADIO_cb_name_array * arrayp) - void default_str(int mynod, int len, ADIO_cb_name_array array, char *dest) - { - char *ptr; -- int i, p; -+ int i, p, rlen; - if (!mynod) { - ptr = dest; -+ rlen = len; - for (i = 0; i < array->namect; i++) { -- p = snprintf(ptr, len, "%s,", array->names[i]); -+ p = snprintf(ptr, rlen, "%s,", array->names[i]); - ptr += p; -+ rlen = rlen - p; - } - /* chop off that last comma */ - dest[strlen(dest) - 1] = '\0'; -@@ -197,12 +199,14 @@ void default_str(int mynod, int len, ADIO_cb_name_array array, char *dest) - void reverse_str(int mynod, int len, ADIO_cb_name_array array, char *dest) - { - char *ptr; -- int i, p; -+ int i, p, rlen; - if (!mynod) { - ptr = dest; -- for (i = (array->namect - 1); i >= 0; i--) { -- p = snprintf(ptr, len, "%s,", array->names[i]); -+ rlen = len; -+ for (i = (array->namect - 1); i >= 0; i--) { -+ p = snprintf(ptr, rlen, "%s,", array->names[i]); - ptr += p; -+ rlen = rlen - p; - } - dest[strlen(dest) - 1] = '\0'; - } -@@ -212,18 +216,21 @@ void reverse_str(int mynod, int len, ADIO_cb_name_array array, char *dest) - void reverse_alternating_str(int mynod, int len, ADIO_cb_name_array array, char *dest) - { - char *ptr; -- int i, p; -+ int i, p, rlen; - if (!mynod) { - ptr = dest; -+ rlen = len; - /* evens */ - for (i = (array->namect - 1); i >= 0; i -= 2) { -- p = snprintf(ptr, len, "%s,", array->names[i]); -+ p = snprintf(ptr, rlen, "%s,", array->names[i]); - ptr += p; -+ rlen = rlen - p; - } - /* odds */ - for (i = (array->namect - 2); i > 0; i -= 2) { -- p = snprintf(ptr, len, "%s,", array->names[i]); -+ p = snprintf(ptr, rlen, "%s,", array->names[i]); - ptr += p; -+ rlen = rlen - p; - } - dest[strlen(dest) - 1] = '\0'; - } -@@ -233,16 +240,19 @@ void reverse_alternating_str(int mynod, int len, ADIO_cb_name_array array, char - void simple_shuffle_str(int mynod, int len, ADIO_cb_name_array array, char *dest) - { - char *ptr; -- int i, p; -+ int i, p, rlen; - if (!mynod) { - ptr = dest; -+ rlen = len; - for (i = (array->namect / 2); i < array->namect; i++) { -- p = snprintf(ptr, len, "%s,", array->names[i]); -+ p = snprintf(ptr, rlen, "%s,", array->names[i]); - ptr += p; -+ rlen = rlen - p; - } - for (i = 0; i < (array->namect / 2); i++) { -- p = snprintf(ptr, len, "%s,", array->names[i]); -+ p = snprintf(ptr, rlen, "%s,", array->names[i]); - ptr += p; -+ rlen = rlen - p; - } - dest[strlen(dest) - 1] = '\0'; - } -- 2.51.1