因为新购的机器装的是30系的显卡,但MegEngine官方因为某些原因没有针对30系显卡发布cu11版的whl包,但在代码上做了针对cu11的支持,因此可通过自行使用cu11编译支持30系的whl,官方对此也有文档说明。 在安装指引下遇到了部分问题,因此总结,给有相关需求的朋友避个坑。其实由于官方提供的指引是基于他们已经构建的自动化编译脚本阐述的,所以按照指引编译,需要避开的坑是不多的。
(注:官方自动化脚本是基于Docker的,需要提前安装好Docker。)
编译时的环境如下:
- 操作系统:Ubuntu 18.04
- CUDA: 11.1.1 (11.1 Update1) (注:官方脚本中写的应该是CUDA 11.1.0,因此checkversion中会出现cublas的版本不符合要求的报错,这可通过修改脚本中的check_version解决,但是推荐使用官方要求的版本,避免出现一些问题。)
- TensorRT 7.2.2.3
- CUDNN 8.0.4 (官方推荐版)
官方推荐编译环境:
-
cuda 10.1.0:
- CUDNN: 7.6.3
- TensorRT:6.0.1.5
- CUBLAS:10.2.1.243
-
cuda 11.1.0:
- CUDNN:8.0.4
- TensorRT: 7.2.2.3
- CUBLAS: 11.2.1.74
-
cuda 11.2.0:
- CUDNN:8.0.4 (注:使用 cudnn 8.0.4 for cu11.1即可)
- TensorRT:7.2.2.3
- CUBLAS: 11.3.1.68
遇到的问题
- Docker的rootless无法使用,这应该是docker的一个坑,如果是自己的电脑,可以无视这个,直接使用sudo编译,使用sudo时需要将
CUDA_ROOT_DIR,CUDNN_ROOT_DIR,TENSORRT_ROOT_DIR
这几个环境变量写入build_wheel_common.sh里。如果需要rootless(公共环境)的话,自行安装slirp4nets库或许可解决rootless的问题。 - swig下载可能会出现失败,这个问题没什么特别好的解决办法,需要多尝试几次。
编译好的whl下载地址