Revert the usage of TBB's iterator pair taking overloads.

This reverts the range based overload usage introduced in @6b2bf495.

Old TBB versions do not provide the range overloads.
This commit is contained in:
Daniel J. Hofmann 2015-09-10 11:36:02 +02:00
parent 829b9d96e4
commit 6e6b38e8e9
6 changed files with 21 additions and 20 deletions

View File

@ -192,7 +192,7 @@ class Contractor
// FIXME not sure if we need this // FIXME not sure if we need this
edges.shrink_to_fit(); edges.shrink_to_fit();
tbb::parallel_sort(edges); tbb::parallel_sort(edges.begin(), edges.end());
NodeID edge = 0; NodeID edge = 0;
for (NodeID i = 0; i < edges.size();) for (NodeID i = 0; i < edges.size();)
{ {
@ -416,7 +416,7 @@ class Contractor
contractor_graph.reset(); contractor_graph.reset();
// create new graph // create new graph
tbb::parallel_sort(new_edge_set); tbb::parallel_sort(new_edge_set.begin(), new_edge_set.end());
contractor_graph = contractor_graph =
std::make_shared<ContractorGraph>(remaining_nodes.size(), new_edge_set); std::make_shared<ContractorGraph>(remaining_nodes.size(), new_edge_set);
@ -468,7 +468,8 @@ class Contractor
[&](const ThreadDataContainer::EnumerableThreadData::range_type &range) [&](const ThreadDataContainer::EnumerableThreadData::range_type &range)
{ {
for (auto &data : range) for (auto &data : range)
tbb::parallel_sort(data->inserted_edges); tbb::parallel_sort(data->inserted_edges.begin(),
data->inserted_edges.end());
}); });
tbb::parallel_for( tbb::parallel_for(
tbb::blocked_range<int>(first_independent_node, last, DeleteGrainSize), tbb::blocked_range<int>(first_independent_node, last, DeleteGrainSize),
@ -867,7 +868,7 @@ class Contractor
} }
} }
// eliminate duplicate entries ( forward + backward edges ) // eliminate duplicate entries ( forward + backward edges )
tbb::parallel_sort(neighbours); tbb::parallel_sort(neighbours.begin(), neighbours.end());
neighbours.resize(std::unique(neighbours.begin(), neighbours.end()) - neighbours.begin()); neighbours.resize(std::unique(neighbours.begin(), neighbours.end()) - neighbours.begin());
for (const auto i : osrm::irange<std::size_t>(0, neighbours.size())) for (const auto i : osrm::irange<std::size_t>(0, neighbours.size()))
@ -896,7 +897,7 @@ class Contractor
node_data[u].depth = (std::max)(node_data[node].depth + 1, node_data[u].depth); node_data[u].depth = (std::max)(node_data[node].depth + 1, node_data[u].depth);
} }
// eliminate duplicate entries ( forward + backward edges ) // eliminate duplicate entries ( forward + backward edges )
tbb::parallel_sort(neighbours); tbb::parallel_sort(neighbours.begin(), neighbours.end());
neighbours.resize(std::unique(neighbours.begin(), neighbours.end()) - neighbours.begin()); neighbours.resize(std::unique(neighbours.begin(), neighbours.end()) - neighbours.begin());
// re-evaluate priorities of neighboring nodes // re-evaluate priorities of neighboring nodes
@ -939,7 +940,7 @@ class Contractor
neighbours.push_back(target); neighbours.push_back(target);
} }
tbb::parallel_sort(neighbours); tbb::parallel_sort(neighbours.begin(), neighbours.end());
neighbours.resize(std::unique(neighbours.begin(), neighbours.end()) - neighbours.begin()); neighbours.resize(std::unique(neighbours.begin(), neighbours.end()) - neighbours.begin());
// examine all neighbours that are at most 2 hops away // examine all neighbours that are at most 2 hops away

View File

@ -183,7 +183,7 @@ void Prepare::FindComponents(unsigned max_edge_id,
} }
} }
tbb::parallel_sort(edges); tbb::parallel_sort(edges.begin(), edges.end());
auto new_end = std::unique(edges.begin(), edges.end()); auto new_end = std::unique(edges.begin(), edges.end());
edges.resize(new_end - edges.begin()); edges.resize(new_end - edges.begin());

View File

@ -90,7 +90,7 @@ NodeBasedDynamicGraphFromEdges(int number_of_nodes, const std::vector<NodeBasedE
} }
); );
tbb::parallel_sort(edges_list); tbb::parallel_sort(edges_list.begin(), edges_list.end());
auto graph = std::make_shared<NodeBasedDynamicGraph>( auto graph = std::make_shared<NodeBasedDynamicGraph>(
static_cast<NodeBasedDynamicGraph::NodeIterator>(number_of_nodes), edges_list); static_cast<NodeBasedDynamicGraph::NodeIterator>(number_of_nodes), edges_list);

