循环不变代码移动:原理、挑战与机器学习优化
1. 引言
在编译器优化领域,循环不变代码移动(Loop-Invariant Code Motion,LICM)是一种重要的技术,旨在提高程序的性能。然而,简单地应用 LICM 并不总是能带来性能提升,有时甚至会导致性能下降。本文将详细介绍 LICM 的原理、影响,并探讨如何利用机器学习技术来优化 LICM 的应用。
2. LICM 与其他优化的差异
与函数内联等优化技术相比,LICM 具有以下特点:
- 执行级别 :LICM 在汇编级别进行,展示了机器学习技术在编译器不同抽象级别的通用性。
- 目标侧重 :之前的函数内联启发式方法注重可理解性和易于集成到编译器中,而本文提出的方法旨在使诱导模型达到最大性能。
- 模型选择 :系统地评估各种学习算法及其参数设置,这需要将机器学习工具无缝集成到编译器框架中。
- 评估指标 :由于在某些情况下,准确性可能不是诱导模型最合适的性能指标,因此对 LICM 预测模型的评估基于估计的最坏情况执行时间(WCET)。
3. LICM 应用的动机示例
常见的尽可能应用 LICM 的策略可能会降低性能。以下是六个代表性基准测试的估计 WCET 情况,100% 表示未应用 LICM 时的 WCET:
| 基准测试 | 应用 LICM 后的 WCET 变化 |
| ---- | ---- |
| iir_biquad_N_sections | 增
超级会员免费看
订阅专栏 解锁全文
2038

被折叠的 条评论
为什么被折叠?



