-
Notifications
You must be signed in to change notification settings - Fork 908
Description
Background information
My understanding is that external32 should write integer values in big-endian format, but it seems to be writing in little-endian format instead. I will attach a test case that writes a series of MPI_UINT64_T values to two files: one in "native" data representation and one in "external32". Running hexdump on the resulting file shows that both appear to store those values in little-endian representation.
What version of Open MPI are you using? (e.g., v1.10.3, v2.1.0, git branch name and hash, etc.)
Open MPI 3.0.1
Describe how Open MPI was installed (e.g., from a source/distribution tarball, from a git clone, from an operating system distribution package, etc.)
Installed from v3.0.1 distribution tarball.
Please describe the system on which you are running
- Operating system/version: RHEL 7.5
- Computer hardware: Intel(R) Xeon(R) CPU E5-2695 v4
- Network type: Intel Omni-path
Details of the problem
I am trying to debug some data format issues with a different MPI library, which got me testing the difference between “native” and “external32” data representations. I wrote a program that writes 4 consecutive MPI_UINT64_T values to a file in both formats. According to the standard external32 should be using big-endian in the file, but it looks to me like it’s using little-endian instead. This is with Open MPI 3.0.1 on an machine with Intel processors. The sequence of MPI_UINT64_T values the test case writes is {1, 2, 3, 4}.
>>: hexdump -C openmpi/testfile_ext32
00000000 01 00 00 00 00 00 00 00 02 00 00 00 00 00 00 00 |................|
00000010 03 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 |................|
This looks to be little-endian format.