Research output: Chapter in Book/Report/Conference proceeding › Conference paper

**A Parallel Worklist Algorithm for Modular Analyses.** / Van Es, Noah; Stiévenart, Quentin; Van der Plas, Jens; De Roover, Coen.

Research output: Chapter in Book/Report/Conference proceeding › Conference paper

Van Es, N, Stiévenart, Q, Van der Plas, J & De Roover, C 2020, A Parallel Worklist Algorithm for Modular Analyses. in *Proceedings of the 20th IEEE International Working Conference on Source Code Analysis and Manipulation (SCAM 2020).* IEEE, pp. 1-12, 20th IEEE International Working Conference on Source Code Analysis and Manipulation (SCAM2020), Adelaide, Australia, 27/09/20.

Van Es, N., Stiévenart, Q., Van der Plas, J., & De Roover, C. (2020). A Parallel Worklist Algorithm for Modular Analyses. In *Proceedings of the 20th IEEE International Working Conference on Source Code Analysis and Manipulation (SCAM 2020) *(pp. 1-12). IEEE.

Van Es N, Stiévenart Q, Van der Plas J, De Roover C. A Parallel Worklist Algorithm for Modular Analyses. In Proceedings of the 20th IEEE International Working Conference on Source Code Analysis and Manipulation (SCAM 2020). IEEE. 2020. p. 1-12

@inproceedings{3ae11a843aaa454c968e8f31ff6d2762,

title = "A Parallel Worklist Algorithm for Modular Analyses",

abstract = "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 3x and 8x when using 4 workers, and speedups between 8x and 32x when using 16 workers.For ModConc, we achieve a maximum speedup of 15x.",

keywords = "static analysis, modular analysis, parallelism, concurrency, dynamic languages",

author = "{Van Es}, Noah and Quentin Sti{\'e}venart and {Van der Plas}, Jens and {De Roover}, Coen",

year = "2020",

month = "9",

day = "27",

language = "English",

isbn = "978-1-7281-9248-2",

pages = "1--12",

booktitle = "Proceedings of the 20th IEEE International Working Conference on Source Code Analysis and Manipulation (SCAM 2020)",

publisher = "IEEE",

}

TY - GEN

T1 - A Parallel Worklist Algorithm for Modular Analyses

AU - Van Es, Noah

AU - Stiévenart, Quentin

AU - Van der Plas, Jens

AU - De Roover, Coen

PY - 2020/9/27

Y1 - 2020/9/27

N2 - 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 3x and 8x when using 4 workers, and speedups between 8x and 32x when using 16 workers.For ModConc, we achieve a maximum speedup of 15x.

AB - 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 3x and 8x when using 4 workers, and speedups between 8x and 32x when using 16 workers.For ModConc, we achieve a maximum speedup of 15x.

KW - static analysis

KW - modular analysis

KW - parallelism

KW - concurrency

KW - dynamic languages

M3 - Conference paper

SN - 978-1-7281-9248-2

SP - 1

EP - 12

BT - Proceedings of the 20th IEEE International Working Conference on Source Code Analysis and Manipulation (SCAM 2020)

PB - IEEE

ER -

ID: 53858364