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;
> }
>
>
>

Reply via email to