Hi Gilles,
I can confirm that with a fresh download and build from source for OpenMPI
1.10.2
with --enable-heterogeneous
the unpacked ints are the wrong endian.

However, without --enable-heterogeneous, the unpacked ints are correct.

So, this problem still exists in heterogeneous builds with OpenMPI version
1.10.2.

kindest regards
Mike

On 11 February 2016 at 14:48, Gilles Gouaillardet <
gilles.gouaillar...@gmail.com> wrote:

> Michael,
>
> does your two systems have the same endianness ?
>
> do you know how openmpi was configure'd on both systems ?
> (is --enable-heterogeneous enabled or disabled on both systems ?)
>
> fwiw, openmpi 1.6.5 is old now and no more maintained.
> I strongly encourage you to use openmpi 1.10.2
>
> Cheers,
>
> Gilles
>
> On Thursday, February 11, 2016, Michael Rezny <michael.re...@monash.edu>
> wrote:
>
>> Hi,
>> I am running Ubuntu 14.04 LTS with OpenMPI 1.6.5 and gcc 4.8.4
>>
>> On a single rank program which just packs and unpacks two ints using
>> MPI_Pack_external and MPI_Unpack_external
>> the unpacked ints are in the wrong endian order.
>>
>> However, on a HPC, (not Ubuntu), using OpenMPI 1.6.5 and gcc 4.8.4 the
>> unpacked ints are correct.
>>
>> Is it possible to get some assistance to track down what is going on?
>>
>> Here is the output from the program:
>>
>>  ~/tests/mpi/Pack test1
>> send data 000004d2 0000162e
>> MPI_Pack_external: 0
>> buffer size: 8
>> MPI_unpack_external: 0
>> recv data d2040000 2e160000
>>
>> And here is the source code:
>>
>> #include <stdio.h>
>> #include <mpi.h>
>>
>> int main(int argc, char *argv[]) {
>>   int numRanks, myRank, error;
>>
>>   int send_data[2] = {1234, 5678};
>>   int recv_data[2];
>>
>>   MPI_Aint buffer_size = 1000;
>>   char buffer[buffer_size];
>>
>>   MPI_Init(&argc, &argv);
>>   MPI_Comm_size(MPI_COMM_WORLD, &numRanks);
>>   MPI_Comm_rank(MPI_COMM_WORLD, &myRank);
>>
>>   printf("send data %08x %08x \n", send_data[0], send_data[1]);
>>
>>   MPI_Aint position = 0;
>>   error = MPI_Pack_external("external32", (void*) send_data, 2, MPI_INT,
>>           buffer, buffer_size, &position);
>>   printf("MPI_Pack_external: %d\n", error);
>>
>>   printf("buffer size: %d\n", (int) position);
>>
>>   position = 0;
>>   error = MPI_Unpack_external("external32", buffer, buffer_size,
>> &position,
>>           recv_data, 2, MPI_INT);
>>   printf("MPI_unpack_external: %d\n", error);
>>
>>   printf("recv data %08x %08x \n", recv_data[0], recv_data[1]);
>>
>>   MPI_Finalize();
>>
>>   return 0;
>> }
>>
>>
>>
> _______________________________________________
> devel mailing list
> de...@open-mpi.org
> Subscription: http://www.open-mpi.org/mailman/listinfo.cgi/devel
> Link to this post:
> http://www.open-mpi.org/community/lists/devel/2016/02/18573.php
>

Reply via email to