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

Has genetic algorithm been considered when designing optimizing compilers?

我想问一下是否有道理,如果有的话,有没有尝试过?

问题说明:

当编译器制造商在优化器上工作时,他们试图让编译器根据目标体系结构吐出最佳汇编序列,对吗?
所以从这个意义上说,他们必须想象在情况 X 中使用什么是最好的指令。所以我想在设计过程中,他们会使用他们的汇编知识凭直觉,以及一些 trial/error 过程与典型案例的基准测试(代码片段)他们针对优化器。

但是,如果汇编代码的编译器输出选择可以由遗传算法决定,该算法将简单地尝试符合两个标准的所有内容:"respecting the client intention as invariant" 和 "the more speed in the execution test the better"。
使用它,似乎可以通过向元优化器提供数千个代码片段进行优化来准备优化器,学习优化它们的最佳方法,然后最终的优化器工作(如 "the one delivered in the final compiler" 中所示)将是检测哪个片段与正在解析的客户端代码相似并应用翻译。

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

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

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

Genetic instruction scheduling and register allocation. In International Conference on the Quantitative Evaluation of Systems (QEST'04), pages 76-83, 2004.

你可以在他的 research page

上找到 link 的 PDF