Move more function from Run in subfunctions
This commit is contained in:
		
							parent
							
								
									1164a65df8
								
							
						
					
					
						commit
						d64e6e6c1f
					
				| @ -186,6 +186,7 @@ class Contractor | ||||
|         } | ||||
|         // clear input vector
 | ||||
|         input_edge_list.clear(); | ||||
|         // FIXME not sure if we need this
 | ||||
|         edges.shrink_to_fit(); | ||||
| 
 | ||||
|         tbb::parallel_sort(edges.begin(), edges.end()); | ||||
| @ -953,7 +954,6 @@ class Contractor | ||||
|     } | ||||
| 
 | ||||
|     std::shared_ptr<ContractorGraph> contractor_graph; | ||||
|     std::vector<ContractorGraph::InputEdge> contracted_edge_list; | ||||
|     stxxl::vector<QueryEdge> external_edge_list; | ||||
|     std::vector<NodeID> orig_node_id_to_new_id_map; | ||||
|     XORFastHash fast_hash; | ||||
|  | ||||
| @ -123,20 +123,18 @@ int Prepare::Process(int argc, char *argv[]) | ||||
|     rtree_nodes_output_path = osrm_input_path.string() + ".ramIndex"; | ||||
|     rtree_leafs_output_path = osrm_input_path.string() + ".fileIndex"; | ||||
| 
 | ||||
|     /*** Setup Scripting Environment ***/ | ||||
|     // Create a new lua state
 | ||||
| 
 | ||||
| 
 | ||||
|     SimpleLogger().Write() << "Generating edge-expanded graph representation"; | ||||
| 
 | ||||
|     TIMER_START(expansion); | ||||
| 
 | ||||
|     std::vector<EdgeBasedNode> node_based_edge_list; | ||||
|     auto node_based_edge_list = osrm::make_unique<std::vector<EdgeBasedNode>>();; | ||||
|     DeallocatingVector<EdgeBasedEdge> edge_based_edge_list; | ||||
|     auto internal_to_external_node_map = osrm::make_unique<std::vector<QueryNode>>(); | ||||
|     auto graph_size = | ||||
|         BuildEdgeExpandedGraph(*internal_to_external_node_map, | ||||
|                                node_based_edge_list, edge_based_edge_list); | ||||
|                                *node_based_edge_list, edge_based_edge_list); | ||||
| 
 | ||||
|     auto number_of_node_based_nodes = graph_size.first; | ||||
|     auto number_of_edge_based_nodes = graph_size.second; | ||||
| @ -146,49 +144,26 @@ int Prepare::Process(int argc, char *argv[]) | ||||
|     SimpleLogger().Write() << "building r-tree ..."; | ||||
|     TIMER_START(rtree); | ||||
| 
 | ||||
|     BuildRTree(node_based_edge_list, *internal_to_external_node_map); | ||||
|     BuildRTree(*node_based_edge_list, *internal_to_external_node_map); | ||||
| 
 | ||||
|     TIMER_STOP(rtree); | ||||
| 
 | ||||
|     RangebasedCRC32 crc32; | ||||
|     if (crc32.using_hardware()) | ||||
|     { | ||||
|         SimpleLogger().Write() << "using hardware based CRC32 computation"; | ||||
|     } | ||||
|     else | ||||
|     { | ||||
|         SimpleLogger().Write() << "using software based CRC32 computation"; | ||||
|     } | ||||
| 
 | ||||
|     const unsigned crc32_value = crc32(node_based_edge_list); | ||||
|     node_based_edge_list.clear(); | ||||
|     node_based_edge_list.shrink_to_fit(); | ||||
|     SimpleLogger().Write() << "CRC32: " << crc32_value; | ||||
|     const unsigned crc32_value = CalculateEdgeChecksum(std::move(node_based_edge_list)); | ||||
| 
 | ||||
|     SimpleLogger().Write() << "writing node map ..."; | ||||
|     WriteNodeMapping(std::move(internal_to_external_node_map)); | ||||
| 
 | ||||
|     /***
 | ||||
|      * Contracting the edge-expanded graph | ||||
|      */ | ||||
| 
 | ||||
|     SimpleLogger().Write() << "initializing contractor"; | ||||
|     auto contractor = | ||||
|         osrm::make_unique<Contractor>(number_of_edge_based_nodes, edge_based_edge_list); | ||||
|     // Contracting the edge-expanded graph
 | ||||
| 
 | ||||
|     TIMER_START(contraction); | ||||
|     contractor->Run(); | ||||
|     DeallocatingVector<QueryEdge> contracted_edge_list; | ||||
|     ContractGraph(number_of_edge_based_nodes, edge_based_edge_list, contracted_edge_list); | ||||
|     TIMER_STOP(contraction); | ||||
| 
 | ||||
|     SimpleLogger().Write() << "Contraction took " << TIMER_SEC(contraction) << " sec"; | ||||
| 
 | ||||
|     DeallocatingVector<QueryEdge> contracted_edge_list; | ||||
|     contractor->GetEdges(contracted_edge_list); | ||||
|     contractor.reset(); | ||||
| 
 | ||||
