我想问,这是否有意义,如果有,是否有任何企图?
对问题的澄清:
当编译器制造者在优化器上工作时,他们试图让编译器按照目标体系结构吐出最好的组装序列,对吗?
因此,在这个意义上,他们必须想象什么将是最好的指导使用的案例X。所以我想象在设计过程中,他们使用他们的组装知识的直觉,和一些试错过程与基准的典型案例(代码片段),他们的目标是优化器。
但是,如果编译器输出汇编语言代码的选择可以由一种遗传算法来决定,它可以简单地用两个标准来测试:“尊重客户端意图不变”和“执行测试速度越快越好”。
使用这种方法,似乎可以通过向元优化器提供数千个要优化的代码片段来准备优化器,学习优化它们的最佳方法,然后最终的优化器任务(如“在最终编译器中交付的代码”)将是检测哪些代码片段与正在解析的客户端代码相似,并应用转换。
我希望我能说清楚。我建议的不是在客户端代码编译期间使用GO的编译器,而是嵌入GO (在编译器制造者的实验室中运行的)结果的静态形式的编译器。
发布于 2015-12-10 14:18:28
是的,是的。一位早期的支持者是蒙德雷亚尔大学的马克·费利( Marc Feeley ),他利用遗传算法为大型程序,特别是Gambit计划编译器,寻找gcc选项的最佳组合。
他还合著了一篇你可能会觉得有趣的论文:
遗传指令调度和寄存器分配。在国际系统定量评价会议(QEST'04)上,第76至83页,2004年。
你可以在他的研究页上找到一个指向PDF的链接。
https://stackoverflow.com/questions/34198633
复制相似问题