MLGO: 用强化学习为 LLVM 提供优化策略
MLGO(Machine Learning Guided Compiler Optimization) 是使用机器学习技术,把 LLVM 中使用启发式(heuristics) 的优化转换成模型预测,对比 LLVM -Oz 优化有近 1.5~6% 的大小优化,性能有近 0.3~1.5% 提升。
MLGO(Machine Learning Guided Compiler Optimization) 是使用机器学习技术,把 LLVM 中使用启发式(heuristics) 的优化转换成模型预测,对比 LLVM -Oz 优化有近 1.5~6% 的大小优化,性能有近 0.3~1.5% 提升。
最近 Compiler Explorer 支持了显示 LLVM Opt Pipeline Output 的能力,对于我们理解一个函数经历了哪些 pass 的细节非常有帮助。简单推荐一下这个工具。
当我们不断追问“人为什么活着?人生的意义是什么?宇宙的本质是什么?”的时候,绝大多数人不会觉得我们是爱思考的聪明人,只会觉得“你这个人好怪”。
之前写 canonicalization 对循环的概念直接略过了,没做展开,循环在日常开发中使用还是挺广泛的,这里简单介绍 LLVM 中循环的概念。
canonicalization(规范化) 是编译器 IR(intermediate representation) 设计中的一个重要部分,它使代码转换(transformations) 变得简单高效。大多数编译器都有 canonicalization pass,对于后续进行编译器优化也起到很大作用。