View File

@ -392,7 +392,7 @@ class StaticRTree
leaf_node_file.write((char *)&m_element_count, sizeof(uint64_t)); leaf_node_file.write((char *)&m_element_count, sizeof(uint64_t));
// sort the hilbert-value representatives // sort the hilbert-value representatives
tbb::parallel_sort(input_wrapper_vector); tbb::parallel_sort(input_wrapper_vector.begin(), input_wrapper_vector.end());
std::vector<TreeNode> tree_nodes_in_level; std::vector<TreeNode> tree_nodes_in_level;
// pack M elements into leaf node and write to leaf file // pack M elements into leaf node and write to leaf file

View File

@ -76,9 +76,9 @@ void DeleteFileIfExists(const std::string &file_name)
} }
} }
std::size_t LoadGraph(const char* path, std::size_t LoadGraph(const char *path,
std::vector<QueryNode>& coordinate_list, std::vector<QueryNode> &coordinate_list,
std::vector<TarjanEdge>& graph_edge_list) std::vector<TarjanEdge> &graph_edge_list)
{ {
std::ifstream input_stream(path, std::ifstream::in | std::ifstream::binary); std::ifstream input_stream(path, std::ifstream::in | std::ifstream::binary);
if (!input_stream.is_open()) if (!input_stream.is_open())
@ -92,8 +92,7 @@ std::size_t LoadGraph(const char* path,
std::vector<NodeID> barrier_node_list; std::vector<NodeID> barrier_node_list;
auto number_of_nodes = loadNodesFromFile(input_stream, barrier_node_list, auto number_of_nodes = loadNodesFromFile(input_stream, barrier_node_list,
traffic_light_node_list, traffic_light_node_list, coordinate_list);
coordinate_list);
loadEdgesFromFile(input_stream, edge_list); loadEdgesFromFile(input_stream, edge_list);
@ -133,8 +132,7 @@ int main(int argc, char *argv[])
// enable logging // enable logging
if (argc < 3) if (argc < 3)
{ {
SimpleLogger().Write(logWARNING) << "usage:\n" << argv[0] SimpleLogger().Write(logWARNING) << "usage:\n" << argv[0] << " <osrm>";
<< " <osrm>";
return -1; return -1;
} }
@ -143,7 +141,7 @@ int main(int argc, char *argv[])
std::vector<TarjanEdge> graph_edge_list; std::vector<TarjanEdge> graph_edge_list;
auto number_of_nodes = LoadGraph(argv[1], coordinate_list, graph_edge_list); auto number_of_nodes = LoadGraph(argv[1], coordinate_list, graph_edge_list);
tbb::parallel_sort(graph_edge_list); tbb::parallel_sort(graph_edge_list.begin(), graph_edge_list.end());
const auto graph = std::make_shared<TarjanGraph>(number_of_nodes, graph_edge_list); const auto graph = std::make_shared<TarjanGraph>(number_of_nodes, graph_edge_list);
graph_edge_list.clear(); graph_edge_list.clear();
graph_edge_list.shrink_to_fit(); graph_edge_list.shrink_to_fit();
@ -216,8 +214,9 @@ int main(int argc, char *argv[])
BOOST_ASSERT(source != SPECIAL_NODEID); BOOST_ASSERT(source != SPECIAL_NODEID);
BOOST_ASSERT(target != SPECIAL_NODEID); BOOST_ASSERT(target != SPECIAL_NODEID);
const unsigned size_of_containing_component = std::min( const unsigned size_of_containing_component =
tarjan->get_component_size(tarjan->get_component_id(source)), tarjan->get_component_size(tarjan->get_component_id(target))); std::min(tarjan->get_component_size(tarjan->get_component_id(source)),
tarjan->get_component_size(tarjan->get_component_id(target)));
// edges that end on bollard nodes may actually be in two distinct components // edges that end on bollard nodes may actually be in two distinct components
if (size_of_containing_component < 1000) if (size_of_containing_component < 1000)

View File

@ -141,7 +141,8 @@ NodeID loadEdgesFromFile(std::istream &input_stream, std::vector<NodeBasedEdge>
#ifndef NDEBUG #ifndef NDEBUG
SimpleLogger().Write() << "Validating loaded edges..."; SimpleLogger().Write() << "Validating loaded edges...";
tbb::parallel_sort(edge_list, [](const NodeBasedEdge &lhs, const NodeBasedEdge &rhs) tbb::parallel_sort(edge_list.begin(), edge_list.end(),
[](const NodeBasedEdge &lhs, const NodeBasedEdge &rhs)
{ {
return (lhs.source < rhs.source) || return (lhs.source < rhs.source) ||
(lhs.source == rhs.source && lhs.target < rhs.target); (lhs.source == rhs.source && lhs.target < rhs.target);