PROGRAM TEST USE MPI IMPLICIT NONE INTEGER, DIMENSION(50,50) :: locala INTEGER :: ierr,rank,nprocs,i,j INTEGER, DIMENSION(MPI_STATUS_SIZE) :: status INTEGER, DIMENSION(2) :: gsizes, distribs, dargs, psizes INTEGER :: mpifiletype, fh INTEGER (kind=MPI_OFFSET_KIND) :: offset call MPI_INIT(ierr) call MPI_COMM_RANK(MPI_COMM_WORLD, rank, ierr) call MPI_COMM_SIZE(MPI_COMM_WORLD, nprocs, ierr) gsizes = (/ 100,100 /) distribs = (/ MPI_DISTRIBUTE_BLOCK , MPI_DISTRIBUTE_BLOCK /) dargs = (/ MPI_DISTRIBUTE_DFLT_DARG , MPI_DISTRIBUTE_DFLT_DARG /) psizes = (/ 2, 2 /) FORALL(i=1:50,j=1:50) locala(i,j) = rank * 100000 + i*1000 + j END FORALL call MPI_Type_create_darray(4, rank, 2, gsizes, distribs, dargs,& psizes, MPI_ORDER_FORTRAN, MPI_INTEGER, mpifiletype,ierr); call MPI_Type_commit(mpifiletype,ierr); call MPI_File_open(MPI_COMM_WORLD, "datafile_f", MPI_MODE_CREATE + MPI_MODE_WRONLY, MPI_INFO_NULL, fh, ierr); offset = 0 call MPI_File_set_view(fh, offset, MPI_INTEGER, mpifiletype, "native", MPI_INFO_NULL, ierr); call MPI_File_write_all(fh, locala, 2500, MPI_INTEGER, status, ierr); call MPI_File_close(fh,ierr); call MPI_FINALIZE(ierr) END PROGRAM TEST