中文

Cilkmem:用于分析分叉-连接并行程序内存高水位线的算法

数据结构与算法 2019-10-29 v1 分布式、并行与集群计算

摘要

设计旨在大规模并行计算系统上运行的递归分叉-连接(fork-join)程序的软件工程师必须关注其程序的内存需求在多数处理器执行中如何扩展。尽管存在用于在并行程序某次特定执行期间测量内存使用情况的工具,此类工具无法界定所有可能并行执行中的最坏情况内存使用。本文介绍Cilkmem,一种分析确定性Cilk程序执行以确定其pp处理器内存高水位线(MHWM)的工具,MHWM即该程序在\emph{所有可能}的pp处理器执行中的最坏情况内存使用。Cilkmem采用两种新算法计算pp处理器MHWM。第一种算法在O(T1p)O(T_1 \cdot p)时间内计算出精确的pp处理器MHWM,其中T1T_1为程序的总工作量。第二种算法在O(T1)O(T_1)时间内解决近似阈值问题,即对于给定的内存阈值MM,判断pp处理器MHWM是否超过M/2M/2,或是否保证小于MM。两种算法均内存高效,分别需要O(pD)O(p \cdot D)O(D)O(D)空间,其中DD为程序在单线程上执行的最大调用栈深度。我们的实证研究表明Cilkmem通常开销较低。在来自Cilkbench套件的十个应用基准测试中,精确算法在p=128p=128时的几何平均乘法开销为1.541.54,而近似阈值算法的开销为1.361.36且与pp无关。此外,我们使用Cilkmem揭示并诊断了一个大型图像对齐程序中先前未知的问题,该问题导致并行执行下出乎意料的高内存使用。

关键词

引用

@article{arxiv.1910.12340,
  title  = {Cilkmem: Algorithms for Analyzing the Memory High-Water Mark of Fork-Join Parallel Programs},
  author = {Tim Kaler and William Kuszmaul and Tao B. Schardl and Daniele Vettorel},
  journal= {arXiv preprint arXiv:1910.12340},
  year   = {2019}
}