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_CUDA ON) 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_DEBUG ON)
  • 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
  • 编译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.

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源码框架安装方法的更多相关文章

  1. LAMP最新源码一键安装脚本

    Linux+Apache+MySQL+PHP (脚本可以选择是否安装+Pureftpd+User manager for PureFTPd+phpMyAdmin+memcache),添加虚拟主机请执行 ...

  2. 总结源码编译安装mysql

    最近在学习源码编译安装LAMP.LNMP时,一直遇到一个难题,就是就是mysql无论怎么源码编译安装,到最后启动服务都提示"Starting MySQL.The server quit wi ...

  3. mysql 5.5源码包安装

    注:由于mysql5.5的源码包安装与mysql之前的版本安装方法不同,故写一篇随笔记录.5.5的版本不再是./configure make make install 这里用到了cmake了,cmak ...

  4. Linux下源码编译安装rpy2

    R(又称R语言)是一款开源的跨平台的数值统计和数值图形化展现工具.rpy2是Python直接调用R的第三方库,它可以实现使用python读取R的对象.调用R的方法以及Python与R数据结构转换等.这 ...

  5. Linux学习(二十)软件安装与卸载(三)源码包安装

    一.概述 源码包安装的优点在于它自由程度比较高,可以指定目录与组件.再有,你要是能改源码也可以. 二.安装方法 步骤 1.从官网或者信任站点下载源码包 [root@localhost ~]# wget ...

  6. Linux学习之源码包安装与脚本安装(十八)

    Linux学习之源码包安装与脚本安装 目录 源码包与RPM包的区别 源码包安装 脚本安装 源码包与RPM包的区别 1.区别 安装之前的区别:概念上的区别 安装之后的区别:安装位置不同 源码包: 开源的 ...

  7. 源码编译安装lnmp环境

    一.源码编译安装步骤 首先说明源码安装的好处   速度快,可自定义路径 主要有三步:1.配置 进入源码安装包  ./configure --prefix=/uer/local/nginx  可指定参数 ...

  8. yum安装与源码编译安装实际使用区别

    总结一些我实际生产使用的区别: 1.yum安装不是说不行,都行,各有千秋. 2.yum安装目录不集中,但基本遵循Linux文件夹的作用去划分文件,比如配置文件通常在/etc下. 3.yum安装说的模块 ...

  9. 保姆级教程——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版)的亲身经历,包括遇到的问题及解决办法,也有一些 ...

随机推荐

  1. POJ3757 01分数规划

    题意:      有一个任务,给你提供n太服务器,让你在这n太服务器中选出k台完成这个任务,要求是每台服务器的工作时间相同,总的花费最小. 思路:      题目中给出对于每台服务器有这个式子: To ...

  2. Windows核心编程 第五章 作业(上)

    第5章 作 业 通常,必须将一组进程当作单个实体来处理.例如,当让 Microsoft Developer Studio为你创建一个应用程序项目时,它会生成 C l . e x e,C l . e x ...

  3. 神经网络与机器学习 笔记—Rosenblatt感知器收敛算法C++实现

    Rosenblatt感知器收敛算法C++实现 算法概述 自己用C++实现了下,测试的例子和模式用的都是双月分类模型,关于双月分类相关看之前的那个笔记: https://blog.csdn.net/u0 ...

  4. python三元(三目)运算

    传统的if,else写法 三元运算 name="alex" if 1==1 else "SB"

  5. 运维告诉我CPU飙升300%,为什么我的程序上线就奔溃了

    线上服务CPU飙升 前言 功能开发完成仅仅是项目周期中的第一步,一个完美的项目是在运行期体现的 今天我们就来看看笔者之前遇到的一个问题CPU飙升的问题. 代码层面从功能上看没有任何问题但是投入使用后却 ...

  6. 有趣的css—简单的下雨效果

    简单的下雨效果 前言 最近在b站上看到一个下雨效果的视频,感觉思路很清奇,我也按照自己的思路做了一个简单的下雨效果. 由于我制作GIF图片的工具最多只支持制作33FPS的GIF图,所以看起来可能有一点 ...

  7. C++ primer plus读书笔记——第4章 复合类型

    第4章 复合类型 1. 如果将sizeof运算符用于数组名,得到的将是整个数组中的字节数. 2. 如果对数组的一部分进行初始化,则编译器把其他元素设置为0.因此,将数组中的所有元素初始化为0,只要显式 ...

  8. [BUAA2021软工助教]结对项目-第二阶段小结

    一.作业链接 结对项目-第二阶段 二.优秀作业推荐 本次博客作业虽然是简单总结,但是以下作业中都不乏有思考.有亮点的精彩内容,推荐给同学们阅读学习. 磨练,结对编程!(中) zzx 和 zzy 同学实 ...

  9. [bug] kafka启动报错 could not be established. Broker may not be available.

    原因 配置文件和命令行中的主机名不一致,建议都用ip地址 参考 https://blog.csdn.net/getyouwant/article/details/79000524

  10. CSS中常用的函数

    一.CSS函数的用法 设置css的属性值时可以使用css函数,如果color:rgba(20,30,50,0.5),css中有很多这样的函数. 二.常用的CSS函数 a.calc()函数   这个函数 ...