Implements Compressed Node Based Graph (De-)Serialization Skeleton

Implements parallel recursion for the partitioner
Fixes osrm-extract's -dump-partition-graph: accept no further tokens

References:
- http://www.boost.org/doc/libs/1_55_0/doc/html/boost/program_options/bool_switch.html

Pulls parameters through to make them configurable from the outside

Defaults are equivalent to:

    ./osrm-partition \
      berlin-latest.osrm \
      --max-cell-size 4096 \
      --balance 1.2 \
      --boundary 0.25 \
      --optimizing-cuts 10

Fixes parallel_do call for Intel TBB 4.2 (Trusty): no range-based overload
This commit is contained in:
Daniel J. Hofmann
2017-01-26 17:53:19 +01:00
committed by Patrick Niklaus
parent 786be6f570
commit b9ed20bb9b
10 changed files with 327 additions and 85 deletions
+6 -1
View File
@@ -46,13 +46,18 @@ return_code parseArguments(int argc, char *argv[], extractor::ExtractorConfig &e
->implicit_value(true)
->default_value(false),
"Generate a lookup table for internal edge-expanded-edge IDs to OSM node pairs")(
"dump-partition-graph",
boost::program_options::bool_switch(&extractor_config.dump_compressed_node_based_graph)
->implicit_value(true)
->default_value(false),
"Generate a partitionable graph file (.cnbg) for use with osrm-partition")(
"small-component-size",
boost::program_options::value<unsigned int>(&extractor_config.small_component_size)
->default_value(1000),
"Number of nodes required before a strongly-connected-componennt is considered big "
"(affects nearest neighbor snapping)")(
"with-osm-metadata",
boost::program_options::value<bool>(&extractor_config.use_metadata)
boost::program_options::bool_switch(&extractor_config.use_metadata)
->implicit_value(true)
->default_value(false),
"Use metada during osm parsing (This can affect the extraction performance).");
+25 -5
View File
@@ -28,11 +28,31 @@ return_code parseArguments(int argc, char *argv[], partition::PartitionConfig &p
// declare a group of options that will be allowed both on command line
boost::program_options::options_description config_options("Configuration");
config_options.add_options()(
"threads,t",
boost::program_options::value<unsigned int>(&partition_config.requested_num_threads)
->default_value(tbb::task_scheduler_init::default_num_threads()),
"Number of threads to use");
config_options.add_options()
//
("threads,t",
boost::program_options::value<unsigned int>(&partition_config.requested_num_threads)
->default_value(tbb::task_scheduler_init::default_num_threads()),
"Number of threads to use")
//
("max-cell-size",
boost::program_options::value<std::size_t>(&partition_config.maximum_cell_size)
->default_value(4096),
"Bisection termination citerion based on cell size")
//
("balance",
boost::program_options::value<double>(&partition_config.balance)->default_value(1.2),
"Balance for left and right side in single bisection")
//
("boundary",
boost::program_options::value<double>(&partition_config.boundary_factor)
->default_value(0.25),
"Percentage of embedded nodes to contract as sources and sinks")
//
("optimizing-cuts",
boost::program_options::value<std::size_t>(&partition_config.num_optimizing_cuts)
->default_value(10),
"Number of cuts to use for optimizing a single bisection");
// hidden options, will be allowed on command line, but will not be
// shown to the user