tvm学习--001. tvm0.13.0编译安装

编译tvm 0.13.0

wsl 安装 ubuntu

在win11环境下,通过wsl安装 ubuntu虚拟机,构建 linux 操作环境

  1. 使用wsl 安装 Ubuntu 22.04 (安装wsl的操作请网上自行获取)
bash 复制代码
wsl --install -d Ubuntu-22.04
  1. 为了不让 Ubuntu 占用C盘空间,做迁移动作
bash 复制代码
# 将ubuntu导出
wsl --export Ubuntu-22.04 d:\ubuntu22.04.tar
# 注销当前安装的ubuntu
wsl --unregister Ubuntu-22.04
# 导入镜像,即导入ubuntu
wsl --import Ubuntu-22.04 D:\wsl-ubuntu D:\Ubuntu2204.tar
# 修改默认用户
ubuntu2204.exe config --default-user yourname

执行完毕上述动作后可将Ubuntu 迁移到 D 盘下。

ubuntu中配置cuda环境

下载 nvcc

bash 复制代码
wget https://developer.download.nvidia.com/compute/cuda/repos/wsl-ubuntu/x86_64/cuda-wsl-ubuntu.pin
sudo mv cuda-wsl-ubuntu.pin /etc/apt/preferences.d/cuda-repository-pin-600
wget https://developer.download.nvidia.com/compute/cuda/12.8.0/local_installers/cuda-repo-wsl-ubuntu-12-8-local_12.8.0-1_amd64.deb
sudo dpkg -i cuda-repo-wsl-ubuntu-12-8-local_12.8.0-1_amd64.deb
sudo cp /var/cuda-repo-wsl-ubuntu-12-8-local/cuda-*-keyring.gpg /usr/share/keyrings/
sudo apt-get update
sudo apt-get -y install cuda-toolkit-12-8

然后编译 ~/.bashrc文件,在文件末尾增加如下内容:

txt 复制代码
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-12.6/lib64
export PATH=$PATH:/usr/local/cuda-12.8/bin
export CUDA_HOME=$CUDA_HOME:/usr/local/cuda-12.8
export PATH=/usr/local/cuda/bin:$PATH

保存退出后,执行命令source ~/.bashrc

确保能正常执行 nvcc , nvidia-smi 命令,如下文所示

bash 复制代码
username@DESKTOP-QOJUC82:~$ nvcc --version
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2025 NVIDIA Corporation
Built on Wed_Jan_15_19:20:09_PST_2025
Cuda compilation tools, release 12.8, V12.8.61
Build cuda_12.8.r12.8/compiler.35404655_0
username@DESKTOP-QOJUC82:~$ nvidia-smi
Mon Nov 24 18:00:41 2025
+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI 580.105.07             Driver Version: 581.80         CUDA Version: 13.0     |
+-----------------------------------------+------------------------+----------------------+
| GPU  Name                 Persistence-M | Bus-Id          Disp.A | Volatile Uncorr. ECC |
| Fan  Temp   Perf          Pwr:Usage/Cap |           Memory-Usage | GPU-Util  Compute M. |
|                                         |                        |               MIG M. |
|=========================================+========================+======================|
|   0  NVIDIA GeForce RTX 4070 Ti     On  |   00000000:01:00.0  On |                  N/A |
|  0%   31C    P8             13W /  285W |     878MiB /  12282MiB |      5%      Default |
|                                         |                        |                  N/A |
+-----------------------------------------+------------------------+----------------------+

+-----------------------------------------------------------------------------------------+
| Processes:                                                                              |
|  GPU   GI   CI              PID   Type   Process name                        GPU Memory |
|        ID   ID                                                               Usage      |
|=========================================================================================|
|  No running processes found                                                             |
+-----------------------------------------------------------------------------------------+

下载 llvm 工程

执行命令 git clone https://mirrors.tuna.tsinghua.edu.cn/git/llvm-project.git 利用清华镜像下载llvm工程。 切换代码分支到 llvmorg-17.0.6 git checkout llvmorg-17.0.6

下载编译依赖

bash 复制代码
sudo apt install -y \
  build-essential cmake ninja-build python3 python3-distutils python3-dev \
  git libtinfo-dev zlib1g-dev libncurses5-dev libxml2-dev \
  libffi-dev libedit-dev libssl-dev libpthread-stubs0-dev libnuma-dev

进行编译