|     /***
 | ||||
|      * Sorting contracted edges in a way that the static query graph can read some in in-place. | ||||
|      */ | ||||
|     // Sorting contracted edges in a way that the static query graph can read some in in-place.
 | ||||
| 
 | ||||
|     tbb::parallel_sort(contracted_edge_list.begin(), contracted_edge_list.end()); | ||||
|     const unsigned contracted_edge_count = contracted_edge_list.size(); | ||||
| @ -254,8 +229,8 @@ int Prepare::Process(int argc, char *argv[]) | ||||
|         hsgr_output_stream.write((char *)&node_array[0], | ||||
|                                  sizeof(StaticGraph<EdgeData>::NodeArrayEntry) * node_array_size); | ||||
|     } | ||||
|     // serialize all edges
 | ||||
| 
 | ||||
|     // serialize all edges
 | ||||
|     SimpleLogger().Write() << "Building edge array"; | ||||
|     edge = 0; | ||||
|     int number_of_used_edges = 0; | ||||
| @ -309,6 +284,24 @@ int Prepare::Process(int argc, char *argv[]) | ||||
|     return 0; | ||||
| } | ||||
| 
 | ||||
| unsigned Prepare::CalculateEdgeChecksum(std::unique_ptr<std::vector<EdgeBasedNode>> node_based_edge_list) | ||||
| { | ||||
|     RangebasedCRC32 crc32; | ||||
|     if (crc32.using_hardware()) | ||||
|     { | ||||
|         SimpleLogger().Write() << "using hardware based CRC32 computation"; | ||||
|     } | ||||
|     else | ||||
|     { | ||||
|         SimpleLogger().Write() << "using software based CRC32 computation"; | ||||
|     } | ||||
| 
 | ||||
|     const unsigned crc32_value = crc32(*node_based_edge_list); | ||||
|     SimpleLogger().Write() << "CRC32: " << crc32_value; | ||||
| 
 | ||||
|     return crc32_value; | ||||
| } | ||||
| 
 | ||||
| /**
 | ||||
|  \brief Parses command line arguments | ||||
|  \param argc count of arguments | ||||
| @ -542,6 +535,18 @@ Prepare::BuildEdgeExpandedGraph(std::vector<QueryNode> &internal_to_external_nod | ||||
|     return std::make_pair(number_of_node_based_nodes, number_of_edge_based_nodes); | ||||
| } | ||||
| 
 | ||||
| /**
 | ||||
|  \brief Build contracted graph. | ||||
|  */ | ||||
| void Prepare::ContractGraph(const std::size_t number_of_edge_based_nodes, | ||||
|                             DeallocatingVector<EdgeBasedEdge>& edge_based_edge_list, | ||||
|                             DeallocatingVector<QueryEdge>& contracted_edge_list) | ||||
| { | ||||
|     Contractor contractor(number_of_edge_based_nodes, edge_based_edge_list); | ||||
|     contractor.Run(); | ||||
|     contractor.GetEdges(contracted_edge_list); | ||||
| } | ||||
| 
 | ||||
| /**
 | ||||
|   \brief Writing info on original (node-based) nodes | ||||
|  */ | ||||
|  | ||||
| @ -62,11 +62,14 @@ class Prepare | ||||
|                                    EdgeBasedGraphFactory::SpeedProfileProperties &speed_profile); | ||||
|     void LoadRestrictionMap(const std::unordered_map<NodeID, NodeID> &external_to_internal_node_map, | ||||
|                             RestrictionMap &restriction_map); | ||||
|     std::shared_ptr<NodeBasedDynamicGraph> | ||||
|     LoadNodeBasedGraph(std::vector<NodeID> &barrier_node_list, | ||||
|                        std::vector<NodeID> &traffic_light_list, | ||||
|                        RestrictionMap &restriction_map, | ||||
|                        std::vector<QueryNode>& internal_to_external_node_map); | ||||
|     unsigned CalculateEdgeChecksum(std::unique_ptr<std::vector<EdgeBasedNode>> node_based_edge_list); | ||||
|     void ContractGraph(const std::size_t number_of_edge_based_nodes, | ||||
|                        DeallocatingVector<EdgeBasedEdge>& edge_based_edge_list, | ||||
|                        DeallocatingVector<QueryEdge>& contracted_edge_list); | ||||
|     std::shared_ptr<NodeBasedDynamicGraph> LoadNodeBasedGraph(std::vector<NodeID> &barrier_node_list, | ||||
|                                                std::vector<NodeID> &traffic_light_list, | ||||
|                                                RestrictionMap &restriction_map, | ||||
|                                                std::vector<QueryNode>& internal_to_external_node_map); | ||||
|     std::pair<std::size_t, std::size_t> | ||||
|     BuildEdgeExpandedGraph(std::vector<QueryNode> &internal_to_external_node_map, | ||||
|                                        std::vector<EdgeBasedNode> &node_based_edge_list, | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user