TVM源码框架安装方法
TVM源码框架安装方法
本文提供如何在各种系统上从零构建和安装TVM包的说明。它包括两个步骤:
首先从C++代码中构建共享库(linux的libtvm.so,macOS的libtvm.dylib和windows的libtvm.dll)。
编程语言包的设置(例如Python包)。
实现,请从下载页面下载tvm源代码。
https://tvm.apache.org/download
Developers: Get Source from Github
还可以选择从github 上clone源repo。使用--recursive选项clone子模块很重要。
git clone --recursive https://github.com/apache/tvm tvm
使用github工具的windows用户,可以使用git shell,再键入以下命令。
git submodule init
git submodule update
Build the Shared Library
目标是build 共享库:
- On Linux the target library are libtvm.so
- On macOS the target library are libtvm.dylib
- · On Windows the target library are libtvm.dll
sudo apt-get update
sudo apt-get install -y python3 python3-dev python3-setuptools gcc libtinfo-dev zlib1g-dev build-essential cmake libedit-dev libxml2-dev
最低building需求
一个支持C++ 14(g++—5或更高)的C++编译器
CMake 3.5或更高
强烈建议使用LLVM构建以启用所有功能。
如果要使用CUDA,则需要CUDA toolkit版本>=8.0。如果要从旧版本升级,请确保删除旧版本并在安装后重新启动。
在macOS上,可能需要安装自制程序https://brew.sh,便于简化安装和管理依赖项。
使用cmake来构建库。TVM的配置可以通过以下方式进行config.cmake配置文件完成。
首先,检查系统中的cmake。如果您没有cmake,您可以从官方网站获取最新版本
首先创建一个构建目录,复制cmake/config.cmake文件到该目录。
mkdir build
cp cmake/config.cmake build
- 使用 build/config.cmake 来定制编译选项
- On macOS, for some versions of Xcode, you need to add -lc++abi in the LDFLAGS or you’ll get link errors.
- Change set(USE_CUDA
OFF) to set(USE_CUDAON) to enable CUDA backend. Do the same for other backends and libraries you want to build for (OpenCL, RCOM, METAL, VULKAN, …). - To help with debugging, ensure the embedded graph runtime and debugging functions are enabled with set(USE_GRAPH_RUNTIME
ON) and set(USE_GRAPH_RUNTIME_DEBUGON)
- TVM 需要 CPU codegen LLVM . 强烈推荐用 LLVM支持.
- LLVM 4.0 or higher is needed for build with LLVM. Note that version of LLVM from default apt may lower than 4.0.
- Since LLVM takes long time to build from source, you can download pre-built version of LLVM from LLVM Download Page.
- Unzip to a certain location, modify build/config.cmake to add set(USE_LLVM
/path/to/your/llvm/bin/llvm-config) - You can also directly set set(USE_LLVM
ON) and let cmake search for a usable version of LLVM. - You can also use LLVM Nightly Ubuntu Build
- Note that apt-package append llvm-config with version number. For example, set set(USE_LLVM
llvm-config-10) if you installed LLVM 10 package
- Note that apt-package append llvm-config with version number. For example, set set(USE_LLVM
- Unzip to a certain location, modify build/config.cmake to add set(USE_LLVM
- 编译TVM和相关libraries.
- 使用Ninja build system 替代Unix Makefiles. 比用Makefiles更简洁.
· cd build
· cmake ..
· make -j4
· cd build
· cmake .. -G Ninja
· ninja
If everything goes well, we can go to Python Package Installation
https://tvm.apache.org/docs/install/from_source.html#python-package-installation
Building with a Conda Environment
Conda是获取运行TVM所需依赖项的一种非常方便的方法。
首先,如果系统中还没有conda,请按照conda的安装指南(https://docs.conda.io/projects/conda/en/latest/user-guide/install/)
安装miniconda或anaconda。在conda环境中运行以下命令:
# Create a conda environment with the dependencies specified by the yaml
conda env create --file conda/build-environment.yaml
# Activate the created environment
conda activate tvm-build
上面的命令将安装所有必要的构建依赖项,如cmake和LLVM。可以在后面运行标准build过程。
如果要在conda环境之外使用编译后的二进制文件,可以将LLVM设置为static linking mode set(USE_LLVM "llvm-config --link-static")。这样,生成的库就不会依赖于conda环境中的动态LLVM库。
上面的说明展示了如何使用conda提供构建libtvm所需的构建依赖项。如果已经使用conda作为包管理器,并且希望直接将tvm作为conda包来构建和安装,则可以按照以下说明进行操作:
conda build --output-folder=conda/pkg conda/recipe
# Run conda/build_cuda.sh to build with cuda enabled
conda install tvm -c ./conda/pkg
Building on Windows
使用cmake通过MSVC构建TVM支持。您将需要包含一个visualstudio编译器。最低要求的VS版本是Visual Studio Community 2015 Update 3。我们建议使用Conda环境进行后续构建,以获得必要的依赖关系并获得激活的tvm构建环境。然后可以运行以下命令来构建。
mkdir build
cd build
cmake -A x64 -Thost=x64 ..
cd ..
上面的命令在build目录下生成解决方案文件。可以运行以下命令来build
cmake --build build --config Release -- /m
Building ROCm support
目前,ROCm只在linux上受支持,所以所有的指令都是用linux编写的。
Set Set(USE_ROCM ON),将ROCM_PATH设置为正确的路径。
首先需要从ROCm安装HIP运行时。确保安装系统中安装了ROCm。
安装最新稳定版本的LLVM(v6.0.1)和LLD,确保ld.lld可通过命令行使用。
Python Package Installation
TVM package
根据开发环境,可使用虚拟环境和包管理器(如virtualenv或conda)来管理python包和依赖项。
安装和维护python开发环境。
python包位于tvm/python。有两种安装方法:
Method 1
此方法推荐给可能更改代码的开发人员。
设置环境变量PYTHONPATH,表示python在哪里可以找到库。例如,假设在目录/path/to/tvm上cloned了tvm,那么我们可以在~/.bashrc中添加以下行。一旦获取代码并重新build项目,修改将立即显现出来(无需再次调用setup安装程序)。
export TVM_HOME=/path/to/tvm
export PYTHONPATH=$TVM_HOME/python:${PYTHONPATH}
Method 2
Install TVM python bindings by setup.py:
# install tvm package for the current user
# NOTE: if you installed python via homebrew, --user is not needed during installaiton
# it will be automatically installed to your user directory.
# providing --user flag may trigger error during installation in such case.
export MACOSX_DEPLOYMENT_TARGET=10.9 # This is required for mac to avoid symbol conflicts with libstdc++
cd python; python setup.py install --user; cd ..
Python dependencies
Note that the --user flag is not necessary if you’re installing to a managed local environment, like virtualenv.
- Necessary dependencies:
- If you want to use RPC Tracker
- If you want to use auto-tuning module
- NNPACK Contrib Installation
pip3 install --user numpy decorator attrs
pip3 install --user tornado
pip3 install --user tornado psutil xgboost
Install Contrib Libraries
Enable C++ Tests
We use Google Test to drive the C++ tests in TVM. The easiest way to install GTest is from source.
git clone https://github.com/google/googletest
cd googletest
mkdir build
cd build
cmake ..
make
sudo make install
After installing GTest, the C++ tests can be built and started with ./tests/scripts/task_cpp_unittest.sh or just built with make cpptest.
TVM源码框架安装方法的更多相关文章
- LAMP最新源码一键安装脚本
Linux+Apache+MySQL+PHP (脚本可以选择是否安装+Pureftpd+User manager for PureFTPd+phpMyAdmin+memcache),添加虚拟主机请执行 ...
- 总结源码编译安装mysql
最近在学习源码编译安装LAMP.LNMP时,一直遇到一个难题,就是就是mysql无论怎么源码编译安装,到最后启动服务都提示"Starting MySQL.The server quit wi ...
- mysql 5.5源码包安装
注:由于mysql5.5的源码包安装与mysql之前的版本安装方法不同,故写一篇随笔记录.5.5的版本不再是./configure make make install 这里用到了cmake了,cmak ...
- Linux下源码编译安装rpy2
R(又称R语言)是一款开源的跨平台的数值统计和数值图形化展现工具.rpy2是Python直接调用R的第三方库,它可以实现使用python读取R的对象.调用R的方法以及Python与R数据结构转换等.这 ...
- Linux学习(二十)软件安装与卸载(三)源码包安装
一.概述 源码包安装的优点在于它自由程度比较高,可以指定目录与组件.再有,你要是能改源码也可以. 二.安装方法 步骤 1.从官网或者信任站点下载源码包 [root@localhost ~]# wget ...
- Linux学习之源码包安装与脚本安装(十八)
Linux学习之源码包安装与脚本安装 目录 源码包与RPM包的区别 源码包安装 脚本安装 源码包与RPM包的区别 1.区别 安装之前的区别:概念上的区别 安装之后的区别:安装位置不同 源码包: 开源的 ...
- 源码编译安装lnmp环境
一.源码编译安装步骤 首先说明源码安装的好处 速度快,可自定义路径 主要有三步:1.配置 进入源码安装包 ./configure --prefix=/uer/local/nginx 可指定参数 ...
- yum安装与源码编译安装实际使用区别
总结一些我实际生产使用的区别: 1.yum安装不是说不行,都行,各有千秋. 2.yum安装目录不集中,但基本遵循Linux文件夹的作用去划分文件,比如配置文件通常在/etc下. 3.yum安装说的模块 ...
- 保姆级教程——Ubuntu16.04 Server下深度学习环境搭建:安装CUDA8.0,cuDNN6.0,Bazel0.5.4,源码编译安装TensorFlow1.4.0(GPU版)
写在前面 本文叙述了在Ubuntu16.04 Server下安装CUDA8.0,cuDNN6.0以及源码编译安装TensorFlow1.4.0(GPU版)的亲身经历,包括遇到的问题及解决办法,也有一些 ...
随机推荐
- ThinkPHP5 利用.htaccess文件的 Rewrite 规则隐藏URL中的 index.php
1.首先修改Apache的httpd.conf文件. 确认httpd.conf配置文件中加载了mod_rewrite.so 模块,加载的方法是去掉mod_rewrite.so前面的注释#号 讲http ...
- hdu2482 字典树+spfa
题意: 给你一个地图,地图上有公交站点和路线,问你从起点到终点至少要换多少次公交路线. 思路: 首先上面的题意说的和笼统,没说详细是因为这个题目叙述的很多,描述起来麻烦, 下面 ...
- hdu2846 字典树(带id的)
题意: 给你一些模式串,然后给你一些提问,每个提问是给你一个串,问你这个串在上 面的模式串中出现的次数. 思路: 一开始想到hash,但是因为用的是map,所以超时了,map的操 ...
- Securecrt 在win7下 字体太少问题
用WIN7,觉得securecrt里面可用的字体太少了.很多都没有,比如lucida console,经过一番查找,终于找到解决问题的方法了. 原因就是win7里面的很多字体都被设置为隐藏了,所以se ...
- 那些好用的 VS Code 插件,究竟是如何提高编码效率的?
在上一篇文章中我们已经对 vscode 插件有了一个初步的认识与了解了,接下去我们就要"揭秘"一下市面上那些好用的 vscode 插件究竟是如何帮我们提高工作效率的. 本文首发于「 ...
- Java安全之Fastjson反序列化漏洞分析
Java安全之Fastjson反序列化漏洞分析 首发:先知论坛 0x00 前言 在前面的RMI和JNDI注入学习里面为本次的Fastjson打了一个比较好的基础.利于后面的漏洞分析. 0x01 Fas ...
- 有趣的css—简单的下雨效果2.0版
简单的下雨效果2.0版 前言 笔者上一篇发布的文章有趣的css-简单的下雨效果中有位老哥给我提了一个很棒的建议,大致意思是波纹应该产生于雨滴的消失处. 这是按照老哥的建议完善后的效果图: 由于我制作G ...
- 『动善时』JMeter基础 — 14、使用JMeter发送Post请求
目录 1.Post请求参数类型说明 2.用于演示的项目说明 3.发送Post请求示例 (1)测试计划内包含的元件 (2)请求参数类型为x-www-form-urlencoded 4.请求参数form- ...
- 痞子衡嵌入式:MCUBootUtility v3.3发布,可配合SBL项目使用
-- 痞子衡维护的NXP-MCUBootUtility工具距离上一个大版本(v3.0.0)发布过去4个多月了,期间痞子衡其实断断续续做个几个小版本更新,这一次痞子衡为大家带来了稳定版本v3.3.0,顺 ...
- 不同规模的企业对CRM的需求是否相同?
CRM客户管理系统在我们的认知中往往是中大型企业的选择.如今,越来越多中小规模企业开始使用CRM系统.CRM的功能随着发展变得越来越实用,可以满足不同行业不同业务规模的企业的需求.同时,CRM功能类型 ...