【TVM系列】0、安装LLVM以及TVM

安装llvm

# 下载源码
git clone https://github.com/llvm/llvm-project.git
# 新建编译目录
sudo mkdir -p llvm-project/build
# 进入编译目录
cd llvm-project/build
# cmake生成编译信息
cmake -G "Unix Makefiles" -DLLVM_ENABLE_PROJECTS="clang" -DLLVM_TARGETS_TO_BUILD=X86 -DCMAKE_BUILD_TYPE="Release" -DLLVM_INCLUDE_TESTS=OFF -DCMAKE_INSTALL_PREFIX="/home/Project/llvm" ../llvm
# 编译
cmake --build .
# 安装到安装目录
cmake --build . --target install

其中,我使用的版本是

# commit eddecd3ade5ce1b827dafb84e8137cc6f89576fb (**HEAD ->** **main**, **origin/main**, **origin/HEAD**)
# Author: Florian Hahn <flo@fhahn.com>
# Date:   Fri Feb 24 09:41:52 2023 +0100

注意:

  • 安装llvm通过官方给的包似乎更方便,文件也比较小。但我用那种方式遇到一些问题,于是便采用了源码编译安装的方式。
  • 新版本的llvm似乎已经不能使用configure那一套方式安装,这里在选择教程时需要注意。

安装TVM

git clone --recursive https://github.com/apache/tvm tvm
mkdir build
cp cmake/config.cmake build
cd build/
vi config.cmake
# set(USE_LLVM /home/project/llvm/bin/llvm-config)
cmake ..
make -j8
cd ../python
python3 setup.py install 

setup.py install的执行结果:

Using /usr/local/lib/python3.8/dist-packages
Finished processing dependencies for tvm==0.12.dev271+gaa927df6b

添加tvm环境变量到.bashrc文件,执行source .bashrc

export TVM_HOME=/path/to/tvm
export PYTHONPATH=$TVM_HOME/python:${PYTHONPATH}

其中,我使用的版本是

commit aa927df6b3e33856998cb3a4938d8fb4cbdbcec9 (HEAD -> main, origin/main, origin/HEAD)
Author: Sergey <88086617+shtinsa@users.noreply.github.com>
Date: Thu Feb 16 11:12:27 2023 +0300

注意:
在tvm的make过程中,我遇到这么一个问题:

/home/Project/tvm/src/target/llvm/codegen_blob.cc:29:10: fatal error: llvm/ADT/Triple.h: No such file or directory
   29 | #include <llvm/ADT/Triple.h>
      |          ^~~~~~~~~~~~~~~~~~~
compilation terminated.
make[2]: *** [CMakeFiles/tvm_objs.dir/build.make:8280: CMakeFiles/tvm_objs.dir/src/target/llvm/codegen_blob.cc.o] Error 1
make[2]: *** Waiting for unfinished jobs....
/home/Project/tvm/src/target/llvm/codegen_llvm.cc:30:10: fatal error: llvm/ADT/Triple.h: No such file or directory
   30 | #include <llvm/ADT/Triple.h>
      |          ^~~~~~~~~~~~~~~~~~~
compilation terminated.

于是我找了一下

~/Project$ find . -name Triple.h
./llvm-project/llvm/include/llvm/TargetParser/Triple.h
./llvm/include/llvm/TargetParser/Triple.h

是有文件的,应该是代码里路径的问题。于是将路径改一下就可以了顺利编译了。

**diff --git a/src/target/llvm/codegen_blob.cc b/src/target/llvm/codegen_blob.cc**
**index b67aac480..1e9084c81 100644**
**--- a/src/target/llvm/codegen_blob.cc**
**+++ b/src/target/llvm/codegen_blob.cc**
@@ -26,7 +26,7 @@
 #include <llvm/ADT/SmallVector.h>
 #include <llvm/ADT/StringRef.h>
-#include <llvm/ADT/Triple.h>
+#include <llvm/TargetParser/Triple.h>
 #include <llvm/ADT/Twine.h>
 #include <llvm/IR/BasicBlock.h>
 #include <llvm/IR/Constants.h>
**diff --git a/src/target/llvm/codegen_llvm.cc b/src/target/llvm/codegen_llvm.cc**
**index dcca33732..73f27205e 100644**
**--- a/src/target/llvm/codegen_llvm.cc**
**+++ b/src/target/llvm/codegen_llvm.cc**
@@ -27,7 +27,7 @@
 #include <llvm/ADT/ArrayRef.h>
 #include <llvm/ADT/SmallVector.h>
 #include <llvm/ADT/StringRef.h>
-#include <llvm/ADT/Triple.h>
+#include <llvm/TargetParser/Triple.h>
 #include <llvm/Analysis/TargetTransformInfo.h>
 #if TVM_LLVM_VERSION >= 50
 #include <llvm/BinaryFormat/Dwarf.h>

这个bug已提交,待进一步确认。

下一步计划

至此,环境已经搭建完成。下一步准备使用树莓派做一些交叉编译的事情,看看TVM对resnet18的的优化效果如何。

参考

本文参考了以下文档:
TVM 官网
Installing TVM
中文安装文档
参考oldpan博客
参考jiesonshan博客
参考ApsarasX博客

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您好!要在虚拟机上安装 LLVMTVM,您可以按照以下步骤进行操作: 1. 首先,在虚拟机中打开终端或命令提示符窗口。 2. 接下来,使用包管理工具(如apt、yum等)安装必要的依赖项。例如,在 Ubuntu 系统上,可以运行以下命令来安装所需的软件包: ```shell sudo apt-get update sudo apt-get install build-essential cmake python3-dev llvm ``` 这将安装构建工具、CMake、Python 3 开发环境和 LLVM 编译器。 3. 完成上述步骤后,您可以开始安装 TVM。首先,克隆 TVM 仓库到本地: ```shell git clone --recursive https://github.com/apache/tvm.git ``` 4. 进入 TVM 仓库目录: ```shell cd tvm ``` 5. 在 TVM 仓库目录中,运行以下命令来构建和安装 TVM: ```shell mkdir build cp cmake/config.cmake build/ cd build # 使用编辑器打开 config.cmake 文件,并进行以下修改: # 将 set(USE_LLVM OFF) 改为 set(USE_LLVM /usr/bin/llvm-config)(确保路径正确) # 保存并关闭文件 cmake .. make -j$(nproc) ``` 这将构建 TVM 并生成可执行文件。 6. 安装完成后,您可以进行 TVM 的配置。在 TVM 仓库目录中,运行以下命令: ```shell cp ../python/tvm/* python/tvm/ -r export PYTHONPATH=$(pwd)/python:${PYTHONPATH} ``` 这将配置您的 Python 环境以使用 TVM。 现在,您已经成功在虚拟机上安装LLVMTVM。您可以开始使用 TVM 进行深度学习和机器学习任务了。如果您有其他问题,请随时提问!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值