Chinaunix

标题: 关于优化 pass 的疑问 [打印本页]

作者: duanlin    时间: 2013-06-18 09:44
标题: 关于优化 pass 的疑问
拿LLVM或者GCC来说,优化的pass有好多种。
各个特性,比如:循环不变外提,常量传播,代数化简等等。。。
(先不考虑过程间的优化)
这些优化的pass并不是简简单单的选择几种组合就算是一个优化级别。

比如有 pass_a pass_b pass_c,在做完pass_a后,再做pass_b和pass_c的组合,
可是完事之后,又有可以被pass_a优化的可能。
就象这样:

while(pass_a(tree) == 有变化)
{
  pass_b(tree);
  pass_c(tree);
}

这只是简单的情况,在100多种pass的时候,这之间的穿插关系我想会极为复杂。

我想问的问题是:有没有 方法 、 理论 或者 标准,说明如何达到某种特定的优化程度?

作者: EricFisher    时间: 2013-06-18 11:46
优化pass之间是有联系的,对于一个程序,有时候随机改变下pass顺序,可能会带来性能提升。有一种做法,叫做迭代编译,利用选项组合或者pass排列顺序来调优。
作者: duanlin    时间: 2013-06-18 13:05
如果有一个优化程度的目标,奔着这个目标去的话,有没有算法解能找到如何排列和组合已知的pass们呢?
作者: EricFisher    时间: 2013-06-19 08:49
关键看你这个“优化程度的目标”怎么定义了,呵呵。
作者: ChinaUnics    时间: 2014-09-27 04:09
Michael Wolfe, Scalar vs. Parallel Optimizations, 1990




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2