编译tvm 0.13.0
wsl 安装 ubuntu
在win11环境下,通过wsl安装 ubuntu虚拟机,构建 linux 操作环境
- 使用wsl 安装 Ubuntu 22.04 (安装wsl的操作请网上自行获取)
bash
wsl --install -d Ubuntu-22.04
- 为了不让 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 文件
- 将 set(USE_CUDA OFF) 改为 set(USE_CUDA ON) 以启用 CUDA 后端。
- 设置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 已可使用