符号执行工具KLEE 运行可以并行吗?

Can symbolic execution tool KLEE run in parallel?

根据他们的论文 (OSDI'08),符号执行工具 KLEE 需要大约 1 小时才能为单个 COREUTIL 应用程序生成测试用例。我想知道它是否可以 运行 并行?(比如,多核甚至 GPU 上的多线程)?

大多数静态分析工具都是使用本质上是单线程的语言(C、C++、Java)构建的。

虽然在这些语言中提供了并行性支持,但作为一般规则,静态分析工具构建者不会利用它。部分问题在于此类工具中的并行性是高度不规则的,并且不会以易于找到的大块形式出现,从而降低开销,这是确保高效并行性的必要条件。这使得工具设计者很难 find/designate 这样的块,他们已经在与使他们的工具工作的难题作斗争。

我不认为 KLEE 本身是平行的。有工作将支持测试生成的分析分成大块,以交给平行的 运行 个 KLEE 副本("Cloud9");这是一种划分工作的方法,但这些确实是很大的计算粒度,分布在独立处理器的云中。关键问题之一是 "load balancing"(为每个副本分配适当的工作量,以便充分利用并行性)。参见 http://dslab.epfl.ch/pubs/cloud9.pdf

(查看我的简介,了解一系列工具,这些工具具有明确的并行基础和基于 SMT 的细粒度计算)。