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