2013-10-04 8 views
4

У меня есть минимальный пример проблемы, когда я просто запускаю 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.

Спасибо.

+0

Какую версию, что я предполагаю, что Open MPI вы используете? –

+0

Я использую OpenMPI 1.7.1 – drjrm3

+0

Я не могу воспроизвести это на Ubuntu Linux, я получаю (реальные, пользовательские, sys) значения (1.054s, 0.048s, 0.024s). –

ответ

1

Надеюсь, последнее редактирование:

Я спросил в списке рассылки пользователь OpenMPI. Там я получил совет, что это также может быть моя WLAN.

И действительно! Это была моя WLAN, по крайней мере, в половине случаев, когда я ее тестировал. В другой раз это была моя ЛВС, которую я также использую для доступа в Интернет.

Итак: попытайтесь отключить локальную сеть и WLAN в меню Пуск> Панель управления> Сеть и Интернет> Центр обмена и совместного доступа> Изменить настройки адаптера Это только обходной путь.


Это не настоящий ответ, но я хочу поделиться своим 5-часовым опытом с этим неприятным предметом. (У меня все еще есть проблема время от времени)

У меня была такая же проблема: после компиляции и запуска программы она, кажется, виснет, но в итоге она будет работать через минуту или две.

Хотя проблема возникла на моем ноутбуке, это не было на моем настольном ПК. Оба запускаются на Win 7, cygwin 64 бит, OpenMPI версии 1.8.3 r32794 (ompi_info), g ++ v 4.8.3. Я фактически синхронизировал установки cygwin позже, но он все еще не работал, но это произошло после перезагрузки, поэтому я не могу исключить, что проблема была как-то испорчена установкой cygwin.

Когда я запустил программу на своем настольном ПК, мой брандмауэр Comodo 5.10 уведомил меня об orterun.exe (mpirun - это только символическая ссылка на orterun) и myprogram.exe. После того, как я (навсегда) разрешил эти две программы, запущенная программа все равно не возобновила выполнение. После отмены программы и ее перезагрузки программа работала без проблем, а это означает, что она работает быстро. Из-за этого мне кажется, что OpenMPI, возможно, имеет только недостаточную обработку ошибок, если он не может подключиться мгновенно. Возможно, это как-то связано с проблемой.

Я пользуюсь Comodo Firewall 5.10. на моем рабочем столе и абсолютно без брандмауэра, даже брандмауэр Windows (деактивирован) на моем ноутбуке. Установка Comodo 5.10 на моем ноутбуке тоже не помогла.Но после перезагрузки все работало, поэтому, возможно, брандмауэр еще не был полностью установлен? Но программа установки не предложила мне перезапустить и брандмауэр уже работал, поэтому ...

Скомпилированная версия с моего настольного ПК работала на моем ноутбуке с mpirun ... Я думаю. Увы, я не мог повторить это, и я пробовал уже несколько часов. Из-за этого я думал, что ошибка лежит в компиляторе или OpenMPI-библиотеках.

После синхронизации моей установки cygwin на моем ноутбуке с одним на моем рабочем столе, установкой брандмауэра, где я разрешил все затронутые программы и перезагрузил свой ноутбук, он наконец-то работал ... Я не уверен, что именно решило проблему и почему необходим перезапуск.

Очевидно, проблема возникла в течение нескольких месяцев на моем ноутбуке, поэтому я перезапустил ноутбук до того, как проблема не решена.

Другие люди также рассказывают о своих программах VPN, мешающих OpenMPI и вызывающих именно эти проблемы, но у меня не было такого программного обеспечения.

Редактировать: Спустя несколько часов проблема вернулась! Вещи, которые я бесплодно пытались:

  • закрытие программ, которые могут заклинить МАГИСТРАЛИ TCP-IP
  • пинг 127.0.0.1 работает < 1мс
  • работает Баш как администратор
  • работает orterun/mpirun из окна CMD вместо cygwin-bash
  • полная остановка брандмауэра Windows и защитника Windows
  • с использованием MPI_Init (NULL, NULL); вместо MPI_Init (& argc, & argv);
  • компиляции с GCC вместо г ++
  • программа работает нормально, если я не запустить его с mpirun, но это также не работает, если я начну его с mpirun -n 1
  • обновления Windows
  • в безопасном режиме (с сетевыми драйверами)
  • пытается отладить его (я не могу получить полезную трассировку для вызова MPI_Init)
+1

Вы должны опубликовать это как новый вопрос, а также спросить [Открыть список рассылки пользователей MPI] (http://www.open-mpi.org/community/lists/ompi.php). Существует множество параметров MCA для включения подробного режима в различных открытых инфраструктурах MPI, и они могут использоваться для отладки таких проблем. –

Смежные вопросы