Self-adjusting computation is an approach for automatically producing dynamic algorithms from static ones. The approach works by tracking control and data dependencies, and propagating changes through the dependencies when making an update. Extensively studied in the sequential setting, some results on parallel self-adjusting computation exist, but are either only applicable to limited classes of computations, such as map-reduce, or are ad-hoc systems with no theoretical analysis of their performance. In this paper, we present the first system for parallel self-adjusting computation that applies to a wide class of nested parallel algorithms and provides theoretical bounds on the work and span of the resulting dynamic algorithms. As with bounds in the sequential setting, our bounds relate a "distance" measure between computations on different inputs to the cost of propagating an update. However, here we also consider parallelism in the propagation cost. The main innovation in the paper is in using Series-Parallel trees (SP trees) to track sequential and parallel control dependencies to allow propagation of changes to be applied safely in parallel. We show both theoretically and through experiments that our system allows algorithms to produce updated results over large datasets significantly faster than from-scratch execution. We demonstrate our system with several example applications, including algorithms for dynamic sequences and dynamic trees. In all cases studied, we show that parallel self-adjusting computation can provide a significant benefit in both work savings and parallel time.
翻译:自调整计算是一种从静态算法自动产生动态算法的方法。 这种方法在更新时通过跟踪控制和数据依赖性, 并通过依赖性来传播变化。 在顺序环境下进行广泛研究后, 平行自调整计算的某些结果存在, 但有些结果或仅适用于有限的计算类别, 如地图编辑, 或是临时混合系统, 没有对其性能进行理论分析 。 在本文中, 我们提出适用于广泛类嵌套平行平行算法的第一个平行自调整计算系统, 并提供关于由此产生的动态算法的工作和跨度的理论界限 。 在顺序设置的界限中, 我们的界限将不同投入的计算之间的“ 距离” 测量与传播更新的成本联系起来。 但是, 我们在这里也考虑传播成本的平行性。 文件中的主要创新是使用 Series- Parall 树( SP 树 ) 来跟踪序列和平行控制依赖性, 以便能够安全地进行变化的传播。 我们用理论和实验来显示我们系统的动态运算法, 我们用大量动态算算算方法, 显示我们系统进行大量动态运算的结果, 显示我们系统进行大量动态运算, 和实验的进度, 显示我们系统能 显示大量动态运算的进度 显示, 显示, 显示我们系统进行大量动态算算法的进度 显示, 显示, 显示我们系统进行大量动态算算法的进度的进度 显示我们系统能 显示, 显示, 显示, 显示, 显示, 显示, 显示, 显示, 显示我们系统进行重大动态算法 显示, 显示, 显示, 显示, 显示, 显示, 显示, 显示, 显示我们系统进行重大动态的进度的进度 显示, 显示, 显示, 显示, 显示, 显示, 显示, 显示, 我们的 显示, 我们的 和 显示, 和 和实验性变动性算法 的进度 显示, 显示, 显示, 显示, 我们的 显示, 和实验中, 我们的 显示, 和实验性算法 和实验中, 显示, 显示, 显示, 显示, 显示, 显示, 和实验, 显示, 我们的 和实验性算法 和实验 显示, 我们, 显示, 我们