编译 TVM 记录

https://tvm.apache.org/docs/install/from_source.html#install-from-source
因为 自己编译 tvm 提供的docker ci_gpu 镜像不成功。
就使用了 TLCPACK 的预编译的镜像,但好像也不能用。

https://tlcpack.ai/
使用 conda 安装预编译好的

conda install tlcpack-nightly-cu102 -c tlcpack

但试着跑 TVM教程的时候,target "cuda"报错了,感觉是啥Bug。
还是自己来波编译把。
为了方便,
使用 conda 环境编译

Building with a Conda Environment

进入 tvm 源码目录

cd /path_to_tvm/tvm
conda env create --file conda/build-environment.yaml

直接来个
bash ./conda/build_cuda.sh
会报错
没有指定 ${CUDA_VERSION}
我的环境 CUDA 为11.4.
export CUDA_VERSION=11.4

然后运行
bash ./conda/build_cuda.sh
报错惨不忍睹,看起来都是些版本依赖冲突的报错。

猜测是 conda 不支持 cuda11.4的编译环境,改成
export CUDA_VERSION=10.2
运行下去了
bash ./conda/build_cuda.sh
但 cmake配置阶段,说找不到cudnn

spack install cudnn
spack load cudnn

这样竟然还找不到 cudnn
没得办法,
查看下这 cmake 怎么写
tvm/cmake/utils/FindCUDA.cmake
里面好像默认cudnn和cuda在一个目录里。
我试了试,读取
$ENV{CUDNN_DIR} 好像也没什么用。
直接把 这个文件改了

image.png

应该改

conda/recipe/build.sh

这个文件。

好歹编译成功了
然后是安装

 conda install tvm-cu10 -c ./conda/pkg

编译 个 resnet50 试试

tvmc compile --target "cuda" --output resnet50-v2-7-tvm-cuda.tar resnet50-v2-7.onnx

只有 warning 没 error
跑模型试试

tvmc run --inputs code/imagenet_cat.npz --output data/predictions_cuda.npz --device cuda resnet50-v2-7-tvm-cuda.tar

没啥问题。


image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容