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