![22733f3cab526731faa8fb3f4ef1848a.png](https://i-blog.csdnimg.cn/blog_migrate/3b12cb6202bf274dbf94f609b7d491e0.jpeg)
代码生成的接口
TVM代码生成的接口和主要类型,可以总结为两个build,两个module,两个function。它提供了两个代码生成的接口,tvm.build和tvm.relay.build,前者是针对算子的代码生成,后者是针对relay计算图的代码生成。在0.7版本中,tvm进行了IR的统一,使得两个build的输入参数类型都可以是IRModule,输出类型都是运行时Module。尽管两个build接口统一了输入类型,但是内部包含的函数类型是不一样的,算子编译时是tvm.tir.function.PrimFunc,而relay图编译时函数类型是tvm.relay.function.Function。TVM在设计时提供了方便的调试功能,通过IRModule的astext函数可以查看ir中间描述,通过运行时module的get_source查看生成的代码。下面通过两个简单的例子查看算子和relay图的ir中间描述和以及对应生成的源代码。
- tvm.build
- tvm.relay.build
- tvm.ir.module.IRModule
- tvm.runtime.module.Module
- tvm.tir.function.PrimFunc
- tvm.relay.function.Function