Skip to content

Commit 43524c4

Browse files
authored
Merge pull request #9811 from jsquyres/pr/heterogeneous-functionality-is-broken
README.md: make the heterogeneous support more clear
2 parents 9c12f2a + 0b0bae0 commit 43524c4

File tree

1 file changed

+21
-5
lines changed

1 file changed

+21
-5
lines changed

README.md

Lines changed: 21 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1502,11 +1502,27 @@ Additionally, if a search directory is specified in the form
15021502
Enable the PERUSE MPI data analysis interface.
15031503

15041504
* `--enable-heterogeneous`:
1505-
Enable support for running on heterogeneous clusters (e.g., machines
1506-
with different endian representations). Heterogeneous support is
1507-
disabled by default because it imposes a minor performance penalty.
1508-
1509-
***THIS FUNCTIONALITY IS CURRENTLY BROKEN - DO NOT USE***
1505+
Enable support for running on heterogeneous clusters where data
1506+
types are equivalent sizes across nodes, but may have differing
1507+
endian representations. Heterogeneous support is disabled by
1508+
default because it imposes a minor performance penalty.
1509+
1510+
Note that the MPI standard *does not guarantee that all
1511+
heterogeneous communication will function properly*, **especially
1512+
when the conversion between the different representations leads to
1513+
loss of accuracy or range.** For example, if a message with a
1514+
16-bit integer datatype is sent with value 0x10000 to a receiver
1515+
where the same integer datatype is only 8 bits, the value will be
1516+
truncated at the receiver. Similarly, problems can occur if a
1517+
floating point datatype in one MPI process uses X1 bits for its
1518+
mantissa and Y1 bits for its exponent, but the same floating point
1519+
datatype in another MPI process uses X2 and Y2 bits, respectively
1520+
(where X1 != X2 and/or Y1 != Y2). Type size differences like this
1521+
can lead to unexpected behavior.
1522+
1523+
Open MPI's heterogeneous support correctly handles endian
1524+
differences between datatype representations that are otherwise
1525+
compatible.
15101526

15111527
* `--with-wrapper-cflags=CFLAGS`
15121528
* `--with-wrapper-cxxflags=CXXFLAGS`

0 commit comments

Comments
 (0)