Skip to content

Commit 89875d4

Browse files
authored
Add ABI support for HPE's MPT and HMPT implementations (#580)
* Add MPT constants file * Add detection mechanism for HPE MPT ABI * Add HPE MPT/HMPT to list of supported ABIs in the docs
1 parent 7e831e8 commit 89875d4

File tree

4 files changed

+363
-1
lines changed

4 files changed

+363
-1
lines changed

docs/src/configuration.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,7 @@ The following MPI implementations should work out-of-the-box with MPI.jl:
106106
- [MVAPICH](http://mvapich.cse.ohio-state.edu/)
107107
- [Cray MPICH](https://docs.nersc.gov/development/compilers/wrappers/)
108108
- [Fujitsu MPI](https://www.fujitsu.com/global/about/resources/publications/technicalreview/2020-03/article07.html#cap-03)
109+
- [HPE MPT/HMPT](https://support.hpe.com/hpesc/public/docDisplay?docLocale=en_US&docId=a00105727en_us)
109110

110111
If the implementation is changed, you will need to use [`MPI.use_system_binary()`](@ref MPIPreferences.use_system_binary)
111112
or [`MPI.use_jll_binary()`](@ref MPIPreferences.use_jll_binary).

lib/MPIPreferences/src/MPIPreferences.jl

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -222,32 +222,52 @@ function identify_abi(libmpi)
222222
if (m = match(r"CRAY MPICH version (\d+.\d+.\d+)", version_string)) !== nothing
223223
version = VersionNumber(m.captures[1])
224224
end
225+
225226
elseif startswith(version_string, "FUJITSU MPI")
226227
impl = "FujitsuMPI"
227228
# "FUJITSU MPI Library 4.0.0 (4.0.1fj4.0.0)\0"
228229
if (m = match(r"^FUJITSU MPI Library (\d+.\d+.\d+)", version_string)) !== nothing
229230
version = VersionNumber(m.captures[1])
230231
end
232+
231233
elseif startswith(version_string, "MPIwrapper")
232234
impl = "MPIwrapper"
233235
# MPIwrapper 2.2.2
234236
if (m = match(r"^MPIwrapper Version:\t(\d+.\d+.\d+\w*)", version_string)) !== nothing
235237
version = VersionNumber(m.captures[1])
236238
end
239+
240+
elseif startswith(version_string, "HPE MPT")
241+
impl = "HPE MPT"
242+
# HPE MPT 2.23 08/26/20 02:54:49-root
243+
if (m = match(r"^HPE MPT (\d+.\d+)", version_string)) !== nothing
244+
version = VersionNumber(m.captures[1])
245+
end
246+
247+
elseif startswith(version_string, "HPE HMPT")
248+
impl = "HPE HMPT"
249+
# HPE HMPT 2.23 08/26/20 02:59:48-root
250+
if (m = match(r"^HPE HMPT (\d+.\d+)", version_string)) !== nothing
251+
version = VersionNumber(m.captures[1])
252+
end
237253
end
254+
238255
# 3) determine the abi from the implementation + version
239256
if (impl == "MPICH" && version >= v"3.1" ||
240257
impl == "IntelMPI" && version > v"2014" ||
241258
impl == "MVAPICH" && version >= v"2" ||
242-
impl == "CrayMPICH" && version >= v"7")
259+
impl == "CrayMPICH" && version >= v"7" ||
243260
# https://www.mpich.org/abi/
261+
impl == "HPE HMPT")
244262
abi = "MPICH"
245263
elseif impl == "OpenMPI" || impl == "IBMSpectrumMPI" || impl == "FujitsuMPI"
246264
abi = "OpenMPI"
247265
elseif impl == "MicrosoftMPI"
248266
abi = "MicrosoftMPI"
249267
elseif impl == "MPIwrapper"
250268
abi = "MPItrampoline"
269+
elseif impl == "HPE MPT"
270+
abi = "HPE MPT"
251271
else
252272
abi = "unknown"
253273
end

src/consts/consts.jl

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,8 @@ elseif MPIPreferences.abi == "MicrosoftMPI"
3535
include("microsoftmpi.jl")
3636
elseif MPIPreferences.abi == "MPItrampoline"
3737
include("mpitrampoline.jl")
38+
elseif MPIPreferences.abi == "HPE MPT"
39+
include("mpt.jl")
3840
else
3941
error("Unknown MPI ABI $(MPIPreferences.abi)")
4042
end

0 commit comments

Comments
 (0)