1

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

4

1 回答 1

2

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

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

由于这个原因,我认为 KLEE 本身并不平行。有工作将支持测试生成的分析分成大块,交给并行运行的 KLEE(“Cloud9”)副本;这是划分工作的一种方法,但这些都是非常大的计算粒度,分布在独立处理器的云中。关键问题之一是“负载平衡”(为每个副本提供适量的工作,以便充分利用并行性)。见http://dslab.epfl.ch/pubs/cloud9.pdf

(请参阅我的简历,了解一系列具有基于 SMT 的细粒度计算的明确并行基础的工具)。

于 2015-12-09T17:15:59.460 回答