本文主要是介绍90、利用JIT编译技术完成对生成的代码的编译,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
在完成代码生成后,就需要对生成的代码进行编译,这里采用一种叫做 jit 的编译技术来进行。
所谓 jit,就是just in time,可以理解为实时编译,它是在程序运行过程中对程序生成的一些中间文件进行编译,从而生成机器码的技术。
对应到 codegen 场景下,由于 codegen 中生成的代码是在程序运行时生成的,因此很适合使用 jit 编译来进行。
进行 jit 编译
那么怎么在程序运行时进行编译呢?
其中很重要的一步,是需要将编译命令嵌入到程序中,在程序运行时以系统调用的形式来执行编译命令。
在5th_codegen/resnet_codegen.cc 中,封装了一个 CompileModule 函数,用来完成对生成的代码文本的 jit 编译过程。
-
使用 std::system 函数来完成对于系统命令的调用。
system 函数可以调用任意的系统命令,例如在 linux 环境下的返回上一级目录的命令(cd ..) ,可以使用 std::system("cd ../") 来完成。
-
使用 g++ 作为编译器完成从以 .cc 为后缀的源代码文件(也就是codegen生成的文本文件,如 codegen/conv2d_14.ccÿ
这篇关于90、利用JIT编译技术完成对生成的代码的编译的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!