Я надеюсь, что кто-то может мне помочь. Я пишу в Fortran 90 с библиотеками MPI. Я пытаюсь читать файлы параллельно (с помощью функции Mpi_File_Read), но не могу. Вот простой код, который демонстрирует проблему:
program Read_And_Write
implicit none
include "mpif.h"
integer, parameter :: N = 16
integer :: i, this_proc, file_handle, error
integer :: read_data(N)
integer :: status(MPI_STATUS_SIZE)
character(len=13) :: file_name = 'one_array.dat'
! Start MPI run
call Mpi_Init(error)
call Mpi_Comm_Rank(MPI_COMM_WORLD, & ! integer comm
this_proc, & ! integer rank
error) ! integer error
! Create a file from one processor, hence "sequentially"
if(this_proc .eq. 0) then
open(9, file=file_name, form='unformatted')
do i = 1, N
write(9) i*N
end do
close(9)
end if
! Open the same file in MPI mode
call Mpi_File_Open(MPI_COMM_WORLD, & ! integer comm
file_name, & ! character filename(*)
MPI_MODE_RDONLY, & ! integer amode
MPI_INFO_NULL, & ! integer info
file_handle, & ! integer file handle
error) ! integer error
! Read the file in MPI mode
call Mpi_File_Read_All(file_handle, & ! integer file handle
read_data, & ! buffer
N, & ! integer count
MPI_INTEGER, & ! integer datatype
status, & ! integer status
error) ! integer error
! Write out what you got
do i = 1, N
print *, 'read: ', read_data(i)
end do
! End MPI run
call Mpi_Finalize(error)
end program
Любые намеки или идеи, что я здесь не так делаю?
Я использую gfortran 5.4.0 с MPICH 3.2 на Xubuntu 16.04.09
Спасибо