LLVM for TVM

田海立@CSDN 2023-06-01

本文简明列举LLVM作为target,如何集成到TVM里的。

{cmake/modules/LLVM.cmake}

0. 设置编译选项 -- USE_LLVM

build option:

- USE_LLVM: ON/OFF/<path to llvm-config>

{set in cmake/config.cmake, and copy into build/}

1. 执行llvm-config获取llvm配置

find_llvm($(USE_LLVM), $([LLVM_VERSION]))

// {from cmake/utils/FindLLVM.cmake}

=> LLVM_INCLUDE_DIRS

llvm-config --cxxflags

output match -I

=> LLVM_DEFINITIONS

llvm-config --cxxflags

output match -D

=> LLVM_LIBS

llvm-config --libfiles // for llvm libs

llvm-config --system-libs // for llvm sys libs

=> TVM_LLVM_VERSION

llvm-config --version

获取之后,设置:

set env:

TVM_LLVM_VERSION

define Macro:

TVM_LLVM_VERSION

比如我的MacBook上:

执行cmake ..

会执行以上过程,通过find_llvm,执行llvm-config获取llvm信息

 而这个过程与通过手动执行llvm-config结果一致:

2. TVM编译选项:

Compile options:

COMPILER_LLVM_SRCS <= src/target/llvm/*.cc

TVM_LINKER_LIBS <= $(LLVM_LIBS)

COMPILER_SRCS <= $(COMPILER_LLVM_SRCS)

总结:

  • llvm的配置通过指定llvm-congig;
  • 执行llvm-config获取各种配置信息;
  • 把llvm的信息添加到tvm编译系统中。

以上在tvm-0.11.1版本中,其他版本可能会有所不同。