Hi

I think that the datatype extent for INTEGER4 is set incorrectly for files.

Attached is a small program that shows the problem.  The juicy bits:

  MPI_Aint extent;
  MPI_Type_extent(MPI_INTEGER, &extent);
  printf("MPI_Type_extent(MPI_INTEGER) == %d\n", extent);
  MPI_Type_extent(MPI_INTEGER4, &extent);
  printf("MPI_Type_extent(MPI_INTEGER4) == %d\n", extent);
// ...
  printf("f.Get_type_extent(MPI::INTEGER) == %d\n",
         f.Get_type_extent(MPI::INTEGER));
  printf("f.Get_type_extent(MPI::INTEGER4) == %d\n",
         f.Get_type_extent(MPI::INTEGER4));

The result is:

MPI_Type_extent(MPI_INTEGER) == 4
MPI_Type_extent(MPI_INTEGER4) == 4
f.Get_type_extent(MPI::INTEGER) == 4
f.Get_type_extent(MPI::INTEGER4) == 2

The program creates two files. This is the output when writing INTEGER values:

$ hexdump -C test.integer.dat
00000000  44 00 00 00 41 00 00 00  41 00 00 00 01 00 00 00  |D...A...A.......|
00000010  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|

And this is the output when writing INTEGER4 values:

$ hexdump -C test.integer4.dat
00000000  44 00 00 00 41 00 01 00  00 00 00 00 00 00 00 00  |D...A...........|
00000010  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|

Bests,
-- Manuel

Attachment: MpiFileBug.tar.gz
Description: GNU Zip compressed data

Reply via email to