在设计优化编译器时是否考虑过遗传算法?

时间:2015-12-10 09:54:01

标签: compiler-construction compiler-optimization genetic

我想问一下是否有意义,如果确实有,是否有任何尝试?

澄清问题:

当编译器制造商使用优化器时,他们会尝试根据目标架构使编译器吐出最佳的装配顺序吗?
因此,从这个意义上说,他们必须想象在X案例中最适合使用的指令。所以我想在设计过程中,他们会凭直觉使用他们的装配知识,以及一些试验/错误过程和典型案例的基准测试(代码片段)他们针对优化器。

但是,如果汇编代码的编译器输出选择可以通过遗传算法来决定,遗传算法只需用两个标准来尝试所有内容:“尊重客户意图为不变”和“执行测试中的速度越快越好” 。
使用这个,似乎可以通过为元优化器提供数千个代码片段来优化,学习优化它们的最佳方法,然后是最终的优化器工作(如“在最终编译器中提供的那个”)来准备优化器。 )将检测哪个代码段与正在解析的客户端代码类似并应用转换。

我希望我很清楚。我不是建议在客户端代码编译期间使用GO的编译器,而是编译器,它将嵌入GO发现的结果的静态形式(在编译器制造商的实验室中运行)。

1 个答案:

答案 0 :(得分:1)

是的,它有。早期的支持者是蒙特利尔大学的Marc Feeley,他使用遗传算法为大型程序找到gcc选项的最佳组合,特别是Gambit Scheme编译器。

他还合着了一篇你可能会感兴趣的论文:

  

遗传指令调度和寄存器分配。在系统定量评估国际会议(QEST'04),第76-83页,2004年。

您可以在research page

上找到指向PDF的链接