有人说:MLIR是高级编译的一个很好的基础设施,它可以减少每个级别上的阻抗失配。
当涉及到mlir时,复合术语“阻抗不匹配”到底意味着什么?
发布于 2020-10-25 09:22:46
有关这个主题的相关答案在这里,这是一个很好的上下文:https://stackoverflow.com/a/41017152/14457718
编译器工作的一种常见方式,比如在LLVM中,它们将有几个定义良好的接口(IRs),这些接口允许在该接口中进行优化并完成它们之间的转换。由于各种原因,我将在这篇文章中避免,一个共同的决定是保持尽可能少的国税局,并鼓励每个人编译/从他们。
决定使用更少的IRs会导致这样一种情况,即任何优化或概念都有更少的选择来表示主题。让我们以循环为例。LLVM将表示为较低级别的分支语句。这使得组合/拆分/展开循环变得更加困难,因为您需要理解给定一系列分支的原始循环。请注意,这并不是不可能的;只是由于“阻抗不匹配”,调试起来更困难,工作量更大。
MLIR声称减少阻抗失配,例如,它支持带循环的IRs,支持带分支的其他IRs,支持具有内存视图的其他IRs。给定更多的IRs,任何给定的主题都更有可能有一个优化很简单的IR,而不需要首先从不太合适的IR中重构概念信息。
MLIR目录中的方言列表,仅显示表示主题的更多选项:https://mlir.llvm.org/docs/Dialects/
边注指出,我在这里试图回答相关的问题,但您将从这些地方的社区得到更及时的反馈:https://discord.gg/xS7Z362 https://llvm.discourse.group/
https://stackoverflow.com/questions/64483054
复制相似问题