Moved MultiLevelPartition and CellStorage to partition namespace
This commit is contained in:
committed by
Patrick Niklaus
parent
694bf9d8b1
commit
00d01946cd
@@ -6,15 +6,14 @@
|
||||
#include "partition/io.hpp"
|
||||
#include "partition/node_based_graph_to_edge_based_graph_mapping_reader.hpp"
|
||||
#include "partition/recursive_bisection.hpp"
|
||||
#include "partition/multi_level_partition.hpp"
|
||||
|
||||
#include "util/cell_storage.hpp"
|
||||
#include "util/coordinate.hpp"
|
||||
#include "util/geojson_debug_logger.hpp"
|
||||
#include "util/geojson_debug_policies.hpp"
|
||||
#include "util/integer_range.hpp"
|
||||
#include "util/json_container.hpp"
|
||||
#include "util/log.hpp"
|
||||
#include "util/multi_level_partition.hpp"
|
||||
|
||||
#include <algorithm>
|
||||
#include <iterator>
|
||||
@@ -218,15 +217,15 @@ int Partitioner::Run(const PartitionConfig &config)
|
||||
std::cout << std::setw(8) << std::hex << x << std::dec << "\n";
|
||||
|
||||
// collect cell ids as masked bisection ids
|
||||
std::vector<std::vector<osrm::util::CellID>> partitions(
|
||||
level_masks.size(), std::vector<osrm::util::CellID>(edge_based_partition_ids.size()));
|
||||
std::vector<std::unordered_set<osrm::util::CellID>> partition_sets(level_masks.size());
|
||||
std::vector<std::vector<CellID>> partitions(
|
||||
level_masks.size(), std::vector<CellID>(edge_based_partition_ids.size()));
|
||||
std::vector<std::unordered_set<CellID>> partition_sets(level_masks.size());
|
||||
for (std::size_t index = 0; index < edge_based_partition_ids.size(); ++index)
|
||||
{
|
||||
auto bisection_id = edge_based_partition_ids[index];
|
||||
for (std::size_t level = 0; level < level_masks.size(); ++level)
|
||||
{
|
||||
osrm::util::CellID cell_id =
|
||||
CellID cell_id =
|
||||
bisection_id & level_masks[level_masks.size() - 1 - level];
|
||||
partitions[level][index] = cell_id;
|
||||
partition_sets[level].insert(cell_id);
|
||||
@@ -237,7 +236,7 @@ int Partitioner::Run(const PartitionConfig &config)
|
||||
std::transform(partition_sets.begin(),
|
||||
partition_sets.end(),
|
||||
std::back_inserter(level_to_num_cells),
|
||||
[](const std::unordered_set<osrm::util::CellID> &partition_set) {
|
||||
[](const std::unordered_set<CellID> &partition_set) {
|
||||
return partition_set.size();
|
||||
});
|
||||
std::cout << "# of cell on levels\n";
|
||||
@@ -250,13 +249,13 @@ int Partitioner::Run(const PartitionConfig &config)
|
||||
}
|
||||
|
||||
TIMER_START(packed_mlp);
|
||||
osrm::util::MultiLevelPartition mlp{partitions, level_to_num_cells};
|
||||
MultiLevelPartition mlp{partitions, level_to_num_cells};
|
||||
TIMER_STOP(packed_mlp);
|
||||
util::Log() << "MultiLevelPartition constructed in " << TIMER_SEC(packed_mlp)
|
||||
<< " seconds";
|
||||
|
||||
TIMER_START(cell_storage);
|
||||
osrm::util::CellStorage storage(mlp, *edge_based_graph);
|
||||
CellStorage storage(mlp, *edge_based_graph);
|
||||
TIMER_STOP(cell_storage);
|
||||
util::Log() << "CellStorage constructed in " << TIMER_SEC(cell_storage) << " seconds";
|
||||
|
||||
|
||||
+23
-22
@@ -6,20 +6,20 @@
|
||||
#include "extractor/profile_properties.hpp"
|
||||
#include "extractor/query_node.hpp"
|
||||
#include "extractor/travel_mode.hpp"
|
||||
#include "partition/cell_storage.hpp"
|
||||
#include "partition/multi_level_partition.hpp"
|
||||
#include "storage/io.hpp"
|
||||
#include "storage/serialization.hpp"
|
||||
#include "storage/shared_datatype.hpp"
|
||||
#include "storage/shared_memory.hpp"
|
||||
#include "storage/shared_monitor.hpp"
|
||||
#include "engine/datafacade/datafacade_base.hpp"
|
||||
#include "util/cell_storage.hpp"
|
||||
#include "util/coordinate.hpp"
|
||||
#include "util/exception.hpp"
|
||||
#include "util/exception_utils.hpp"
|
||||
#include "util/fingerprint.hpp"
|
||||
#include "util/io.hpp"
|
||||
#include "util/log.hpp"
|
||||
#include "util/multi_level_partition.hpp"
|
||||
#include "util/packed_vector.hpp"
|
||||
#include "util/range_table.hpp"
|
||||
#include "util/shared_memory_vector_wrapper.hpp"
|
||||
@@ -402,22 +402,22 @@ void Storage::PopulateLayout(DataLayout &layout)
|
||||
{
|
||||
io::FileReader reader(config.mld_partition_path, io::FileReader::VerifyFingerprint);
|
||||
|
||||
reader.Skip<util::MultiLevelPartition::LevelData>(1);
|
||||
layout.SetBlockSize<util::MultiLevelPartition::LevelData>(DataLayout::MLD_LEVEL_DATA,
|
||||
1);
|
||||
const auto partition_entries_count = reader.ReadVectorSize<util::PartitionID>();
|
||||
layout.SetBlockSize<util::PartitionID>(DataLayout::MLD_PARTITION,
|
||||
partition_entries_count);
|
||||
const auto children_entries_count = reader.ReadVectorSize<util::CellID>();
|
||||
layout.SetBlockSize<util::CellID>(DataLayout::MLD_CELL_TO_CHILDREN,
|
||||
children_entries_count);
|
||||
reader.Skip<partition::MultiLevelPartition::LevelData>(1);
|
||||
layout.SetBlockSize<partition::MultiLevelPartition::LevelData>(
|
||||
DataLayout::MLD_LEVEL_DATA, 1);
|
||||
const auto partition_entries_count = reader.ReadVectorSize<partition::PartitionID>();
|
||||
layout.SetBlockSize<partition::PartitionID>(DataLayout::MLD_PARTITION,
|
||||
partition_entries_count);
|
||||
const auto children_entries_count = reader.ReadVectorSize<partition::CellID>();
|
||||
layout.SetBlockSize<partition::CellID>(DataLayout::MLD_CELL_TO_CHILDREN,
|
||||
children_entries_count);
|
||||
}
|
||||
else
|
||||
{
|
||||
layout.SetBlockSize<util::MultiLevelPartition::LevelData>(DataLayout::MLD_LEVEL_DATA,
|
||||
0);
|
||||
layout.SetBlockSize<util::PartitionID>(DataLayout::MLD_PARTITION, 0);
|
||||
layout.SetBlockSize<util::CellID>(DataLayout::MLD_CELL_TO_CHILDREN, 0);
|
||||
layout.SetBlockSize<partition::MultiLevelPartition::LevelData>(
|
||||
DataLayout::MLD_LEVEL_DATA, 0);
|
||||
layout.SetBlockSize<partition::PartitionID>(DataLayout::MLD_PARTITION, 0);
|
||||
layout.SetBlockSize<partition::CellID>(DataLayout::MLD_CELL_TO_CHILDREN, 0);
|
||||
}
|
||||
|
||||
if (boost::filesystem::exists(config.mld_storage_path))
|
||||
@@ -431,8 +431,9 @@ void Storage::PopulateLayout(DataLayout &layout)
|
||||
const auto destination_node_count = reader.ReadVectorSize<NodeID>();
|
||||
layout.SetBlockSize<NodeID>(DataLayout::MLD_CELL_DESTINATION_BOUNDARY,
|
||||
destination_node_count);
|
||||
const auto cell_count = reader.ReadVectorSize<util::CellStorage::CellData>();
|
||||
layout.SetBlockSize<util::CellStorage::CellData>(DataLayout::MLD_CELLS, cell_count);
|
||||
const auto cell_count = reader.ReadVectorSize<partition::CellStorage::CellData>();
|
||||
layout.SetBlockSize<partition::CellStorage::CellData>(DataLayout::MLD_CELLS,
|
||||
cell_count);
|
||||
const auto level_offsets_count = reader.ReadVectorSize<std::uint64_t>();
|
||||
layout.SetBlockSize<std::uint64_t>(DataLayout::MLD_CELL_LEVEL_OFFSETS,
|
||||
level_offsets_count);
|
||||
@@ -899,11 +900,11 @@ void Storage::PopulateData(const DataLayout &layout, char *memory_ptr)
|
||||
if (boost::filesystem::exists(config.mld_partition_path))
|
||||
{
|
||||
auto mld_level_data_ptr =
|
||||
layout.GetBlockPtr<util::MultiLevelPartition::LevelData, true>(
|
||||
layout.GetBlockPtr<partition::MultiLevelPartition::LevelData, true>(
|
||||
memory_ptr, DataLayout::MLD_LEVEL_DATA);
|
||||
auto mld_partition_ptr =
|
||||
layout.GetBlockPtr<util::PartitionID, true>(memory_ptr, DataLayout::MLD_PARTITION);
|
||||
auto mld_chilren_ptr = layout.GetBlockPtr<util::CellID, true>(
|
||||
auto mld_partition_ptr = layout.GetBlockPtr<partition::PartitionID, true>(
|
||||
memory_ptr, DataLayout::MLD_PARTITION);
|
||||
auto mld_chilren_ptr = layout.GetBlockPtr<partition::CellID, true>(
|
||||
memory_ptr, DataLayout::MLD_CELL_TO_CHILDREN);
|
||||
|
||||
io::FileReader reader(config.mld_partition_path, io::FileReader::VerifyFingerprint);
|
||||
@@ -923,7 +924,7 @@ void Storage::PopulateData(const DataLayout &layout, char *memory_ptr)
|
||||
layout.GetBlockPtr<NodeID, true>(memory_ptr, DataLayout::MLD_CELL_SOURCE_BOUNDARY);
|
||||
auto mld_destination_boundary_ptr = layout.GetBlockPtr<NodeID, true>(
|
||||
memory_ptr, DataLayout::MLD_CELL_DESTINATION_BOUNDARY);
|
||||
auto mld_cells_ptr = layout.GetBlockPtr<util::CellStorage::CellData, true>(
|
||||
auto mld_cells_ptr = layout.GetBlockPtr<partition::CellStorage::CellData, true>(
|
||||
memory_ptr, DataLayout::MLD_CELLS);
|
||||
auto mld_cell_level_offsets_ptr = layout.GetBlockPtr<std::uint64_t, true>(
|
||||
memory_ptr, DataLayout::MLD_CELL_LEVEL_OFFSETS);
|
||||
|
||||
Reference in New Issue
Block a user