bash 复制代码
cmake -G Ninja ../llvm \
  -DCMAKE_BUILD_TYPE=Release \
  -DCMAKE_INSTALL_PREFIX=/opt/llvm-17.0.6 \
  -DLLVM_ENABLE_PROJECTS="clang;mlir;openmp" \
  -DLLVM_TARGETS_TO_BUILD="X86;NVPTX" \
  -DLLVM_ENABLE_ASSERTIONS=ON \
  -DLLVM_ENABLE_RTTI=ON \

cmake成功后,终端会打印出如下结果

lua 复制代码
-- Performing Test HAVE_GNU_POSIX_REGEX
-- Performing Test HAVE_GNU_POSIX_REGEX -- failed to compile
-- Performing Test HAVE_POSIX_REGEX
-- Performing Test HAVE_POSIX_REGEX
-- Performing Test HAVE_POSIX_REGEX -- success
-- Performing Test HAVE_STEADY_CLOCK
-- Performing Test HAVE_STEADY_CLOCK
-- Performing Test HAVE_STEADY_CLOCK -- success
-- Configuring done
-- Generating done
-- Build files have been written to: /home/username/llvm-project/build

然后 ninja 进行编译 编译完成后,终端会打印如下信息:

txt 复制代码
[6348/6348] Linking CXX executable bin/mlir-opt

下载 tvm 源码

执行如下命令 git clone --recursive https://github.com/apache/tvm tvm 切换 tvm到 0.13.0版本 git checkout v0.13.0 更新子模块 git submodule update --init --recursive

安装编译依赖

bash 复制代码
sudo apt-get install -y python3 python3-dev python3-setuptools gcc libtinfo-dev zlib1g-dev build-essential cmake libedit-dev libxml2-dev

编译

bash 复制代码
cd tvm
mkdir build
cp cmake/config.cmke build

编辑 build/config.cmake 文件

  1. 将 set(USE_CUDA OFF) 改为 set(USE_CUDA ON) 以启用 CUDA 后端。
  2. 设置llvm路径,如:set(USE_LLVM /path/to/your/llvm/bin/llvm-config)

进入 build cd build,执行 cmake命令 cmake .. ,cmake成功后终端会打印出如下信息:

bash 复制代码
-- Configuring done
-- Generating done
-- Build files have been written to: /home/username/tvm/build

接下来进行编译,执行命令make make -j8,编译成功后终端会打印如下信息:

bash 复制代码
[100%] Built target tvm_objs
[100%] Linking CXX shared library libtvm.so
[100%] Built target tvm

安装python依赖

必要的依赖pip3 install --user numpy==1.24.3 decorator attrs tvmc相关依赖:pip3 install --user typing-extensions psutil scipy rpc跟踪器相关依赖:pip3 install --user tornado auto-tuning 模块相关依赖: pip3 install --user tornado psutil 'xgboost>=1.1.0' cloudpickle

通过 setup.py 安装 TVM的Python绑定

bash 复制代码
cd tvm/python
python3 setup.py install --user

命令执行完毕后,重新进入终端,执行命令 tvmc --version,会显示如下信息:0.13.0 此时,tvm 已可使用

相关推荐
大佐不会说日语~24 分钟前
Spring AI Alibaba 的 ChatClient 工具注册与 Function Calling 实践
人工智能·spring boot·python·spring·封装·spring ai
CeshirenTester41 分钟前
Playwright元素定位详解:8种定位策略实战指南
人工智能·功能测试·程序人生·单元测试·自动化
世岩清上1 小时前
AI驱动的智能运维:从自动化到自主化的技术演进与架构革新
运维·人工智能·自动化
K2_BPM1 小时前
告别“单点智能”:AI Agent如何重构企业生产力与流程?
人工智能
TMT星球1 小时前
深业云从人工智能产业投资基金设立,聚焦AI和具身智能相关产业
人工智能
鼾声鼾语2 小时前
matlab的ros2发布的消息,局域网内其他设备收不到情况吗?但是matlab可以订阅其他局域网的ros2发布的消息(问题总结)
开发语言·人工智能·深度学习·算法·matlab·isaaclab
Dingdangcat862 小时前
中药材图像识别与分类 RetinaNet-R101-FPN模型详解
人工智能·数据挖掘
老蒋新思维2 小时前
创客匠人视角:智能体重构创始人 IP,知识变现从 “内容售卖” 到 “能力复制” 的革命
大数据·网络·人工智能·tcp/ip·创始人ip·创客匠人·知识变现
Honmaple2 小时前
Spring AI 2.x 发布:全面拥抱 Java 21,Redis 史诗级增强
java·人工智能·spring
古城小栈2 小时前
区块链 + AI:医疗诊断模型存证上链技术实践与探索
人工智能·区块链