У меня возникла эта странная проблема, которую я понятия не имею, как решить, и я был бы признателен за помощь...
Я использую 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 (трансляции).
Пожалуйста помоги!