LLVM:在分布式/并发系统中移动生成的代码

mue*_*bau 5 concurrency code-generation move llvm

我主要使用 LLVM C++ API 作为脚本语言的代码生成器,在运行时解析和评估(生成代码、编译和执行代码)。目前,我正在研究分布式/并发系统中的未来用例,并想知道是否以及如何实现这些用例。也许你可以分享你的想法:

  1. 有没有一种方法可以在分布式系统的一个节点上生成 LLVM 代码,将其序列化为某种有线格式,将其发送到另一个节点,在那里编译或重新编译,然后执行它?我已经在寻找序列化模块/函数的方法了。
  2. 有没有办法在同一个 LLVMContext 中启用多线程代码生成/编译,即线程池共享 LLVMContext 并同时在此上下文中生成/执行代码。到目前为止我发现在这种情况下每个线程都应该有一个 LLVMContext。但是,我可以在不同上下文之间共享一个模块,并与 1) 相关,如何将生成的代码从一个模块移动到另一个模块?

Ant*_*kov 3

您绝对可以使用 LLVM 位码格式将代码从一个节点转发到另一个节点。有关更多信息,请参阅 include/llvm/Bitcode/ReaderWriter.h 及周围内容。您还可以检查 LLVM 工具的来源,以了解位码是如何序列化和反序列化的。您可能会发现http://llvm.org/docs/BitCodeFormat.html很有用。