写在前面
老实说,这是我最喜欢的一部分了,最近沉迷于寻找各种用于不同阶段的加速工具,jetson平台的TensorRT属于“推理阶段加速”,也是比较实用的一种加速,之后找个时间我会专门写一节总结,介绍各种加速工具给你,这里就不多说了。
这本书中关于使用TensorRT的部分比较坑,有很多东西我没有顺利安装。这里总结一下我最后成功方法。
安装pycuda
这部分我完全没有按照书中的方法进行安装
1 安装 gcc4.3
sudo apt-get install build-essential gcc-4.3 g++-4.3
cd /usr/bin
sudo ln -sf gcc-4.3 gcc
2 安装libboost
sudo apt-get install libboost-all-dev
3 需要安装特定版本的numpy
pip install -U numpy==1.14.0 -i https://pypi.doubanio.com/simple --user
4 安装依赖库
sudo apt-get install build-essential python-dev python-setuptools libboost-python-dev libboost-thread-dev -y
5 下载pycuda安装包
http://pypi.python.org/pypi/pycuda
6 开始编译pycuda
tar xzvf pycuda-VERSION.tar.gz
cd pycuda-VERSION./configure.py --cuda-root=/usr/local/cuda --cudadrv-lib-dir=/usr/lib --boost-inc-dir=/usr/include --boost-lib-dir=/usr/lib --boost-python-libname=boost_python-py27 --boost-thread-libname=boost_threadmake -j6
sudo python setup.py install
sudo pip install .
这里强调一下,在第3步中需要安装特定版本的numpy,需要根据你安装的pycuda版本而定,它们之间有匹配关系。2020,03,02 我安装的pycuda版本为,相应匹配的numpy版本为1.14.0。版本不匹配的报错信息为:
RuntimeError: module compiled against API version 0xc but this version of numpy is 0xb
Traceback (most recent call last):
File "TRTNet.py", line 3, in <module>
import pycuda.driver as cuda
File "/usr/local/lib/python2.7/dist-packages/pycuda-2019.1.2-py2.7-linux-aarch64.egg/pycuda/driver.py", line 62, in <module>
from pycuda._driver import * # noqa
ImportError: numpy.core.multiarray failed to import
其实很容易发现就是numpy版本的问题,至于如何知道numpy的哪个版本匹配,非常不好意思,我是试出来的,不过一般是降numpy的版本,试验也很快的。
还有一点需要强调,pycuda在编译的时候就已经使用了numpy,所以你的这次试验如果不成功,你需要删除所有pycuda解压后的文件夹重新解压缩编译。