1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- // Copyright (C) 2005 Douglas Gregor.
- // Use, modification and distribution is subject to the Boost Software
- // License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- // http://www.boost.org/LICENSE_1_0.txt)
- // Compute parents, children, levels, etc. to effect a parallel
- // computation tree.
- #ifndef BOOST_MPI_COMPUTATION_TREE_HPP
- #define BOOST_MPI_COMPUTATION_TREE_HPP
- namespace boost { namespace mpi { namespace detail {
- /**
- * @brief Aids tree-based parallel collective algorithms.
- *
- * Objects of this type
- */
- class computation_tree
- {
- public:
- computation_tree(int rank, int size, int root, int branching_factor = -1);
- /// Returns the branching factor of the tree.
- int branching_factor() const { return branching_factor_; }
- /// Returns the level in the tree on which this process resides.
- int level() const { return level_; }
- /**
- * Returns the index corresponding to the n^th level of the tree.
- *
- * @param n The level in the tree whose index will be returned.
- */
- int level_index(int n) const;
- /**
- * @brief Returns the parent of this process.
- *
- * @returns If this process is the root, returns itself. Otherwise,
- * returns the process number that is the parent in the computation
- * tree.
- */
- int parent() const;
- /// Returns the index for the first child of this process.
- int child_begin() const;
- /**
- * @brief The default branching factor within the computation tree.
- *
- * This is the default branching factor for the computation tree, to
- * be used by any computation tree that does not fix the branching
- * factor itself. The default is initialized to 3, but may be
- * changed by the application so long as all processes have the same
- * branching factor.
- */
- static int default_branching_factor;
- protected:
- /// The rank of this process in the computation tree.
- int rank;
- /// The number of processes participating in the computation tree.
- int size;
- /// The process number that is acting as the root in the computation
- /// tree.
- int root;
- /**
- * @brief The branching factor within the computation tree.
- *
- * This is the default number of children that each node in a
- * computation tree will have. This value will be used for
- * collective operations that use tree-based algorithms.
- */
- int branching_factor_;
- /// The level in the tree at which this process resides.
- int level_;
- };
- } } } // end namespace boost::mpi::detail
- #endif // BOOST_MPI_COMPUTATION_TREE_HPP
|