From 2b784509dc9cfb5b2d04fb1335890bde90500cfd Mon Sep 17 00:00:00 2001 From: Wolfgang Bangerth Date: Wed, 2 Nov 2022 17:11:34 -0600 Subject: [PATCH] Add to the documentation of the ConsensusAlgorithms functions. --- .../deal.II/base/mpi_consensus_algorithms.h | 66 +++++++++++++++++++ 1 file changed, 66 insertions(+) diff --git a/include/deal.II/base/mpi_consensus_algorithms.h b/include/deal.II/base/mpi_consensus_algorithms.h index 88cedfae5c..8d28cb893f 100644 --- a/include/deal.II/base/mpi_consensus_algorithms.h +++ b/include/deal.II/base/mpi_consensus_algorithms.h @@ -526,6 +526,17 @@ namespace Utilities * * @tparam RequestType The type of the object to be sent. * @tparam AnswerType The type of the object to be received. + * + * @note Nothing good will generally happen if any of the function + * objects passed as arguments throws an exception when called. + * This is because when that happens, one MPI process will stop + * participating in MPI communications, deadlocking the other + * processes. As a consequence, the `create_request()`, + * `answer_request()`, and `process_answer()` functions should + * not throw any exceptions; if they encounter error + * conditions, they should instead call `MPI_Abort()` or use + * another way to reliably print an error message and then + * bring the MPI universe down. */ template std::vector @@ -562,6 +573,17 @@ namespace Utilities * is to be performed. * * @tparam RequestType The type of the object to be sent. + * + * @note Nothing good will generally happen if any of the function + * objects passed as arguments throws an exception when called. + * This is because when that happens, one MPI process will stop + * participating in MPI communications, deadlocking the other + * processes. As a consequence, the `create_request()` and + * `process_request()` functions should + * not throw any exceptions; if they encounter error + * conditions, they should instead call `MPI_Abort()` or use + * another way to reliably print an error message and then + * bring the MPI universe down. */ template std::vector @@ -760,6 +782,17 @@ namespace Utilities * * @tparam RequestType The type of the object to be sent. * @tparam AnswerType The type of the object to be received. + * + * @note Nothing good will generally happen if any of the function + * objects passed as arguments throws an exception when called. + * This is because when that happens, one MPI process will stop + * participating in MPI communications, deadlocking the other + * processes. As a consequence, the `create_request()`, + * `answer_request()`, and `process_answer()` functions should + * not throw any exceptions; if they encounter error + * conditions, they should instead call `MPI_Abort()` or use + * another way to reliably print an error message and then + * bring the MPI universe down. */ template std::vector @@ -796,6 +829,17 @@ namespace Utilities * is to be performed. * * @tparam RequestType The type of the object to be sent. + * + * @note Nothing good will generally happen if any of the function + * objects passed as arguments throws an exception when called. + * This is because when that happens, one MPI process will stop + * participating in MPI communications, deadlocking the other + * processes. As a consequence, the `create_request()` and + * `process_request()` functions should + * not throw any exceptions; if they encounter error + * conditions, they should instead call `MPI_Abort()` or use + * another way to reliably print an error message and then + * bring the MPI universe down. */ template std::vector @@ -1029,6 +1073,17 @@ namespace Utilities * * @tparam RequestType The type of the object to be sent. * @tparam AnswerType The type of the object to be received. + * + * @note Nothing good will generally happen if any of the function + * objects passed as arguments throws an exception when called. + * This is because when that happens, one MPI process will stop + * participating in MPI communications, deadlocking the other + * processes. As a consequence, the `create_request()`, + * `answer_request()`, and `process_answer()` functions should + * not throw any exceptions; if they encounter error + * conditions, they should instead call `MPI_Abort()` or use + * another way to reliably print an error message and then + * bring the MPI universe down. */ template std::vector @@ -1066,6 +1121,17 @@ namespace Utilities * is to be performed. * * @tparam RequestType The type of the object to be sent. + * + * @note Nothing good will generally happen if any of the function + * objects passed as arguments throws an exception when called. + * This is because when that happens, one MPI process will stop + * participating in MPI communications, deadlocking the other + * processes. As a consequence, the `create_request()` + * and `process_request()` functions should + * not throw any exceptions; if they encounter error + * conditions, they should instead call `MPI_Abort()` or use + * another way to reliably print an error message and then + * bring the MPI universe down. */ template std::vector -- 2.39.5