我想问一下是否有意义,如果确实有,是否有任何尝试?
澄清问题:
当编译器制造商使用优化器时,他们会尝试根据目标架构使编译器吐出最佳的装配顺序吗?
因此,从这个意义上说,他们必须想象在X案例中最适合使用的指令。所以我想在设计过程中,他们会凭直觉使用他们的装配知识,以及一些试验/错误过程和典型案例的基准测试(代码片段)他们针对优化器。
但是,如果汇编代码的编译器输出选择可以通过遗传算法来决定,遗传算法只需用两个标准来尝试所有内容:“尊重客户意图为不变”和“执行测试中的速度越快越好” 。
使用这个,似乎可以通过为元优化器提供数千个代码片段来优化,学习优化它们的最佳方法,然后是最终的优化器工作(如“在最终编译器中提供的那个”)来准备优化器。 )将检测哪个代码段与正在解析的客户端代码类似并应用转换。
我希望我很清楚。我不是建议在客户端代码编译期间使用GO的编译器,而是编译器,它将嵌入GO发现的结果的静态形式(在编译器制造商的实验室中运行)。
答案 0 :(得分:1)
是的,它有。早期的支持者是蒙特利尔大学的Marc Feeley,他使用遗传算法为大型程序找到gcc选项的最佳组合,特别是Gambit Scheme编译器。
他还合着了一篇你可能会感兴趣的论文:
遗传指令调度和寄存器分配。在系统定量评估国际会议(QEST'04),第76-83页,2004年。
您可以在research page
上找到指向PDF的链接