2

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

澄清问题:

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

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

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

4

1 回答 1

1

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

他还与人合着了一篇你可能会觉得有趣的论文:

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

您可以在他的研究页面上找到指向 PDF 的链接

于 2015-12-10T14:18:28.760 回答