Использование MPI_Erhandler_free()C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Использование MPI_Erhandler_free()

Сообщение Anonymous »

В разделе 9.3.5 документации стандарта MPI говорится:

Код: Выделить всё

int MPI_Errhandler_free(MPI_Errhandler *errhandler)
: помечает обработчик ошибок, связанный с обработчиком ошибок, для освобождения и устанавливает для обработчика ошибок значение MPI_ERRHANDLER_NULL. Обработчик ошибок будет освобожден после освобождения всех связанных с ним объектов (коммуникатора, окна или файла).

Согласно этому предложению, правильное использование следующего шаблона (C++):

Код: Выделить всё

    MPI_Errhandler errhandler;
MPI_Comm_create_errhandler(custom_error_handler_func, &errhandler);
MPI_Comm_set_errhandler(comm, errhandler);
MPI_Errhandler_free(&errhandler);
// errhandler goes out of scope here..
}
// A lot of code follows here.. then in another function, an MPI command is called on
// the comm (communicator handle), e.g. MPI_Send():

MPI_Send(
&variable,
/*count=*/1,
/*datatype=*/MPI_DOUBLE,
/*dest_rank=*/0,
/*tag=*/SomeTag,
comm
);
То есть: будет ли пользовательский обработчик ошибок активен для последнего MPI_Send(), даже если MPI_Erhandler_free() был вызван ранее? Просто пытаюсь подтвердить свою интерпретацию документации: освобождать обработчик ошибок безопасно, пока коммуникатор жив и сохраняет ссылку.

Подробнее здесь: https://stackoverflow.com/questions/792 ... ndler-free
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»