
BoostCommit : 
Subject: [Boostcommit] svn:boost r53371  trunk/libs/graph_parallel/doc
From: ngedmond_at_[hidden]
Date: 20090528 19:24:17
Author: ngedmond
Date: 20090528 19:24:16 EDT (Thu, 28 May 2009)
New Revision: 53371
URL: http://svn.boost.org/trac/boost/changeset/53371
Log:
Documented CC parallel search, mostly using comments from the source code
Text files modified:
trunk/libs/graph_parallel/doc/connected_components_parallel_search.rst  71 +++++++++++++++++++++++++++++++++++++++
1 files changed, 70 insertions(+), 1 deletions()
Modified: trunk/libs/graph_parallel/doc/connected_components_parallel_search.rst
==============================================================================
 trunk/libs/graph_parallel/doc/connected_components_parallel_search.rst (original)
+++ trunk/libs/graph_parallel/doc/connected_components_parallel_search.rst 20090528 19:24:16 EDT (Thu, 28 May 2009)
@@ 7,13 +7,82 @@
Logo Connected Components Parallel Search
===========================================
+::
+
+ namespace graph { namespace distributed {
+ template<typename Graph, typename ComponentMap>
+ typename property_traits<ComponentMap>::value_type
+ connected_components_ps(const Graph& g, ComponentMap c)
+ } }
+
+The ``connected_components_ps()`` function computes the connected
+components of a graph by performing a breadthfirst search from
+several sources in parallel while recording and eventually resolving
+the collisions.
+
+.. contents::
+
+Where Defined
+
+<``boost/graph/distributed/connected_components_parallel_search.hpp``>
+
+Parameters
+
+
+IN: ``const Graph& g``
+ The graph type must be a model of `Distributed Graph`_. The graph
+ type must also model the `Incidence Graph`_ and be directed.
+
+OUT: ``ComponentMap c``
+ The algorithm computes how many connected components are in the
+ graph, and assigns each component an integer label. The algorithm
+ then records to which component each vertex in the graph belongs by
+ recording the component number in the component property map. The
+ ``ComponentMap`` type must be a `Distributed Property Map`_. The
+ value type must be the ``vertices_size_type`` of the graph. The key
+ type must be the graph's vertex descriptor type.
+
+Complexity
+
+
+*O(PN^2 + VNP)* work, in *O(N + V)* time, where N is the
+number of mappings and V is the number of local vertices.
+
+Algorithm Description
+
+
+Every *N* th nodes starts a parallel search from the first vertex in
+their local vertex list during the first superstep (the other nodes
+remain idle during the first superstep to reduce the number of
+conflicts in numbering the components). At each superstep, all new
+component mappings from remote nodes are handled. If there is no work
+from remote updates, a new vertex is removed from the local list and
+added to the work queue.
+
+Components are allocated from the ``component_value_allocator``
+object, which ensures that a given component number is unique in the
+system, currently by using the rank and number of processes to stride
+allocations.
+
+When two components are discovered to actually be the same component,
+a collision is recorded. The lower component number is prefered in
+the resolution, so component numbering resolution is consistent.
+After the search has exhausted all vertices in the graph, the mapping
+is shared with all processes and they independently resolve the
+comonent mapping. This phase can likely be significantly sped up if a
+clever algorithm for the reduction can be found.
+

Copyright (C) 2009 The Trustees of Indiana University.
Authors: Nick Edmonds and Andrew Lumsdaine
+Authors: Brian Barrett, Douglas Gregor, and Andrew Lumsdaine
.. Logo image:: pbgllogo.png
:align: middle
:alt: Parallel BGL
:target: http://www.osl.iu.edu/research/pbgl
+
+.. _Distributed Graph: DistributedGraph.html
+.. _Distributed Property Map: distributed_property_map.html
+.. _Incidence Graph: http://www.boost.org/libs/graph/doc/IncidenceGraph.html
BoostCommit list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk