019、MLIR的ExecutionEngine:JIT编译与运行时执行
2026/6/15 10:34:49 网站建设 项目流程

MLIR的ExecutionEngine:JIT编译与运行时执行

一个让我熬夜到凌晨三点的bug

去年做AI推理加速器项目,需要把自定义的MLIR dialect动态编译到x86上跑性能验证。代码写完后,mlir-opt跑得顺溜,mlir-translate也正常,但一调用 ExecutionEngine 的invoke方法,程序就静默崩溃——没有段错误,没有异常,就像函数根本没被调用一样。

我盯着jit目录下的.mlir文件看了两个小时,最后发现是函数签名里漏了一个!llvm.ptr类型参数。这个坑让我意识到:ExecutionEngine 不是黑盒,它背后是 LLVM JIT 编译器的完整链路,任何一个环节的类型不匹配,都会导致运行时静默失败。

ExecutionEngine 到底在干什么

MLIR 的 ExecutionEngine 本质上是一个轻量级的 JIT 编译器封装。它接收 MLIR 模块(通常是 LLVM dialect 或转换后的标准 dialect),通过 LLVM ORC JIT 引擎生成机器码,然后提供invoke方法直接调用编译后的函数。

核心流程就三步:

  1. 模块转换:把输入的 MLIR 模块降到 LLV

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询