一句话:提出并行精化框架,通过精化约束与学习子句共享,加速多线程程序验证。
多线程程序验证对保证并发程序正确性至关重要,但路径爆炸使其耗时且难以扩展到工业规模。并行处理是应对大规模计算的主流手段,因此本文研究并发程序验证中高效抽象精化技术的并行化。作者提出并行精化框架,用多个引擎并行精化抽象;不同于已有并行化搜索过程的工作,该方法通过共享精化约束与学习子句实现并行,从而显著减少迭代次数。框架实现在基于调度约束的抽象精化方法上,并在 SV-COMP 2018 上评估。对需要大量迭代的复杂程序,迭代次数呈线性缩减,验证性能显著提升。
Program verification is one of the most important methods to ensuring the correctness of concurrent programs. However, due to the path explosion problem, concurrent program verification is usually time consuming, which hinders its scalability to industrial programs. Parallel processing is a mainstream technique to deal with those problems which require mass computing. Hence, designing parallel algorithms to improve the performance of concurrent program verification is highly desired. This paper focuses on parallelization of the abstraction refinement technique, one of the most efficient techniques for concurrent program verification. We present a parallel refinement framework which employs multiple engines to refine the abstraction in parallel. Different from existing work which parallelizes the search process, our method achieves the effect of parallelization by refinement constraint and learnt clause sharing, so that the number of required iterations can be significantly reduced. We have implemented this framework on the scheduling constraint based abstraction refinement method, one of the best methods for concurrent program verification. Experiments on SV-COMP 2018 show the encouraging results of our method. For those complex programs requiring a large number of iterations, our method can obtain a linear reduction of the iteration number and significantly improve the verification performance.