手把手教你在 Ubuntu22.04 上安装TVM


目前运营的自媒体账号如下:

如果觉得有所收获的话,可以点击我的主页 -> 充电 -> 自定义充电 支持一下,十分感谢!

QQ 学习交流群

  • FPGA科研硕博交流群 910055563 (进群有一定的学历门槛,长期未发言会被请出群聊,主要交流FPGA科研学术话题)
  • CNN | RVfpga学习交流群(推荐,人数上限 2000) 541434600
  • FPGA&IC&DL学习交流群 866169462
  • 视觉 Transformer 学习交流群 764608673

官方安装教程:Install from Source — tvm 0.20.dev0 documentation

CUDA版本:12.2
安装的是最新版本(0.20.0 dev)的 TVM。

1 安装依赖

TVM的核心代码都是C++编写,所以编译的目的是生成 libtvm.solibtvm_runtime.so 等动态链接库,当使用python脚本进行模型编译优化时,实际上调用的libtvm.so,运行模型时调用libtvm_runtime.so因此安装TVM本质上是正确生成对应平台的动态库并让python脚本找到它

在各系统中从 0 到 1 构建和安装 TVM 软件包包括两个步骤:

  1. 从 C++ 代码中构建共享库(Linux:libtvm.so;macOS :libtvm.dylib;Windows:libtvm.dll)。
  2. 为编程语言包进行设置(如 Python 包)。

相关依赖如下:

  • Python (>= 3.8)
  • CMake (>= 3.24.0)
  • LLVM (>= 15)
  • Git
  • Conda
  • GCC(GNU Compiler Collection)7.1

可通过 conda 快速安装以上依赖

# 删除同名环境,确保创建的是空白新环境
conda env remove -n tvm-build
# 指定从 conda-forge 通道安装指定版本的软件包,“-c” 用于指定从哪个通道获取包
# 需要大概 2-5min
conda create -n tvm-build -c conda-forge "llvmdev>=15" "cmake>=3.24" git python=3.11
# 激活创建好的环境
conda activate tvm-build

pip install cython # 3.0.12, 编译tvm时需要

检查版本(可选)

gcc -v   
g++ -v   
cmake --version  
python3 


# 查看cuda版本
cat /usr/local/cuda/version.txt
nvidia-smi
which nvcc

2 下载源码,配置并编译

(1)从仓库下载TVM源码

# 直接下载压缩包会丢失依赖的子模块,必须通过 git 克隆
# 添加 –recursive 选项,使得子模块代码可以一同下载
git clone --recursive https://github.com/apache/tvm.git tvm
cd tvm
# 更新子模块源码
git submodule update --init --recursive

(2) 配置并编译

cd tvm
# 删除 build目录再重建, 然后进入
rm -rf build && mkdir build && cd build
# 复制配置文件 config.cmake到build目录下
cp ../cmake/config.cmake .

配置文件用【文本编辑器】打开,修改如下项:

49set(USE_CUDA OFF)  --> set(USE_CUDA ON) # 如果想使用 GPU 的话,需要改
146set(USE_LLVM OFF) --->set(USE_LLVM ON) # 必须要改的

然后在 build 目录下执行下述命令进行编译:

# 如果执行下条命令报错,提示找不到CXX编译器,则执行这两条指令可解决
sudo apt-get update 
sudo apt-get install -y build-essential
# 运行 CMake 配置命令,指定源代码目录为当前目录的上一级目录(`..`)。
cmake .. 
# 运行 CMake 构建命令,在当前目录进行并行构建, 线程数根据 CPU核数设置
# 需要 10 min
cmake --build . --parallel 8

如果最终成功编译,生成 libtvm.solibtvm_runtime.so
image.png|500

3 作为 python 包安装,并验证

如果想把成功编译好的 tvm 安装到其他 conda环境中,有以下两种方法:

  • 通过 pip 本地项目进行安装(已尝试,可行)
conda activate your-own-env
conda install python # python已安装, 则无需执行此命令
export TVM_LIBRARY_PATH=/path-to-tvm/build
pip install -e /path-to-tvm/python # 会自动安装相关依赖
  • 通过环境变量安装
export TVM_HOME=/path-to-tvm
export PYTHONPATH=$TVM_HOME/python:$PYTHONPATH
  • 验证
# 1 查看 tvm 包位置
python -c "import tvm; print(tvm.__file__)"  # 没有报错,则说明安装成功
输出 /path/tvm/python/tvm/__init__.py

# 2 验证 tvm 库是否被实现
python -c "import tvm; print(tvm._ffi.base._LIB)"
输出 <CDLL '/path/tvm/build/libtvm.so'>, handle ...

# 3 检查 TVM 设备检测是否正常
python -c "import tvm; print(tvm.cuda().exist)" 
输出 True 表示显卡可用

# 4 查看 tvm 的构建选项(不重要)
python -c "import tvm; print('\n'.join(f'{k}: {v}' for k, v in tvm.support.libinfo().items()))"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

雪天鱼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值