2020-Pipelining Bottom-up Data Flow Analysis #65
Replies: 3 comments 2 replies
-
传统 modular analysis 是给函数做 summary,根据调用关系明确构建 summary 的顺序,进而通过排序做到并行。 本文认为为单个函数生成 summary 的过程可以拆分成多个 sub-tasks,同样可以做到并行。并以 IFDS / IDE 框架为基础,并行化生成可用于 null dereference 和 taint analysis 检查的 summary。(下图 fig 2 就是将一个 summary 的构建拆分成了 3 个阶段,结果是获得了更细粒度的流水线,最理想情况下加速 150%) |
Beta Was this translation helpful? Give feedback.
-
如果将待分析的函数称为 current function,调用 current function 的函数称为 caller,current function 调用的函数称为 callee,那么本文将创建 summary 分成了 3 个步骤:
如果称 current function 为 |
Beta Was this translation helpful? Give feedback.
-
这个图的 speedup 是 (Coyote 比上正常开多线程 - 1)。按道理说,如果 f0 / f1 / f2 三段时间长度相等,那图中的 speedup 应该在 2.0 以上,因为 2.0 是三段相等的最糟糕情况。但是正如文中所说的 f0 和 f1 的时间要远远长于 f2,但是在流水线里还必须先计算 f0 和 f1,这对加速比产生了不小的影响,不过文中提出 “将 f0 / f1 内部将 data fact 分组计算” 又可以显著减少 f0 / f1 的长度。再搭配上本身就存在的函数级别的并行,speedup 就来到了 3.0。 本文提出的方法和传统的 function level 的调度策略和计算方式是正交的,也就是说本文的方法可以作用在所有 function level 方法上面并再进行加速。 后文对本文提出方法进行了讨论:对于一个调用图,一般来说在叶子处,互相调用关系比较简单;而越靠近程序入口,调用关系越复杂。这体现在调用边的稠密上。
|
Beta Was this translation helpful? Give feedback.
-
https://dl.acm.org/doi/10.1145/3377811.3380425
Qingkai Shi The Hong Kong University of Science and Technology Hong Kong, China qshiaa@cse.ust.hk
Charles Zhang The Hong Kong University of Science and Technology Hong Kong, China charlesz@cse.ust.hk
ICSE '20
from @Ling-WYJ
Beta Was this translation helpful? Give feedback.
All reactions