2015-05-27 5 views
1

У меня есть простой вопрос (на мой взгляд), и я не могу найти ответ. Как подавить выходные сообщения от mpirun?Подавить сообщения от MPI

Например, у меня есть программа на основе MPI, которая принимает имена входных файлов. Если имя файла плохое, программа создает файл журнала, такой как:

Beginning initialization... 
***************************** 

Reading topology file... 
Error: Topology file mysample.top was not found. 

-------------------------------------------------------------------------- 
MPI_ABORT was invoked on rank 0 in communicator MPI_COMM_WORLD 
with errorcode 1. 

NOTE: invoking MPI_ABORT causes Open MPI to kill all MPI processes. 
You may or may not see output from other processes, depending on 
exactly when Open MPI kills them. 
-------------------------------------------------------------------------- 
-------------------------------------------------------------------------- 
mpirun has exited due to process rank 0 with PID 21581 on 
node newton-compute-2-25.local exiting improperly. There are two reasons this could occur: 

1. this process did not call "init" before exiting, but others in 
the job did. This can cause a job to hang indefinitely while it waits 
for all processes to call "init". By rule, if one process calls "init", 
then ALL processes must call "init" prior to termination. 

2. this process called "init", but exited without calling "finalize". 
By rule, all processes that call "init" MUST call "finalize" prior to 
exiting or it will be considered an "abnormal termination" 

This may have caused other processes in the application to be 
terminated by signals sent by mpirun (as reported here). 
-------------------------------------------------------------------------- 

Поведение верное; программа завершает выполнение (путем вызова MPI_Abort) с сообщением о том, что входной файл плох. Сообщения от MPI не нужны, и это то, что я хотел бы подавить.

Я попытался добавить опции -q и --quiet к вызову mpirun, но они ничего не делают для этой конкретной проблемы. Я также использую OpenMPI, если это имеет значение.

Редактировать: Следует упомянуть, что сообщения MPI идут в stderr, что не обязательно является стандартным. Это нормально, но я все равно не хочу видеть их с сообщениями об ошибках из программы.

+0

MPICH имеет возможность отключать хотя бы некоторые сообщения об ошибках. Было проведено некоторое обсуждение списка пользователей, инициированного командой PETSc. Джед Браун и я создали несколько патчей для реализации тихой опции. Я не уверен, достаточно ли вам. Если вы установите MPICH 3.2, я просмотрю детали опции управления. – Jeff

ответ

2

Поскольку MPI должен быть способен обрабатывать ошибки со всех узлов, на которых он запущен, я уверен, что вы не можете разделить поток ошибок MPI и потоки ошибок процессов. Вы можете удалить все stderr с помощью 2>/dev/null или в журнал ошибок с 2> err.log, но опять же, я не считаю, что вы можете разделить ошибки.

+0

Спасибо, христианин. Таков вывод, к которому я иду. –

Смежные вопросы