У меня есть минимальный пример проблемы, когда я просто запускаю 4 процесса (на четырехъядерном процессоре Intel Core i7 c 8) и по какой-то причине MPI_Init
очень, очень долгое время.MPI_Init() занимает очень много времени для запуска
Вот мой код:
1 program smear_sfs
2
3 integer, parameter :: ikind = 4
4 integer, parameter :: rkind = 8
5
6 integer(kind = ikind) :: isize, iproc, ierr
7 integer(kind = ikind) :: i, j
8
9 include "mpif.h"
10 integer(kind = ikind) :: istat(MPI_STATUS_SIZE)
11
12 print*, 'Section 1'
13
14 ! initialize mpi
15 write(*, '(a)', advance='no'), 'Calling MPI_Init ...'
16 call MPI_Init(ierr)
17 write(*, '(a)') 'done'
18 print*, 'ierr = ', ierr
19 call MPI_Barrier(MPI_COMM_WORLD, ierr)
20 call MPI_Comm_Rank(MPI_COMM_WORLD, iproc, ierr)
21 call MPI_Comm_Size(MPI_COMM_WORLD, isize, ierr)
22 do i = 0,isize
23 call MPI_Barrier(MPI_COMM_WORLD, ierr)
24 if(iproc.eq.i) write(*, '(a, i3, a)') 'rank(', iproc, ') reporting'
25 call MPI_Barrier(MPI_COMM_WORLD, ierr)
26 enddo
27
28 ! shutdown MPI
29 call MPI_Barrier(MPI_COMM_WORLD, ierr)
30 call MPI_Finalize(ierr)
31
32 end program smear_sfs
и вот (по времени) версия выхода:
Section 1
Calling MPI_Init ... Section 1
Calling MPI_Init ... Section 1
Calling MPI_Init ... Section 1
Calling MPI_Init ...done
ierr = 0
rank( 0) reporting
done
ierr = 0
rank( 1) reporting
done
ierr = 0
rank( 2) reporting
done
ierr = 0
rank( 3) reporting
real 0m45.350s
user 1m25.794s
sys 1m31.731s
Программа выводит Section 1
и следующие Calling MPI_Init ...
«s сразу, но затем виснет в течение долгого времени после печати done
и остальной части вывода. По какой-то причине это длительное время навешивается на MPI_Init
, и я не могу понять, почему.
Если это имеет значение вообще, в первый раз, когда я запустил это, у меня появилось какое-то странное предупреждение от моего брандмауэра, утверждающего, что что-то происходит с моим компьютером (из orted.exe
я думаю, что это было), но я больше не получил эту ошибку ,
Я запускаю это в Windows 8 через cygwin64 и компилирую с MPIf90.
Спасибо.
Какую версию, что я предполагаю, что Open MPI вы используете? –
Я использую OpenMPI 1.7.1 – drjrm3
Я не могу воспроизвести это на Ubuntu Linux, я получаю (реальные, пользовательские, sys) значения (1.054s, 0.048s, 0.024s). –