TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT
一、基础必备
- 一台装有GTX10XX显卡的PC机,Windows 10 64位系统
- CUDA 10.1 https://developer.nvidia.com/cuda-10.1-download-archive-base,用10.1的原因是将来和PyTorch匹配
- Visual Studio 2017,微软官方的链接得绕好久才能找到,去MSDN我告诉你: https://msdn.itellyou.cn/
- git:https://git-scm.com/downloads
- Python:https://www.python.org/ 安装64位的3.6、3.7什么的都可以,这篇文章默认3.6
- 最新版本的cmake
如果嫌系统自带的cmd或者PowerShell不好用,可以装一个ConEmu之类的辅助命令行软件。在此不提。
二、编译LLVM
LLVM,这里选用9.0的版本。官网为:https://releases.llvm.org/download.html
把下面红框里面两个东西下载下来:
![80c878c23f1c5e2dfb882fa4048163e7.png](https://img-blog.csdnimg.cn/img_convert/80c878c23f1c5e2dfb882fa4048163e7.png)
第二个框里是预编译好的LLVM,一路setup安装到没有空格的目录里。但虽然说是预编译好的LLVM,但是这个LLVM只能用于使用而不能用于开发。因此还需要把LLVM的开发库编译好(下面马上介绍)。这个有点类似ubuntu里llvm和llvm-dev之间的关系。
第一个框里是Source Code,随便解压缩到一个地方,然后到其最顶层目录,启动命令行然后运行:
cmake . -DCMAKE_BUILD_TYPE=Release -DCMAKE_CONFIGURATION_TYPES="Release" -G "Visual Studio 15 2017 Win64"
如果你使用其他版本的Visual Studio,需要把-G后面的参数进行调整。
然后双击打开LLVM.sln,生成所有的库文件和可执行程序
![a426dbefd17b23fc86c0644468e709bd.png](https://img-blog.csdnimg.cn/img_convert/a426dbefd17b23fc86c0644468e709bd.png)
一个4核i5需要编译1个小时左右,这个时候可以选择喝点可乐什么的。
编译完成后就把Release目录下的所有东西复制到预编译的LLVM的安装位置。如果系统提示你需要替换文件,回答“是”。然后把源代码include目录下所有东西复制到预编译的LLVM的安装位置的include目录下,如果系统提示你需要替换文件,回答“是”。
三、编译TVM
首先根据官方文档的指示下载源代码
git clone --recursive https://github.com/apache/incubator-tvm tvm
git submodule init
git submodule update
然后根据官方文档的指示创建build目录并复制config.cmake
mkdir build
copy cmake/config.cmake build
cd build
编辑config.cmake
在CUDA安装的时候,会把自己的目录添加到path里。你需要确认path是否有效,尤其是安装了多个版本的CUDA的时候。确认好CUDA的版本,就可以把
set(USE_CUDA OFF)
改为
set(USE_CUDA ON)
编译的时候会自动找到CUDA。
接下来我们看下LLVM,把下面这句
set(USE_LLVM OFF)
改成(假设LLVM安装在C盘根目录)
set(USE_LLVM C:/LLVM/bin/llvm-config.exe)
修改好之后就可以根据官方文档的要求产生工程文件
cmake -G "Visual Studio 15 2017 Win64" -DCMAKE_BUILD_TYPE=Release -DCMAKE_CONFIGURATION_TYPES="Release" ..
如果没有错误,就打开目录下的TVM.sln,进行编译
![dd09498e68c8c40547986b75b9f5913c.png](https://img-blog.csdnimg.cn/img_convert/dd09498e68c8c40547986b75b9f5913c.png)
最后可以得到3个文件,在build/Release下面
![133a3dcdc18ab0ab28c9efb4616fb026.png](https://img-blog.csdnimg.cn/img_convert/133a3dcdc18ab0ab28c9efb4616fb026.png)
把它复制到tvm/python目录下。
最后根据官方文档的要求设置环境变量
set TVM_HOME=/path/to/tvm
set PYTHONPATH=%TVM_HOME%/python;%TVM_HOME%/topi/python
运行python,试试relay_quick_start.py是否可以正常工作