Skip to content

Commit 7969166

Browse files
committed
Merge branch 'master-4.3.2' into 'master'
Vendor merge MPICH 4.3.2 Closes #101 and #78 See merge request parastation/psmpi!274
2 parents 8b4f035 + b9eec5a commit 7969166

File tree

1,515 files changed

+95997
-30186
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

1,515 files changed

+95997
-30186
lines changed

Makefile.in

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ SRCDIR := $(shell cd @srcdir@;pwd)
1313
export TOP_BUILDDIR:=@TOP_BUILDDIR@
1414
CONFSET:=@CONFSET@
1515
CUDA_SUPPORT:=@CUDA_SUPPORT@
16+
ENABLE_MPI_ABI:=@ENABLE_MPI_ABI@
1617
export TOP_SRCDIR = $(SRCDIR)
1718
export CONFIGARGS:=@CONFIGARGS@
1819
exec_prefix=@exec_prefix@
@@ -52,6 +53,11 @@ endif
5253
endif
5354
endif
5455

56+
MPI_ABI=""
57+
ifeq ($(ENABLE_MPI_ABI),true)
58+
MPI_ABI=--enable-mpi-abi ## Build tests with MPI ABI
59+
endif
60+
5561
ifndef MPIEXEC
5662
MPIEXEC=mpiexec
5763
endif
@@ -121,7 +127,7 @@ else
121127
( if command -v -- "$${MPIEXEC}" > /dev/null 2>&1; \
122128
then echo -n "INFO: mpiexec command: "; which $${MPIEXEC}; echo "INFO: mpiexec arguments: $${MPITEST_MPIEXECARG}"; \
123129
else echo "WARNING: $${MPIEXEC} does not seem to be valid command! Please adjust PATH or set MPIEXEC accordingly."; sleep 2; fi ); \
124-
( mkdir -p mpich2/test/mpi ; cd mpich2/test/mpi ; $(SRCDIR)/mpich2/test/mpi/configure --with-mpi=$(prefix) $(CUDA_TESTS) $(LARGE_TESTS)); \
130+
( mkdir -p mpich2/test/mpi ; cd mpich2/test/mpi ; $(SRCDIR)/mpich2/test/mpi/configure --with-mpi=$(prefix) $(CUDA_TESTS) $(LARGE_TESTS) $(MPI_ABI)); \
125131
( hostname; rpm -qi pscom; rpm -qi psmgmt; $(SRCDIR)/scripts/vcversion -r $(SRCDIR); \
126132
$(MAKE) -C mpich2/test/mpi testing "TESTLIST=$${TESTSETLIST}" $(TESTDIRLIST) && \
127133
cp $(TESTSUMMARY).xml $${_LOGNAME}.xml && \

configure.ac

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -602,6 +602,16 @@ if test -z "${CHANNEL_DEVICE}" ; then
602602
export MPICHLIB_CFLAGS="${MPICHLIB_CFLAGS} -DMPIR_CONTEXT_DYNAMIC_PROC_WIDTH=0"
603603
fi
604604

605+
AC_ARG_ENABLE(mpi-abi,
606+
AS_HELP_STRING([--enable-mpi-abi],
607+
[Enable building libmpi_abi.so]),
608+
[
609+
ENABLE_MPI_ABI="true"
610+
CONF_OPS="$CONF_OPS --enable-mpi-abi"
611+
],[
612+
ENABLE_MPI_ABI="false"
613+
])
614+
605615
# Check for OpenPMIx library
606616
openpmix_min_version=4.2.0
607617
openpmix_min_version_numeric="0x00040200"
@@ -756,6 +766,7 @@ test -n "$FCFLAGS" && CONF_OPS="$CONF_OPS 'FCFLAGS=$FCFLAGS'"
756766

757767
AC_SUBST([CONFSET])
758768
AC_SUBST([CUDA_SUPPORT])
769+
AC_SUBST([ENABLE_MPI_ABI])
759770
AC_SUBST([MODULEFILE])
760771
AC_SUBST([EXTRA_VERSION_INFO])
761772
AC_SUBST([CUDA_HOME])
@@ -831,6 +842,10 @@ fi
831842
if test "$ENABLE_PMIX" = "true" ; then
832843
conf_echo "PMIx support."
833844
fi
845+
echo "${CONF_ECHO_PREP_PHRASE}MPICH ABI support."
846+
if test "$ENABLE_MPI_ABI" = "true" ; then
847+
echo "${CONF_ECHO_PREP_PHRASE}MPI ABI support."
848+
fi
834849
if test "$ENABLE_STATISTICS" = "true" ; then
835850
conf_echo "support for statistics."
836851
fi

dist/Makefile.sources

Lines changed: 202 additions & 42 deletions
Large diffs are not rendered by default.

dist/psmpi.spec.templ

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111

1212
%{?_with_threading: %define threading yes}
1313
%{?_with_cuda: %define cuda 1}
14+
%{?_with_mpiabi: %define mpiabi 1}
1415
%{?_without_pmix: %define disable_pmix 1}
1516

1617
%{?_with_manpages: %define manpages 1}
@@ -20,7 +21,7 @@
2021

2122
Summary: ParaStation MPI
2223
Vendor: ParTec AG, Munich, Germany
23-
Name: psmpi%{?subname:-%{subname}}%{?threading:-mt}%{?cuda:-cuda}%{?disable_pmix:-nopmix}
24+
Name: psmpi%{?subname:-%{subname}}%{?threading:-mt}%{?cuda:-cuda}%{?mpiabi:-mpiabi}%{?disable_pmix:-nopmix}
2425
Version: @VERSION_psmpi@
2526
Release: @RELEASE_psmpi@
2627
License: QPL and mpich2/COPYRIGHT
@@ -47,7 +48,7 @@ BuildRequires: automake autoconf libtool
4748
%define _use_internal_dependency_generator 0
4849
%define __find_requires %_builddir/psmpi-%{version}-%{release}/dist/rpm_depgen
4950

50-
%define prefix /opt/parastation/mpi%{?subname:-%{subname}}%{?threading:-mt}%{?cuda:-cuda}
51+
%define prefix /opt/parastation/mpi%{?subname:-%{subname}}%{?threading:-mt}%{?cuda:-cuda}%{?mpiabi:-mpiabi}
5152
Prefix: %{prefix}
5253

5354

@@ -61,6 +62,7 @@ ParaStation MPI. Based on MPICH using the ParaStation communication library psco
6162
%{?threading: Threading support: MPI_THREAD_MULTIPLE}
6263
%{?cuda: CUDA awareness : YES}%{!?cuda: CUDA awareness : NO}
6364
%{!?disable_pmix: PMIx support : YES}%{?disable_pmix: PMIx support : NO}
65+
%{?mpiabi: MPICH ABI and MPI ABI support}%{!?mpiabi: MPICH ABI support }
6466
MPICH is a freely available, portable implementation of MPI, the Standard for message-passing libraries.
6567
http://www-unix.mcs.anl.gov/mpi/mpich/
6668

@@ -86,13 +88,14 @@ Build options (confset):
8688
additive options:
8789
"rpmbuild --with threading" Support for MPI_THREAD_MULTIPLE
8890
"rpmbuild --with cuda" Enable CUDA awareness
91+
"rpmbuild --with mpiabi" MPI ABI support in addition to MPICH ABI
8992
"rpmbuild --without pmix" Disable PMIx support
9093
"rpmbuild --with manpages" Include MPICH's man pages in doc package (build needs Sowing tools, see http://wgropp.cs.illinois.edu/projects/software/sowing/)
9194
9295
Optional overwrite subname (default to compiler confset):
9396
"rpmbuild --define='subname _any_subname_'"
9497
95-
Now using --with %{?confset:%{confset}}%{!?confset:default} %{?threading:--enable-threading} %{?cuda:--with-cuda} --with-pmix%{?disable_pmix:=no}
98+
Now using --with %{?confset:%{confset}}%{!?confset:default} %{?threading:--enable-threading} %{?cuda:--with-cuda} %{?mpiabi:--enable-mpi-abi} --with-pmix%{?disable_pmix:=no}
9699
subname: %{?subname:%{subname}}%{!?subname:<none>}
97100
=========================================================
98101
DOK
@@ -102,7 +105,7 @@ sleep 1
102105

103106
%build
104107
./autogen.sh
105-
%configure --with-confset=%{?confset:%{confset}}%{!?confset:default} %{?threading:--enable-threading} %{?cuda:--with-cuda} --with-pmix%{?disable_pmix:=no}
108+
%configure --with-confset=%{?confset:%{confset}}%{!?confset:default} %{?threading:--enable-threading} %{?cuda:--with-cuda} %{?mpiabi:--enable-mpi-abi} --with-pmix%{?disable_pmix:=no}
106109

107110
%make_build
108111

@@ -128,6 +131,7 @@ make mandoc
128131
%{_bindir}/mpif90
129132
%{_bindir}/mpifort
130133
%{_bindir}/mpivars
134+
%{_sysconfdir}/mpixxx_opts.conf
131135
%{_includedir}/mpi-ext.h
132136
%{_includedir}/mpi.h
133137
%{_includedir}/mpi.mod

doc/antora/modules/ROOT/pages/installation.adoc

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,10 @@ We recommend developers to use the `devel` confset for more error checking and d
9696
| disabled
9797
| Enable multi-thread support
9898

99+
| `--enable-mpi-abi`
100+
| disabled
101+
| Enable MPI ABI support (provides `libmpi_abi.so` and `mpicc_abi`/ `mpicxx_abi`)
102+
99103
| `--enable-hydra`
100104
| disabled
101105
| Enable build and installation of MPICH's process manager Hydra

mpich2/.gitignore

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -147,6 +147,10 @@ Makefile.am-stamp
147147
# random stuff
148148
/maint/gcovmerge
149149
/src/binding/cxx/buildiface-stamp
150+
/src/binding/abi/mpi_abi_internal.h
151+
/src/binding/abi/mpi_abi_util.c
152+
/src/binding/abi/c_binding_abi.c
153+
/src/mpi/romio/include/romio_abi_internal.h
150154

151155
# script-generated f90 test files
152156

@@ -583,7 +587,7 @@ Makefile.am-stamp
583587

584588
# /test/mpi/
585589
/test/mpi/libtool
586-
/test/mpi/coll/testlist.cvar
590+
/test/mpi/coll/testlist.collalgo
587591
/test/mpi/attr/testlist.dtp
588592
/test/mpi/pt2pt/testlist.dtp
589593
/test/mpi/coll/testlist.dtp

mpich2/CHANGES

Lines changed: 117 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -1,98 +1,169 @@
11
===============================================================================
2-
Changes in 4.2.3
2+
Changes in 4.3.2
33
===============================================================================
4+
# Improve libfabric provider selection when available providers have
5+
negative internal score
46

5-
# Update embedded libfabric to fix a build issue on FreeBSD
7+
# Improve error messages when Level Zero failures are detected
68

7-
# Fix HIP support for use with AMD GPUs
9+
# Improve localhost detection in Hydra
810

9-
# Fix potential invalid context issue in CUDA memory hooks
11+
# Update libfabric usage to silence deprecation warnings
1012

11-
# Fix GPU fallback path in ch4/ofi for Intel GPU buffers
13+
# Update yaksa for improved reproducibility in code generation
1214

13-
# Fix IPC handle destruction with Level Zero API (Intel GPU)
15+
# Update embedded UCX to v1.19.0
1416

15-
# Fix potential crash in MPI_ISENDRECV with derived datatypes
17+
# Update embedded libfabric to fix build issue with GCC 15
1618

17-
# Fix bug in persistent MPI_GATHER that incorrectly cached buffer
18-
contents at init time
19+
# Add compatibility with CUDA 13
1920

20-
# Fix memory allocation bug in ROMIO GPFS driver
21+
# Fix missing const in nondestructive request test and status query
22+
functions
2123

22-
# Fix missing error names in ch4/ofi netmod
24+
# Fix HCOLL support
2325

24-
# Fix potential hang in multi-VCI active message RMA
26+
# Fix crash with GPU-aware build when running on systems with no GPUs
2527

26-
# Fix bug in ch3 large count support with derived datatypes
28+
# Fix HIP device query
2729

28-
# Fix manpage generation to provide aliases for large-count versions
30+
# Fix singleton init with Hydra
2931

30-
# Fix potential crash in Hydra with long PMI command messages
32+
# Fix thread safety for Level Zero memcpy functions
3133

32-
# Fix bug in exit status capture in Hydra when there are multiple
33-
processes with non-zero exit
34+
# Fix potential crash when release gather collective initialization fails
3435

35-
# Fix implementation of C/Fortran status conversion functions
36+
# Fix ch3 connect/accept protocol handling when a discard event arrives
37+
after a connection is already established
3638

37-
# Fix implementation of MPI_Type_create_f90_xxx functions
39+
# Fix inlining for posix eager modules in ch4/shm
40+
41+
# Fix weak attribute usage in MPI ABI build
42+
43+
# Fix potential use-after-free bug in Hydra during spawn operations
44+
45+
# Fix bug in persistent bcast algorithm
46+
47+
# Fix bug in fabric coordinate retrieval with PMIx
48+
49+
# Fix integer overflow and signed/unsigned bugs in ROMIO
50+
51+
# Fix Quobtye ROMIO driver build error
52+
53+
# Fix broken string conversion in mpi_f08 module
54+
55+
# Fix compilation issue with mpi_f08 and NAG compiler
56+
57+
# Fixes for various test program bugs
3858

3959
===============================================================================
40-
Changes in 4.2.2
60+
Changes in 4.3.1
4161
===============================================================================
62+
# Fix initialization in GPU-aware builds when no devices are present
63+
64+
# Fix internal pmix.h header conflict when building with an external
65+
PMIx library.
66+
67+
# Fix build issue with Slurm by removing dependency on libslurm and
68+
always using internal logic for parsing the Slurm hostfile.
4269

43-
# Update embedded libfabric to v1.20.1 and fix compilation with GCC 14.
70+
# Fix potential stale GPU IPC handle usage resulting in data corruption
71+
or crashes
4472

45-
# Fix dataloop support for MPIX_Type_iov routines
73+
# Update XPMEM thresholds to avoid excessive buffer mapping overhead
4674

47-
# Fix crash in Hydra when system has many local ip addresses
75+
# Fix potential hang in ROMIO when setting info hints on certain files
4876

49-
# Fix RMA fallback check in ch4:ofi netmod
77+
# Improved detection of incompatible PMI[x] client/server configuration
5078

51-
# Fix MPI_UNDEFINED handling in mpi_f08 module
79+
# Fix use of PMIX_PREFIX attribute for certain versions of OpenPMIx
5280

53-
# Fix Slurm environment variable inheritance in Hydra
81+
# Fix Intel GPU output with MPIR_CVAR_DEBUG_SUMMARY
5482

55-
# Fix multiple issues with large count support in ROMIO
83+
# Fix F08 binding compilation with nvfortran
5684

57-
# Fix potential hang in init using PMIx client and nonstandard keys
85+
# Fix line continuation Hydra's --configfile option
5886

59-
# Fix crash if PMIx client cannot get appnum from server during init
87+
# Fix valgrind uninitialized read warnings in ch3
6088

61-
# Fix other build errors and warnings
89+
# Fix missing mpixxx_opts.conf file with help text for mpicc and friends
90+
91+
# Fixes for several compiler warnings
6292

6393
===============================================================================
64-
Changes in 4.2.1
94+
Changes in 4.3.0
6595
===============================================================================
96+
# Support MPI memory allocation kinds side document.
97+
98+
# Support MPI ABI Proposal. Configure with --enable-mpi-abi and build with
99+
mpicc_abi. By default, mpicc still builds and links with MPICH ABI.
100+
101+
# Experimental API MPIX_Op_create_x. It supports user callback function with
102+
extra_state context and op destructor callback. It supports language bindings
103+
to use proxy function for language-specific user callbacks.
104+
105+
# Experimental API MPIX_{Comm,File,Session,Win}_create_errhandler_x. They allow
106+
user error handlers to have extra_state context and corresponding destructor.
107+
This allows language bindings to implement user error handlers via proxy.
108+
109+
# Experimental API MPIX_Request_is_complete. This is a pure request state query
110+
function that will not invoke progress, nor will free the request. This should
111+
help applications that want separate task dependency checking from progress
112+
engine to avoid progress contentions, especially in multi-threaded context.
113+
It is also useful for tools to profile non-deterministic calls such as
114+
MPI_Test.
66115

67-
# Disable flat_namespace to build libmpifort on macOS by default
116+
# Experimental API MPIX_Async_start. This function let applications to inject
117+
progress hooks to MPI progress. It allows application to implement custom
118+
asynchronous operations that will be progressed by MPI. It avoids having to
119+
implement separate progress mechanisms that may either take additional
120+
resource or contend with MPI progress and negatively impact performance. It
121+
also allows applications to create custom MPI operations, such as MPI
122+
nonblocking collectives, and achieve near native performance.
68123

69-
# Prefix warning messages with "MPICH"
124+
# Added benchmark tests test/mpi/bench/p2p_{latency,bw}.
70125

71-
# Add --disable-doc configure option
126+
# Added CMA support in CH4 IPC.
72127

73-
# Fix support for building MPICH Fortran support with Xcode 15 on macOS
128+
# Added IPC read algorithm for intranode Allgather and Allgatherv.
74129

75-
# Fix bug in MPI_WIN_SHARED_QUERY when window is not shared
130+
# Added CVAR MPIR_CVAR_CH4_SHM_POSIX_TOPO_ENABLE to enable non-temporal memcpy
131+
for inter-numa shm communication.
76132

77-
# Fix bug in ch4/ofi gpu pipelining
133+
# Added CVAR MPIR_CVAR_DEBUG_PROGRESS_TIMEOUT for debugging MPI deadlock issues.
78134

79-
# Fixes for Intel GPU support
135+
# ch4:ucx now supports dynamic processes. MPI_Comm_spawn{_multiple} will work.
136+
MPI_Open_port will fail due to ucx port name exceeds current MPI_MAX_PORT_NAME
137+
of 256. One can work around by use an info hint "port_name_size" and use a
138+
larger port name buffer.
80139

81-
# Fix memory leak in ch4/shm collectives
140+
# PMI-1 defines PMI_MAX_PORT_NAME, which may be different from MPI_MAX_PORT_NAME.
141+
This is used by "PMI_Lookup_name". Consequently, MPI_Lookup_name accepts info
142+
hint "port_name_size" that may be larger than MPI_MAX_PORT_NAME. If the port
143+
name does not fit in "port_name_size", it will return a truncation error.
82144

83-
# Fix bug in MPI_COMM_SPLIT with intercommunicators and non-zero root
145+
# Autogen default to use -yaksa-depth=2.
84146

85-
# Fix bug in DAOS ROMIO driver
147+
# Default MPIR_CVAR_CH4_ROOTS_ONLY_PMI to on.
86148

87-
# Fix bug in cycling error code array
149+
# Added ch4 netmod API am_tag_send and am_tag_recv.
88150

89-
# Return an error if there is failure to create a datatype in mpi_f08
90-
module for noncontiguous user data
151+
# Added MPIR_CVAR_CH4_OFI_EAGER_THRESHOLD to force RNDV send mode.
91152

92-
# Return an error when shared memory segment creation fails
153+
# Make check target will run ROMIO tests.
154+
155+
# Add back handle conversion macros (f2c/c2f) to preserve ABI
156+
compatibility with older MPICH libraries
157+
158+
# Fix compilation issue with g++ in -std=gnu++20 mode
159+
160+
# Fix bug in MPI_ANY_SOURCE handling observed using the libfabric CXI
161+
provider
162+
163+
# Add NIC information to error messages in ch4:ofi netmod
93164

94165
===============================================================================
95-
Changes in 4.2.0
166+
Changes in 4.2
96167
===============================================================================
97168
# Complete support MPI 4.1 specification
98169

@@ -155,8 +226,6 @@
155226
decided at the October 2023 meeting that this was a mistake and will
156227
be removed in an erratum.
157228

158-
# Fix potential crash in GPU memory hooks
159-
160229

161230
===============================================================================
162231
Changes in 4.1

0 commit comments

Comments
 (0)