<div>I want to use the parallel version of dijkstra_shortest_paths, here is my code, it works very well with the sequential version of BGL, but can not be compiled with parallel BGL.</div><div><br></div><div>typedef boost::adjacency_list < boost::vecS, boost::vecS, boost::undirectedS,</div> <div><span class="Apple-tab-span" style="white-space:pre"> </span>boost::no_property, boost::property < boost::edge_weight_t, double > > graph_t;</div><div>typedef boost::graph_traits < graph_t >::vertex_descriptor vertex_descriptor;</div> <div>typedef boost::graph_traits < graph_t >::edge_descriptor edge_descriptor;</div><div>typedef std::pair<int, int> Edge;</div><div>template <class Vertex></div><div>struct target_visitor : public default_dijkstra_visitor</div> <div>{</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>target_visitor(vector<bool>* vec,int total) : vec_(vec),num_(0),total_(total),examined_(0) { }</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>template <class Graph></div> <div><span class="Apple-tab-span" style="white-space:pre"> </span>void examine_vertex(Vertex v, Graph& g)</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>{</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>examined_++;</div> <div><span class="Apple-tab-span" style="white-space:pre"> </span>if ((*vec_)[v])</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>{</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>//visited, set false to prevent multi visit</div> <div><span class="Apple-tab-span" style="white-space:pre"> </span>(*vec_)[v]=false;</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>num_++;</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>//cout<<"v:"<<v<<",total:"<<total_<<",num:"<<num_<<",examined_:"<<examined_<<endl;</div> <div><span class="Apple-tab-span" style="white-space:pre"> </span>}</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>if (total_==num_)</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>{</div> <div><span class="Apple-tab-span" style="white-space:pre"> </span>//cout<<"OK. break, Total point size is:"<<vec_->size()<<",examined_ point size is:"<<examined_<<endl;</div> <div><span class="Apple-tab-span" style="white-space:pre"> </span>//all vertex in v have been found</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>throw std::exception();</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>}</div> <div><span class="Apple-tab-span" style="white-space:pre"> </span>}</div><div>private:</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>vector<bool>* vec_;</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>int num_;</div> <div><span class="Apple-tab-span" style="white-space:pre"> </span>int total_;</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>int examined_;</div><div>};</div><div>template <class Vertex></div> <div>target_visitor<Vertex></div><div>target_visit(vector<bool>* u,int total) {</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>return target_visitor<Vertex>(u,total);</div><div>}</div> <div>void BaseFilter::getShortestPathInNRing(int source,int num,std::vector<bool>& tar,std::vector<vertex_descriptor>& p,std::vector<double>& d){</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>vertex_descriptor sou = vertex(source, g_);</div> <div><span class="Apple-tab-span" style="white-space:pre"> </span>assert(num_vertices(g_)==mesh_->m_vecVertex.size());</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>property_map<graph_t, edge_weight_t>::type weightmap = get(edge_weight, g_);</div> <div><span class="Apple-tab-span" style="white-space:pre"> </span>property_map<graph_t, vertex_index_t>::type indexmap = get(vertex_index, g_);</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>try</div> <div><span class="Apple-tab-span" style="white-space:pre"> </span>{</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>dijkstra_shortest_paths(g_, sou, &p[0], &d[0], weightmap, indexmap,�</div> <div><span class="Apple-tab-span" style="white-space:pre"> </span>std::less<double>(), closed_plus<double>(),�</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>(std::numeric_limits<double>::max)(), 0,</div> <div><span class="Apple-tab-span" style="white-space:pre"> </span>target_visitor<vertex_descriptor>(&tar,num));</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>//dijkstra_shortest_paths(g_, sou, predecessor_map(&p[0]).distance_map(&d[0]));</div> <div><span class="Apple-tab-span" style="white-space:pre"> </span>}</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>catch (std::exception e)</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>{</div> <div><span class="Apple-tab-span" style="white-space:pre"> </span>}</div><div>}</div><div><br></div><div>The compile errors are:</div><div>Error<span class="Apple-tab-span" style="white-space:pre"> </span>11<span class="Apple-tab-span" style="white-space:pre"> </span>error C2664: 'boost::put' : cannot convert parameter 2 from 'boost::detail::parallel::global_descriptor<LocalDescriptor>' to 'ptrdiff_t'<span class="Apple-tab-span" style="white-space:pre"> </span>C:\boost_1_49_0\boost_1_49_0\boost\graph\distributed\crauser_et_al_shortest_paths.hpp<span class="Apple-tab-span" style="white-space:pre"> </span>584</div> <div>Error<span class="Apple-tab-span" style="white-space:pre"> </span>12<span class="Apple-tab-span" style="white-space:pre"> </span>error C2664: 'boost::put' : cannot convert parameter 2 from 'boost::detail::parallel::global_descriptor<LocalDescriptor>' to 'ptrdiff_t'<span class="Apple-tab-span" style="white-space:pre"> </span>C:\boost_1_49_0\boost_1_49_0\boost\graph\distributed\crauser_et_al_shortest_paths.hpp<span class="Apple-tab-span" style="white-space:pre"> </span>585</div> <div>Error<span class="Apple-tab-span" style="white-space:pre"> </span>13<span class="Apple-tab-span" style="white-space:pre"> </span>error C2664: 'boost::put' : cannot convert parameter 2 from 'boost::detail::parallel::global_descriptor<LocalDescriptor>' to 'ptrdiff_t'<span class="Apple-tab-span" style="white-space:pre"> </span>C:\boost_1_49_0\boost_1_49_0\boost\graph\distributed\crauser_et_al_shortest_paths.hpp<span class="Apple-tab-span" style="white-space:pre"> </span>587</div> <div><br></div>-- <br>Best Regards<br>Areslp<br><br>