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

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

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

Спасибо


person Gheghen    schedule 02.04.2011    source источник
comment
См. здесь: stackoverflow.com/questions/ 5433697/.   -  person suszterpatt    schedule 03.04.2011


Ответы (1)


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

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

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

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

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

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

person David    schedule 26.05.2011