linux(ubuntu20.04)安装tvm |
您所在的位置:网站首页 › 源码编译安装anaconda › linux(ubuntu20.04)安装tvm |
我是在双系统中linux上安装的,不是Ubuntu虚拟机,虽然两者过程基本一样,但是在双系统上会更方便。 文章目录 零:究极大招版一:环境准备1.1.安装gcc、cmake等必要的依赖1.2.python环境 二:安装编译工具:llvm+cuda2.1 安装LLVM2.2 安装cuda+cudnn(可选) 三:下载并编译tvm3.1 下载tvm3.2 编译tvm3.2.1 build文件夹3.2.2 配置build/config.cmake文件3.2.3 编译tvm3.2.4 tvm依赖报错处理(可选) 3.3 将编译成功的tvm放入环境变量 四:将tvm导入python五:测试tvm5.1 终端命令行测试5.2 pycharm测试 零:究极大招版直接选择以下安装: pip install apache-tvm 或者 conda activate xxxxx conda install apache-tvm如果有人能够安装成功,那你就是天选之子!后面的步骤都与你无关,我建议你立刻去买张彩票,中了奖记得打赏我点(doge)。 不过绝大部分人应该是安装不成功的,那就按下面的步骤一步一步安装。 一:环境准备 1.1.安装gcc、cmake等必要的依赖 sudo apt install -y gcc libtinfo-dev zlib1g-dev build-essential cmake libedit-dev libxml2-dev 1.2.python环境可以有以下几种: 1)单独的python环境 2)anaconda等创建的虚拟环境(这个环境可以是anaconda中普通的python环境,也可以是安装的pytorch、tensorflow等框架) 我们下面会把tvm安装到以上这些现有的python环境中,没必要重新为tvm创建一个新的python环境。 二:安装编译工具:llvm+cuda 2.1 安装LLVM我使用的13.0.0,官网链接,找到自己所需的版本: 注意:这个是编译好的,不是源代码,不需要自己编译。如果下载的是名字中带src的压缩包,还需要自己编译生成LLVM。 下载之后解压,并将文件名改为llvm,将其放入到/usr/local路径下 (/usr/lib路径也可以,只要自己记住就行) 然后将其放入环境变量(不放也可以,但最好放): 命令行输入: sudo vim ~/.bashrc将以下两行添加进去(注意里面的路径) export PATH=$PATH:/usr/local/llvm/bin export LD_LIBRARY_PATH=/usr/local/llvm/lib保存退出,然后命令行更新一下源文件: source ~/.bashrc 2.2 安装cuda+cudnn(可选)只安装llvm就可以用了,但是因为很多代码需要用到cuda+cudnn。如果你不想用cuda+cudnn,那你可以跳过这一步。 在这里不再展示如何安装cuda+cudnn,你可以到网上去搜索。 注意: 如果你是用命令行直接安装的cuda,那cuda的bin、include、lib64路径下是空的,不利于设置环境变量。所以我建议从官网下载cuda+cudnn,中间可能需要更换gcc的版本。 CUDA官网,CUDNN官网 安装cuda+cudnn步骤可参考:博客1,博客2 降级 GCC / G++ 步骤可参考:博客1 配置环境变量: 如果你成功安装了cuda+cudnn,那么就把cuda放到环境变量里去: sudo vim ~/.bashrc并输入: #cuda export PATH=$PATH:/usr/local/cuda-11.6/bin export CPATH=/usr/local/cuda-11.6/targets/x86_64-linux/include:$CPATH export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-11.6/lib64 export LIBRARY_PATH=$LIBRARY_PATH:/usr/local/cuda-11.6/lib64注意注意注意:一定要添加第二行的CPATH,否则编译时会报找不到相关的头文件 保存退出,然后命令行更新一下源文件: source ~/.bashrc 三:下载并编译tvm 3.1 下载tvm可以通过git下载,如果没有git就先下载git(sudo apt-get install git) (双系统可能需要处理一下git,我用git下载tvm一直下载不成功): git clone --recursive https://github.com/apache/tvm tvm也可以在官网下载:https://github.com/apache/tvm/releases 进入tvm文件夹中,新建一个build文件夹,并将cmake文件夹下的config.cmake文件复制到build文件夹中。 修改文件夹build中的config.cmake文件 可以用ubuntu自带的编辑器打开,也可以用vim在终端打开。 修改以下内容: SET(USE_LLVM OFF) 改为: SET(USE_LLVM ON) 或者 SET(USE_LLVM /usr/local/llvm/bin/llvm-config) SET(USE_CUDA OFF) 改为: SET(USE_CUDA ON) 或者 SET(USE_CUDA /cuda的路径) SET(USE_CUDNN OFF) 改为: SET(USE_CUDNN ON)此外: 如果要对IR进行debug:set(USE_RELAY_DEBUG ON)并在环境变量中加入TVM_LOG_DEBUG的路径 如果要对编译过程进行debug:set(USE_GRAPH_EXECUTOR ON) 和(USE_PROFILER ON) 保存退出。 这一步是为了用LLVM/cuda编译tvm。 3.2.3 编译tvm在build文件夹下右键选择“在终端中打开”,执行下面两行: # (确保终端中的路径为/tvm/build) cmake .. make -j16 (数字代表编译的进程数,根据自己的电脑选择)系统编译完tvm后会还会自动搜索tvm的依赖。 3.2.4 tvm依赖报错处理(可选)注:make -j16 编译完最后自动搜索tvm的依赖可能会报下面这种错误: (如果没有报错就跳过3.2.4直接看3.3) usr/bin/ld: 找不到 -lz: 没有那个文件或目录 /usr/bin/ld: 找不到 -ltinfo: 没有那个文件或目录 collect2: error: ld returned 1 exit status make[2]: *** [CMakeFiles/tvm.dir/build.make:1370:libtvm.so] 错误 1 make[2]: 离开目录“/home/用户名/tvm/build” make[1]: *** [CMakeFiles/Makefile2:144:CMakeFiles/tvm.dir/all] 错误 2 make[1]: 离开目录“/home/用户名/tvm/build” make: *** [Makefile:130:all] 错误 2注意:找不到的"-lz"和"-ltinfo"的格式都是"-lxxx",第一个字母l并不是其名称,所以两个问题是找不到"z"和"tinfo",我们安装时需要在名字前面加"lib",尾部加"-dev",即接下来我们安装的是"libz-dev"和"libtinfo-dev"。 (其实在第一步环境准备时这玩意已经被安装过了,但是这里报错,是因为版本不兼容?不满足依赖?为什么有时候报错有时候不报错!) 1)用apt尝试安装 sudo apt-get install libz-dev sudo apt-get install libtinfo-dev试一下看能否安装。 如果安装成功,看这一步:3)重新搜索tvm的依赖 若不能安装,有如下报错的话看下面一步:2)用aptitude安装
安装aptitude: aptitude会自动识别要安装的包之间的依赖关系 sudo apt-get install aptitude安装缺失的包: sudo aptitude install libz-dev sudo aptitude install libtinfo-dev每个包安装时都会提醒你是否接受他给出的解决方案,按照它给出的方案选着“y”或者“n”。 3)重新搜索tvm的依赖 再次输入: make -j16因为tvm已经编译成功了,这次不会再次编译,只会搜索tvm的依赖: 和上面的将LLVM放入环境变量过程一样: 命令行输入: sudo vim ~/.bashrc将下面两行加进去: export TVM_HOME=/tvm的路径 (如果你是按照上面的步骤来做的,tvm的路径应该是:/home/用户名/tvm) export PYTHONPATH=$TVM_HOME/python:${PYTHONPATH}保存退出后更新一下: source ~/.bashrc 四:将tvm导入python先安装一些必要的包: pip install numpy decorator attrs tornado psutil xgboost cloudpickle tensorboard 或者: conda activate 环境名 conda install numpy decorator attrs tornado psutil xgboost cloudpickle tensorboard再进入/tvm/python路径下(里面有setup.py文件,用于将tvm导入python): cd .. (从"/tvm/build"退出到"/tvm") cd python (进入"/tvm/python"路径) python setup.py install (将tvm导入python) 五:测试tvm下面以anaconda中的环境为例。 5.1 终端命令行测试命令行输入: conda activate 环境名 python逐行输入: import tvm tvm.__version__ tvm.cuda().exist (如果按照上述步骤安装了cuda)如果输出’0.9.0 +true’证明安装成功。 打开pycharm新建一个项目,并将python解释器设置为刚刚导入tvm的python。 输入: import tvm print(tvm.__version__) print(tvm.cuda().exist)如果输出0.9.0+true说明安装成功。 如下图:说明我的cuda、tvm都可以用了。 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |