TVM源码编译安装

TVM源码编译安装

 由于TVM依赖LLVM,安装TVM之前需要先安装LLVM

1、LLVM 安装

1.1 LLVM需要C++14的特性,所以编译器gcc>=5 ,cmake>3.5

1.2 安装其他依赖

yum install -y libffi-devel graphviz-devel elfutils-libelf-devel readline-devel libedit-devel libxml2-devel protobuf-devel gtext-devel doxygen swig

1.3 下载LLVM的源码:

下载地址:https://releases.llvm.org/download.html

1.4 解压各个tar.xz并放到对应的目录

LLVM的各个子组件必须放到LLVM源码的固定位置,使用固定的名称。

解压llvm-10.0.0.src.tar.xz 生成llvm-10.0.0.src

放到llvm-10.0.0.src/tool的组件

解压clang-10.0.0.src.tar.xz 重命名为llvm-10.0.0.src/tool/clang
解压lld-10.0.0.src.tar.xz 重命名为llvm-10.0.0.src/tool/lld
解压lldb-10.0.0.src.tar.xz 重命名为llvm-10.0.0.src/tool/lldb
解压polly-10.0.0.src.tar.xz 重命名为llvm-10.0.0.src/tool/polly

放到llvm-10.0.0.src/project的组件:

解压openmp-10.0.0.src.tar.xz 重命名为llvm-10.0.0.src/project/openmp
解压libcxx-10.0.0.src.tar.xz 重命名为llvm-10.0.0.src/project/libcxx
解压libcxx-api-10.0.0.src.tar.xz 重命名为llvm-10.0.0.src/project/libcxxabi
解压libunwind-10.0.0.src.tar.xz 重命名llvm-10.0.0.src/project/libunwind
解压compiler-rt-10.0.0.src.tar.xz 重命名为llvm-10.0.0.src/project/compiler-rt

clang子组件

解压clang-tools-extra-10.0.0.src.tar.xz 重命名为llvm-10.0.0.src/tools/clang/tools/extra

1.5、使用CMake生成Makefile

cd llvm-10.0.0.src
mkdir build && cd build

设置环境变量:

export PATH=~/gcc-5.4.0/bin:$PATH
export LD_LIBRARY_PATH=~/gcc-5.4.0/lib64:$LD_LIBRARY_PATH
export CC=~/gcc-5.4.0/bin/gcc
export CXX=~/gcc-5.4.0/bin/g++
export CXXFLAGS='-std=c++14'
export LDFLAGS='-lstdc++ -ldl'

cmake:

cmake .. \
        -DLLVM_OPTIMIZED_TABLEGEN=ON \
        -DLLVM_INCLUDE_DOCS=OFF \
        -DLLVM_ENABLE_RTTI=ON \
        -DLLVM_ENABLE_EH=ON \
        -DLLVM_INSTALL_UTILS=ON \
        -DWITH_POLLY=ON \
        -DLINK_POLLY_INTO_TOOLS=ON \
        -DLLVM_TARGETS_TO_BUILD=X86 \
        -DLIBOMP_ARCH=X86_64 \
        -DBUILD_SHARED_LIBS=ON \
        -DLIBOMP_ENABLE_SHARED=ON\
        -DLLVM_ENABLE_LIBCXX=ON \
        -DLLDB_RELOCATABLE_PYTHON=ON \
        -DLLVM_ENABLE_FFI=ON \
        -DCMAKE_BUILD_TYPE=Release \
        -DCLANG_DEFAULT_CXX_STDLIB=libc++ \
        -DCLANG_INCLUDE_TESTS=OFF \
        -DENABLE_LINKER_BUILD_ID=ON \
        -DENABLE_X86_RELAX_RELOCATIONS=ON \
        -DLIBCXXAPI_INCLUDE_TESTS=OFF \
        -DLIBCXX_INCLUDE_BENCHMARKS=OFF \
        -DLIBCXX_INCLUDE_TESTS=OFF \
        -DLIBOMP_TSAN_SUPPORT=ON \
        -DLLDB_BUILD_INTEL_PT=OFF \
        -DLLDB_INCLUDE_TESTS=OFF \
        -DLLVM_ENABLE_OCAMLDOC=OFF\
        -DLLVM_INCLUDE_EXAMPLES=OFF\
        -DLLVM_INCLUDE_GO_TEST=OFF\
        -DLLVM_INCLUDE_test=OFF\
        -DLLVM_INSTALL_BINUTILS_SYMLINK=ON\
        -DLLVM_TOOL_LLGO_BUILD=ON \
        -DLLVM_TOOL_PARALLEL_LIBS_BUILD=ON\
        -DLLVM_ENABLE_PIC=ON \
        -DLIBUNWIND_ENABLE_SHARED=OFF \
        -DLIBCXX_ENABLE_PEDANTIC=ON \
        -DLIBCXXAPI_LIBDIR_SUFFIX=64\
        -DLIBCXX_LIBDIR_SUFFIX=64\
        -DLIBUNWIND_LIBDIR_SUFFIX=64\
        -DLLVM_LIBDIR_SUFFIX=64

make -j 8

make install DESTDIR=xxx #自定义安装目录,如果没有定义默认安装到/usr/local下面

2.安装TVM

2.1、下载源码

git clone --recursive https://github.com/apache/incubator-tvm tvm

2.2 、编译动态库

cd tvm
mkdir build 
cp cmake/config.cmake build
cd build

修改config.cmake

Change set(USE_CUDA OFF) to set(USE_CUDA ON) to enable CUDA backend.
set(USE_GRAPH_RUNTIME ON) and set(USE_GRAPH_RUNTIME_DEBUG ON)
设置LLVM
set(USE_LLVM /path/to/your/llvm/bin/llvm-config)

编译

cd build
cmake  -DCMAKE_CXX_COMPILER=~/gcc-5.4.0/bin/g++ .. #TVM需要C++14的特征,所有需要gcc>5
make -j
make install DESTDIR=xxx

2.2、python包安装

方法一: 设置环境变量(推荐)

export TVM_HOME=/path/to/tvm
export PYTHONPATH=$TVM_HOME/python:${PYTHONPATH}

方法二:通过 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 ..

Ref:https://tvm.apache.org/docs/install/index.html

(完)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值