Skip to main content
QUICK REVIEW

[论文解读] Doing More for Less -- Cache-Aware Parallel Contraction Hierarchies Preprocessing

Dennis Luxen, Dennis Schieferdecker|arXiv (Cornell University)|Aug 13, 2012
Graph Theory and Algorithms参考文献 5被引用 3
一句话总结

本文提出了一种缓存感知的、基于共享内存的并行预处理算法,用于收缩层次图(Contraction Hierarchies, CH),通过表查找哈希(tabulation hashing)实现高性能,且每核内存开销极低。通过优化数据结构提升缓存局部性,该方法显著减少了预处理时间——相比PRAM优化的理论设计,最高可快25%——同时每核仅使用384 KB内存,适用于全球规模的道路网络。

ABSTRACT

Contraction Hierarchies is a successful speedup-technique to Dijkstra's seminal shortest path algorithm that has a convenient trade-off between preprocessing and query times. We investigate a shared-memory parallel implementation that uses $O(n+m)$ space for storing the graph and O(1) space for each core during preprocessing. The presented data structures and algorithms consequently exploits cache locality and thus exhibit competitive preprocessing times. The presented implementation is especially suitable for preprocessing graphs of planet-wide scale in practice. Also, our experiments show that optimal data structures in the PRAM model can be beaten in practice by exploiting memory cache hierarchies.

研究动机与目标

  • 设计一种并行CH预处理算法,使每核内存开销最小化,同时在大规模道路网络上保持高性能。
  • 在CH预处理过程中优化优先队列数据结构的缓存局部性,以减少内存访问延迟。
  • 证明在实际实现中,通过利用内存层次结构的优化方法,可超越理论上的PRAM优化算法在真实场景中的表现。
  • 通过将每核内存消耗降低至恒定的384 KB,实现对全球规模道路网络的高效预处理。
  • 评估表查找哈希在CH预处理中对冲突解决和优先队列存储的影响。

提出的方法

  • 该方法使用表查找哈希实现一种缓存高效的优先队列冲突解决机制,每核仅需384 KB内存,显著降低内存占用。
  • 采用基于表查找和异或运算的哈希函数,将节点优先级映射到大小为32,768项的紧凑存储表中。
  • 算法采用共享内存并行模型,每个核心仅使用O(1)的额外空间,支持在多核系统上高效扩展。
  • 使用对已确定节点数量设置固定限制的见证搜索方法来确定收缩优先级,确保预处理效率。
  • 采用15位哈希表(2^15项)存储优先队列数据,最小化冲突,同时相比全范围表将内存消耗减少50%。
  • 实现采用C++编写,使用GCC -O3优化,并在配备128 GB内存的AMD Opteron 8核系统上进行评估。

实验结果

研究问题

  • RQ1在CH预处理中,缓存感知设计是否能在实际应用中超越PRAM优化的理论数据结构?
  • RQ2表查找哈希对并行CH预处理中优先队列存储的性能和内存效率有何影响?
  • RQ3在大规模道路网络上实现具有竞争力的预处理时间,每核所需的最小内存开销是多少?
  • RQ4尽管使用更简单的哈希函数,通过优化数据结构提升缓存局部性是否能减少预处理时间?
  • RQ5随着图规模增大,优化实现与理论模型之间的性能差距如何变化?

主要发现

  • 基于表查找哈希的实现(xorbreak)达到了最快的预处理时间,优于Boost的unordered_map和Google的dense_hash_map。
  • 对于全球规模的道路网络,xorbreak将预处理时间缩短至15,815.10秒,而基线偏置数组方法为21,873.58秒。
  • 在全局规模图上,xorbreak与xorhash的性能差距缩小至仅2%,表明其对数据规模增大的鲁棒性。
  • xorhash变体每核仅使用384 KB内存,内存开销与图大小无关,提升了缓存未命中抵抗能力。
  • Boost和Google的哈希表实现未能在18小时内完成全球规模预处理,凸显其可扩展性局限。
  • 结果表明,实际的缓存感知设计即使使用更简单的哈希函数,也能在真实世界性能中超越理论上的PRAM优化算法。

更好的研究,从现在开始

从阅读论文到最终审阅,大幅缩短您的研究时间。

无需绑定信用卡

本解读由 AI 生成,并经人工编辑审核。