离散区间分析与ReLU神经网络的热带多面体静态分析
1. 离散区间分析
在程序验证中,离散区间分析是一项重要的技术,它有助于更精确地分析程序状态。
1.1 抽象解释与Crab解释器
抽象解释器Crab在处理任意表达式时,会通过提取区间约束来简化表达式,直到简化后的表达式能被ldd - boxes库支持。当前的Crab实现会安全地忽略非单位系数的算术运算,不过在某些基准测试中,LLVM并未生成带有非单位系数的指令。
1.2 性能比较
为了比较不同实现的性能,进行了相关实验。实验对190个控制流和循环程序进行分析,设置超时时间为180秒,内存限制为8GB。通过三个图表来展示分析时间,标记“●”表示在资源耗尽前完成的域,“✖”表示超时,“◆”表示内存不足,标记大小反映该位置的散点数量。
- 不同排序的影响 :对于ldd - boxes,不同的变量排序(静态排序和动态排序)对性能有显著影响,且没有明显的优劣之分。
- rdd - boxes与ldd - boxes的对比 :rdd - boxes分析通常更快。在180秒的时间限制下,rdd - boxes有7个程序超时,而静态和动态ldd - boxes分别有13个和12个程序超时。推测性能差异的主要原因是Crab分析器中的区间提取过程,ldd - boxes的区间提取成本较高,有时会使rdd - boxes明显更快,但rdd - boxes执行的最优转移函数可能引入更多析取分裂,也可能导致其变慢。
| 实现 |
|---|
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



