Hi Marcin,
Thanks for the reply.
1. Which are the files in the source tree where I can get the details of
implementation of queue,graph and the property map for serial as well as
distributed (MPI ) cases.
Also, I had the following query.
With reference to document
http://www.boost.org/doc/libs/1_58_0/libs/graph_parallel/doc/html/overview.h...
For parallel version of BFS, the steps that I inferred are as below. Could
you please correct me in this:
1. The root node process reads the input file which is in the metix
format.
2. The root node process creates the adjacency list representation of the
graph.
3. The root node process creates the property map and "ghost cells" of the
graph. The various entries are marked as white corresponding to each of
the node.
4. The root node process will distribute the adjacency list and property
map to each of the processes.
5. Each of the non-root nodes now has its own copy of adjacency list and
property map along with details of the source node where the BFS is to
start
6. Now the process having the source node starts the traversal of the
graph.
7. The source node is put in a queue.
8. The source node will dequeue the source node and mark all its neighbors
as gray and put them in queue. Also it will mark itself as black.
9. The property maps on each of the nodes will now be updated
10. Each of the node processes will be monitoring its own property map
If any of the processes finds a node marked as gray, it will
enqueue that particular node and start its own traversal locally.
11. Thus on every node the property map will be marked as gray and then
eventually black after visit is complete. The property maps will be
synchronised.
12. The steps from 8 to 11 are repeated till all the entries in every
property map are marked as black.
Is my interpretation of the implementation for parallel correct?
How often are the property maps on various nodes synchronized and under
what condition?
Is there any synchronisation with respect to the queues ?
please help,
regards,
-Mahesh
From: Marcin Zalewski