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
MpiFileBug.tar.gz
Description: GNU Zip compressed data