MPICH в Windows - время ожидания семафора истекло

У меня возникла эта странная проблема, которую я понятия не имею, как решить, и я был бы признателен за помощь...

Я использую Windows 7 на нескольких локально подключенных машинах, на которых установлен MPICH (версия 1.4.1p1). Я проверил, что стандартный пример cpi.exe работает на каждой машине. Однако при тестировании на нескольких машинах я обнаружил странную проблему. Предположим, у меня есть три машины: localhost, HOST1, HOST2.

Если я выполню следующие команды (с локального хоста)

mpiexec -n 2 -host HOST1 .\cpi.exe

mpiexec -n 2 -host HOST2 .\cpi.exe

mpiexec -n 2 -host HOST1 .\cpi.exe : -n 2 -host HOST2 .\cpi.exe

тогда они выполняются нормально. Однако, если я поменяю порядок хостов с последнего, т.е.

mpiexec -n 2 -host HOST2 .\cpi.exe : -n 2 -host HOST1 .\cpi.exe

то я получаю следующую ошибку:

Fatal error in PMPI_Bcast: Other MPI error, error stack: PMPI_Bcast(1478)......................: MPI_Bcast(buf=0018FE48, count=1, MPI_INT , root=0, MPI_COMM_WORLD) failed MPIR_Bcast_impl(1321).................: MPIR_Bcast_intra(1119)................: MPIR_Bcast_scatter_ring_allgather(962): MPIR_Bcast_binomial(213)..............: Failure during collective MPIR_Bcast_scatter_ring_allgather(955): MPIR_Bcast_binomial(189)..............: MPIC_Send(66).........................: MPIC_Wait(540)........................: MPIDI_CH3I_Progress(402)..............: MPID_nem_mpich2_blocking_recv(905)....: MPID_nem_newtcp_module_poll(37).......: MPID_nem_newtcp_module_connpoll(2656).: gen_cnting_fail_handler(1739).........: connect failed - The semaphore timeout p eriod has expired. (errno 121)

В последнем случае, если я отключу брандмауэр на HOST2, он сработает. К сожалению, у меня очень мало опыта работы с брандмауэрами и сетями в целом, поэтому я не знаю, как решить эту проблему.

Единственное, что я могу понять, это то, что он терпит неудачу при первом коллективном вызове MPI (трансляции).

Пожалуйста помоги!


person queenbee    schedule 06.10.2014    source источник


Ответы (1)


Хорошо, решил свою проблему - в основном я добавил исключение для программы cpi.exe на HOST1, но не на HOST2. Решение состояло в том, чтобы гарантировать, что исключение было добавлено к ОБЕИМ машинам!

person queenbee    schedule 06.10.2014