在完成代码生成后,就需要对生成的代码进行编译,这里采用一种叫做 jit 的编译技术来进行。
所谓 jit,就是just in time,可以理解为实时编译,它是在程序运行过程中对程序生成的一些中间文件进行编译,从而生成机器码的技术。
对应到 codegen 场景下,由于 codegen 中生成的代码是在程序运行时生成的,因此很适合使用 jit 编译来进行。
进行 jit 编译
那么怎么在程序运行时进行编译呢?
其中很重要的一步,是需要将编译命令嵌入到程序中,在程序运行时以系统调用的形式来执行编译命令。
在5th_codegen/resnet_codegen.cc 中,封装了一个 CompileModule 函数,用来完成对生成的代码文本的 jit 编译过程。
-
使用 std::system 函数来完成对于系统命令的调用。
system 函数可以调用任意的系统命令,例如在 linux 环境下的返回上一级目录的命令(cd ..) ,可以使用 std::sy