MPI_Finalize и утверждения? - PullRequest
       3

MPI_Finalize и утверждения?

1 голос
/ 16 ноября 2011

Спецификация MPI требует вызова MPI_Finalize в каждом потоке перед выходом. Как это работает с ошибками во время выполнения, такими как утверждения?

Если I assert(cond) и cond оценивается как ложное, у меня нет шансов вызвать MPI_Finalize, потому что изменяется нормальный поток программы. Должен ли я ловить SIGABRT, SIGSEGV и, черт побери, что-нибудь еще, или библиотека MPI как-то сама это обрабатывает?

1 Ответ

1 голос
/ 17 ноября 2011

Напишите свою собственную версию assert, которая после утверждения вызывает MPI_Finalize.

#define MY_ASSERT(cond) do { \
    if (!cond) { \
        printf ("Assert (%s) failed at %s:%d\n", #cond, __FILE__, __LINE__); \
        MPI_finalize (); \
    } \
} while (0);

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...