Нет, это невозможно в приложении 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