From 23074daeb9cc467835a0910184999217d46fb42a Mon Sep 17 00:00:00 2001 From: Martin Kronbichler Date: Wed, 25 May 2022 12:16:15 +0200 Subject: [PATCH] Remove unnecessary MPI barriers --- source/dofs/dof_handler_policy.cc | 45 ------------------------------- 1 file changed, 45 deletions(-) diff --git a/source/dofs/dof_handler_policy.cc b/source/dofs/dof_handler_policy.cc index 60bf7b8cb2..96fc91bf24 100644 --- a/source/dofs/dof_handler_policy.cc +++ b/source/dofs/dof_handler_policy.cc @@ -3789,35 +3789,6 @@ namespace internal GridTools::exchange_cell_data_to_ghosts< std::vector, DoFHandler>(dof_handler, pack, unpack, filter); - - // have a barrier so that sends between two calls to this - // function are not mixed up. - // - // this is necessary because above we just see if there are - // messages and then receive them, without discriminating - // where they come from and whether they were sent in phase - // 1 or 2 (the function is called twice in a row). the need - // for a global communication step like this barrier could - // be avoided by receiving messages specifically from those - // processors from which we expect messages, and by using - // different tags for phase 1 and 2, but the cost of a - // barrier is negligible compared to everything else we do - // here - if (const auto *triangulation = - dynamic_cast *>( - &dof_handler.get_triangulation())) - { - const int ierr = MPI_Barrier(triangulation->get_communicator()); - AssertThrowMPI(ierr); - } - else - { - Assert(false, - ExcMessage( - "The function communicate_dof_indices_on_marked_cells() " - "only works with parallel distributed triangulations.")); - } # endif } @@ -4213,22 +4184,6 @@ namespace internal // will request them again in the step below. communicate_mg_ghost_cells(*triangulation, *dof_handler); - // have a barrier so that sends from above and below this - // place are not mixed up. - // - // this is necessary because above we just see if there are - // messages and then receive them, without discriminating - // where they come from and whether they were sent in phase - // 1 or 2 in communicate_mg_ghost_cells() on another - // processor. the need for a global communication step like - // this barrier could be avoided by receiving messages - // specifically from those processors from which we expect - // messages, and by using different tags for phase 1 and 2, - // but the cost of a barrier is negligible compared to - // everything else we do here - const int ierr = MPI_Barrier(triangulation->get_communicator()); - AssertThrowMPI(ierr); - // Phase 2, only request the cells that were not completed // in Phase 1. communicate_mg_ghost_cells(*triangulation, *dof_handler); -- 2.39.5