首先是安装tensorrt:
参考的博客:
https://arleyzhang.github.io/articles/7f4b25ce/
然后配合着官网文档安装下来基本没啥大问题,这里要注意的一点就是,不管是不是用.tar安装的tensorrt 最好都下载下来,分别安装好python2和python3的whl
然后是安装onnx-tensorrt:
因为我使用的框架是pytorch都需要先转成onnx再转成tensorrt,onnx-tensor这个库就十分重要。
安装这个库存在大量的陷阱:
步骤一:
在 官网把库先下载下来:
安装基本流程
$ mkdir build
$ cd build
$ cmake .. -DTENSORRT_ROOT=<tensorrt_install_dir> -DGPU_ARCHS="75"
$ make -j8
$ sudo make install
DGPU_ARCHS="75"要改成自己的显卡算力,我的1050卡就是61
坑1:
CMake Error at CMakeLists.txt:121 (add_subdirectory):
The source directory
/home/xxx/Downloads/onnx-tensorrt-master/third_party/onnx
does not contain a CMakeLists.txt file.
原因是github上下载项目的时候,没有把/onnx-tensorrt-master/third_party/onnx/中的包含的onnx库的东西下载下来,手动下载并复制到该路径下即可。
至此,C++版本的已经安装完毕,这个时候,需要安装Python版本的,坑又出现了。
你需要执行以下部分:
python setup.py build
sudo python setup.py install
python setup.py build
的坑
Namespace(action=['build'], build_lib=None, include_dirs=None)
running build
running build_py
running build_ext
building 'onnx_tensorrt.parser._nv_onnx_parser_bindings' extension
swigging nv_onnx_parser_bindings.i to nv_onnx_parser_bindings_wrap.cpp
swig -python -c++ -modern -builtin -o nv_onnx_parser_bindings_wrap.cpp nv_onnx_parser_bindings.i
NvOnnxParser.h:213: Error: Syntax error in input(1).
error: command 'swig' failed with exit status 1
在安装完swig之后(sudo apt-get install swig),Add #define TENSORRTAPI at the top of NvOnnxParser.h, and re-run python setup.py install。
sudo python setup.py install
的坑一
这里在安装依赖pycuda的时候一直提示找不到cuda的路径 即cuda.h 没有这样的文件或目录,但实际上我已经设置CUDA_ROOT并将binCUDA安装的路径添加到PATH环境变量中,所以此错误很奇怪。因此,安装程序应该已经找到cuda.h了我可以看到的内容$CUDA_ROOT/include
原因是因为:找不到nvcc。在下载PyCUDA的源代码并进行检查时setup.py,使用check for nvcc来找出CUDA_ROOTand CUDA_INC_DIR。
而nvcc不可见的原因是CUDA_ROOT为我的用户设置的,但是PATH当在sudo此处运行命令时,这是不可见的。
解决的办法是切换成root用户
sudo su -
pip install pycuda
这里这样安装的是python2 还可以用pip3把python3版本也装上 然后安装命令 python也变成python3 setup.py include
sudo python setup.py install
的坑二
找不到python.h,其实就是因为我的python是anaconda环境安装的,这里就需要手动 安装
sudo apt-get install python-dev
sudo apt-get install python3-dev