]> https://gitweb.dealii.org/ - dealii.git/commitdiff
Minor doc update to the consensus algorithms. 13261/head
authorWolfgang Bangerth <bangerth@colostate.edu>
Tue, 18 Jan 2022 15:39:33 +0000 (08:39 -0700)
committerWolfgang Bangerth <bangerth@colostate.edu>
Wed, 19 Jan 2022 17:35:19 +0000 (10:35 -0700)
include/deal.II/base/mpi_consensus_algorithms.h

index 3c34b591b422b91527416325717cc09bbf52cb9d..26a470a82c2ca92b482da3612e71f4ed5c888726 100644 (file)
@@ -265,13 +265,12 @@ namespace Utilities
       /**
        * This class implements a concrete algorithm for the
        * ConsensusAlgorithms::Interface base class, using only point-to-point
-       * communications and a single IBarrier.
+       * communications and a single IBarrier. This algorithm is suitable
+       * for very large process counts because it does not require the
+       * allocation of arrays with size proportional to the number of processes.
        *
-       * @note This class closely follows @cite hoefler2010scalable. Since the
-       *       algorithm shown there is not considering payloads, the algorithm
-       *       has been modified here in such a way that synchronous sends
-       *       (Issend) have been replaced by equivalent Isend/Irecv, where
-       *       Irecv receives the answer to a request (with payload).
+       * @note This class closely follows @cite hoefler2010scalable, but our
+       *   implementation also deals with payloads.
        *
        * @tparam T1 The type of the elements of the vector to be sent.
        * @tparam T2 The type of the elements of the vector to be received.
@@ -396,7 +395,8 @@ namespace Utilities
        * This class implements a concrete algorithm for the
        * ConsensusAlgorithms::Interface base class, using a two step approach.
        * In the first step the source ranks are determined and in the second
-       * step a static sparse data exchange is performed.
+       * step a static sparse data exchange is performed. This algorithm is most
+       * suitable for relatively small process counts -- say, less than 100.
        *
        * @note In contrast to NBX, this class splits the same
        *   task into two distinct steps. In the first step, all processes
@@ -533,12 +533,16 @@ namespace Utilities
         run() override;
       };
 
+
+
       /**
        * A class which delegates its task to other
        * ConsensusAlgorithms::Interface implementations depending on the number
        * of processes in the MPI communicator. For a small number of processes
        * it uses PEX and for a large number of processes NBX. The threshold
-       * depends if the program is compiled in debug or release mode.
+       * depends if the program is compiled in debug or release mode, but the
+       * goal is to always use the most efficient algorithm for however many
+       * processes participate in the communication.
        *
        * @tparam T1 The type of the elements of the vector to be sent.
        * @tparam T2 The type of the elements of the vector to be received.
@@ -573,6 +577,8 @@ namespace Utilities
         std::shared_ptr<Interface<T1, T2>> consensus_algo;
       };
 
+
+
       /**
        * This class implements Utilities::MPI::ConsensusAlgorithms::Process,
        * using user-provided function wrappers.

In the beginning the Universe was created. This has made a lot of people very angry and has been widely regarded as a bad move.

Douglas Adams


Typeset in Trocchi and Trocchi Bold Sans Serif.