【24h】

A Parallel Worklist Algorithm for Modular Analyses

机译:模块化分析的并行工作表算法

获取原文

摘要

One way to speed up static program analysis is to make use of today’s multi-core CPUs by parallelising the analysis. Existing work on parallel analysis usually targets traditional data-flow analyses for static, first-order languages such as C. Less attention has been given so far to the parallelisation of more general analyses that can also target dynamic, higher-order languages such as JavaScript. These are significantly more challenging to parallelise, as dependencies between analysis results are only discovered during the analysis itself. State-of the-art parallel analyses for such languages are therefore usually limited, both in their applicability and performance gains. In this work, we propose the parallelisation of modular analyses. Modular analyses compute different parts of the analysis in isolation of one another, and therefore offer inherent opportunities for parallelisation that have not been explored so far. In addition, they can be used to develop a general class of analysers for dynamic, higher-order languages. We present a parallel variant of the worklist algorithm that is used to drive such modular analyses. To further speed up its convergence, we show how this algorithm can exploit the monotonicity of the analysis. Existing modular analyses can be parallelised without additional effort by instead employing this parallel worklist algorithm. We demonstrate this for ModF, an inter-procedural modular analysis, and for ModConc, an inter-process modular analysis. For ModConc, we reveal an additional opportunity to exploit even more parallelism in the analysis. Our parallel worklist algorithm is implemented and integrated into MAF, a framework for modular program analysis. Using a set of Scheme benchmarks for ModF, we usually observe speedups between $3imes$ and $8imes$ when using 4 workers, and speedups between $8imes$ and $32imes$ when using 16 workers. For ModConc, we achieve a maximum speedup of $15imes$.
机译:一种加快静态程序分析速度的方法是通过并行化分析来利用当今的多核CPU。现有的并行分析工作通常以传统的数据流分析为目标,以静态的一阶语言(例如C)为目标。到目前为止,对通用分析的并行化的关注较少,这些通用分析也可以以动态高级语言(例如JavaScript)为目标。这些问题并行化要困难得多,因为分析结果之间的依赖关系仅在分析本身期间才发现。因此,此类语言的最新并行分析通常在适用性和性能方面都受到限制。在这项工作中,我们提出了模块化分析的并行化。模块化分析彼此独立地计算分析的不同部分,因此为并行化提供了迄今为止尚未探索的内在机会。此外,它们可用于为动态的高阶语言开发通用的分析器类。我们提出了工作清单算法的并行变体,用于驱动此类模块化分析。为了进一步加快其收敛速度,我们展示了该算法如何利用分析的单调性。通过使用此并行工作列表算法,无需进行额外的工作就可以并行化现有的模块化分析。我们针对ModF(过程间模块分析)和ModConc(过程间模块分析)对此进行了演示。对于ModConc,我们揭示了在分析中利用更多并行性的额外机会。我们的并行工作列表算法已实现并集成到MAF(用于模块化程序分析的框架)中。使用针对ModF的一组Scheme基准,当使用4个工作程序时,我们通常观察到$ 3 \ times $和$ 8 \ times $之间的加速,当使用16个工作程序时,我们观察到$ 8 \ times $和$ 32 \ times $之间的加速。对于ModConc,我们实现了$ 15 \ times $的最大加速。

著录项

相似文献

  • 外文文献
  • 中文文献
  • 专利
获取原文

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号