SHA256
6
0
forked from pool/mpich

Update to v5.0.0 #5

Manually merged
HPC merged 1 commits from NMorey/mpich:main into main 2026-02-07 04:45:50 +01:00
6 changed files with 49 additions and 140 deletions

View File

@@ -1,4 +1,4 @@
commit 564c0affae6a79b3c99fce5717c402182d74daa1
commit 7d1129bb636b97d03b36412015bc6cb2d085665e
Author: Nicolas Morey <nmorey@suse.com>
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 <nmorey@suse.com>
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);

Binary file not shown.

BIN
mpich-5.0.0.tar.gz LFS Normal file

Binary file not shown.

View File

@@ -1,3 +1,37 @@
-------------------------------------------------------------------
Sun Jan 25 18:12:49 UTC 2026 - Nicolas Morey <nmorey@suse.com>
- 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 <nicolas.morey@suse.com>

View File

@@ -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

View File

@@ -1,124 +0,0 @@
commit 4da63a0032ea22d1530adf4da05a095d841bc969
Author: Nicolas Morey <nmorey@suse.com>
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=<optimized out>,
__fmt=0x404077 "%s,") at /usr/include/bits/stdio2.h:68
#8 default_str (mynod=<optimized out>, len=61, array=0x59fca0,
dest=0x4aafd0 "hostname,")
at src/mpi/romio/test/noncontig_coll2.c:189
#9 main (argc=<optimized out>, argv=<optimized out>)
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 <nmorey@suse.com>
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';
}