Убить процесс MPI - PullRequest
       7

Убить процесс MPI

3 голосов
/ 03 апреля 2011

Хотелось бы узнать, есть ли способ, чтобы процесс MPI отправлял сигнал уничтожения другому процессу MPI?

Или, по-другому, есть способ выйти из среды MPI, когда один изпроцесс все еще активен?(т.е. mpi_abort () печатает сообщение об ошибке).

Спасибо

1 Ответ

1 голос
/ 26 мая 2011

Нет, это невозможно в приложении MPI, использующем библиотеку MPI.

Отдельные процессы не будут знать ни о местонахождении других процессов, ни об идентификаторах процессов других процессов - и в спецификации MPI нет ничего, что могло бы сделать желаемое уничтожение.

Если бы вы делали это вручную, то вам нужно было бы MPI_Alltoall для обмена идентификаторами процессов и именами хостов по всей системе, а затем вам нужно было бы порождать ssh / rsh для посещения нужного узла, когда вы хотите что-то убить. В общем, он не портативный, не чистый.

MPI_Abort - это правильный способ сделать то, что вы пытаетесь достичь. Из руководства Open MPI:

«Эта подпрограмма делает« лучшую попытку »отменить все задачи в группе связи». (т.е. MPI_Abort (MPI_COMM_WORLD, -1) - это то, что вам нужно.

Любой вывод во время MPI_Abort будет зависеть от конкретной машины, поэтому вы можете или не можете получить упомянутое вами сообщение об ошибке.

...