Как бороться с ошибками времени выполнения интерпретатора Python при запуске Python в коде MPI - PullRequest
0 голосов
/ 13 июня 2019

У нас есть приложение, которое вызывает интерпретатор Python из кода C ++. Код C ++ распараллеливается с mpi. Интерпретатор используется для запуска скриптов Python (они могут включать передачу сообщений через mpi4py или нет). Вот проблема: когда мы запускаем код как последовательный код, если скрипты Python содержат ошибку, в stderr мы получаем сообщение, которое генерирует интерпретатор с обычной диагностической информацией (строка, где происходит ошибка, тип ошибки, ... ). Однако, если мы запускаем код параллельно на нескольких ядрах, мы не получаем никакой диагностической информации от интерпретатора. Со стороны C ++ мы знаем, что в скрипте произошла ошибка, но это все. Конечно, это значительно усложняет отладку, поскольку некоторые ошибки могут возникать только при параллельной работе. Поэтому мой вопрос заключается в том, как перенаправить сообщения об ошибках из интерпретатора в файл или другие идеи для решения этой ситуации.

1 Ответ

0 голосов
/ 14 июня 2019

Проблема была связана с тем, как мы выходим из кода после возникновения ошибки на стороне Python. Первоначально мы использовали MPI_Abort (). Переключение на std :: exit (0) решает проблему. Теперь, когда скрипт генерирует ошибку, сообщения интерпретатора Python отображаются правильно (из каждого процесса!).

...