124 lines
5.5 KiB
Markdown
124 lines
5.5 KiB
Markdown
|
# Instructions for x86_64 platforms
|
||
|
|
||
|
All demos in this repository, with minor tweaks, should also work on x86_64 platforms with NVIDIA GPU(s). Here is a list of required modifications if you'd like to run the demos on an x86_64 PC/server.
|
||
|
|
||
|
|
||
|
Make sure you have TensorRT installed properly on your x86_64 system. You could follow NVIDIA's official [Installation Guide :: NVIDIA Deep Learning TensorRT](https://docs.nvidia.com/deeplearning/tensorrt/install-guide/index.html) documentation.
|
||
|
|
||
|
Demo #1 (GoogLeNet) and #2 (MTCNN)
|
||
|
----------------------------------
|
||
|
|
||
|
1. Set `TENSORRT_INCS` and `TENSORRT_LIBS` in "common/Makefile.config" correctly for your x86_64 system. More specifically, you should find the following lines in "common/Mafefile.config" and modify them if needed.
|
||
|
|
||
|
```
|
||
|
# These are the directories where I installed TensorRT on my x86_64 PC.
|
||
|
TENSORRT_INCS=-I"/usr/local/TensorRT-7.1.3.4/include"
|
||
|
TENSORRT_LIBS=-L"/usr/local/TensorRT-7.1.3.4/lib"
|
||
|
```
|
||
|
|
||
|
2. Set `library_dirs` and `include_dirs` in "setup.py". More specifically, you should check and make sure the 2 TensorRT path lines are correct.
|
||
|
|
||
|
```python
|
||
|
library_dirs = [
|
||
|
'/usr/local/cuda/lib64',
|
||
|
'/usr/local/TensorRT-7.1.3.4/lib', # for my x86_64 PC
|
||
|
'/usr/local/lib',
|
||
|
]
|
||
|
......
|
||
|
include_dirs = [
|
||
|
# in case the following numpy include path does not work, you
|
||
|
# could replace it manually with, say,
|
||
|
# '-I/usr/local/lib/python3.6/dist-packages/numpy/core/include',
|
||
|
'-I' + numpy.__path__[0] + '/core/include',
|
||
|
'-I/usr/local/cuda/include',
|
||
|
'-I/usr/local/TensorRT-7.1.3.4/include', # for my x86_64 PC
|
||
|
'-I/usr/local/include',
|
||
|
]
|
||
|
```
|
||
|
|
||
|
3. Follow the steps in the original [README.md](https://github.com/jkjung-avt/tensorrt_demos/blob/master/README.md), and the demos should work on x86_64 as well.
|
||
|
|
||
|
Demo #3 (SSD)
|
||
|
-------------
|
||
|
|
||
|
1. Make sure to follow NVIDIA's official [Installation Guide :: NVIDIA Deep Learning TensorRT](https://docs.nvidia.com/deeplearning/tensorrt/install-guide/index.html) documentation and pip3 install "tensorrt", "uff", and "graphsurgeon" packages.
|
||
|
|
||
|
2. Patch `/usr/local/lib/python3.?/dist-packages/graphsurgeon/node_manipulation.py` by adding the following line (around line #42):
|
||
|
|
||
|
```python
|
||
|
def shape(node):
|
||
|
......
|
||
|
node.name = name or node.name
|
||
|
node.op = op or node.op or node.name
|
||
|
+ node.attr["dtype"].type = 1
|
||
|
for key, val in kwargs.items():
|
||
|
......
|
||
|
```
|
||
|
3. (I think this step is only required for TensorRT 6 or earlier versions.) Re-build `libflattenconcat.so` from TensorRT's 'python/uff_ssd' sample source code. For example,
|
||
|
|
||
|
```shell
|
||
|
$ mkdir -p ${HOME}/src/TensorRT-5.1.5.0
|
||
|
$ cp -r /usr/local/TensorRT-5.1.5.0/samples ${HOME}/src/TensorRT-5.1.5.0
|
||
|
$ cd ${HOME}/src/TensorRT-5.1.5.0/samples/python/uff_ssd
|
||
|
$ mkdir build
|
||
|
$ cd build
|
||
|
$ cmake -D NVINFER_LIB=/usr/local/TensorRT-5.1.5.0/lib/libnvinfer.so \
|
||
|
-D TRT_INCLUDE=/usr/local/TensorRT-5.1.5.0/include ..
|
||
|
$ make
|
||
|
$ cp libflattenconcat.so ${HOME}/project/tensorrt_demos/ssd/
|
||
|
```
|
||
|
|
||
|
4. Install "pycuda".
|
||
|
|
||
|
```shell
|
||
|
$ sudo apt-get install -y build-essential python-dev
|
||
|
$ sudo apt-get install -y libboost-python-dev libboost-thread-dev
|
||
|
$ sudo pip3 install setuptools
|
||
|
$ export boost_pylib=$(basename /usr/lib/x86_64-linux-gnu/libboost_python3-py3?.so)
|
||
|
$ export boost_pylibname=${boost_pylib%.so}
|
||
|
$ export boost_pyname=${boost_pylibname/lib/}
|
||
|
$ cd ${HOME}/src
|
||
|
$ wget https://files.pythonhosted.org/packages/5e/3f/5658c38579b41866ba21ee1b5020b8225cec86fe717e4b1c5c972de0a33c/pycuda-2019.1.2.tar.gz
|
||
|
$ tar xzvf pycuda-2019.1.2.tar.gz
|
||
|
$ cd pycuda-2019.1.2
|
||
|
$ ./configure.py --python-exe=/usr/bin/python3 \
|
||
|
--cuda-root=/usr/local/cuda \
|
||
|
--cudadrv-lib-dir=/usr/lib/x86_64-linux-gnu \
|
||
|
--boost-inc-dir=/usr/include \
|
||
|
--boost-lib-dir=/usr/lib/x86_64-linux-gnu \
|
||
|
--boost-python-libname=${boost_pyname} \
|
||
|
--boost-thread-libname=boost_thread \
|
||
|
--no-use-shipped-boost
|
||
|
$ make -j4
|
||
|
$ python3 setup.py build
|
||
|
$ sudo python3 setup.py install
|
||
|
$ python3 -c "import pycuda; print('pycuda version:', pycuda.VERSION)"
|
||
|
```
|
||
|
|
||
|
5. Follow the steps in the original [README.md](https://github.com/jkjung-avt/tensorrt_demos/blob/master/README.md) but skip `install.sh`. You should be able to build the SSD TensorRT engines and run them on on x86_64 as well.
|
||
|
|
||
|
Demo #4 (YOLOv3) & Demo #5 (YOLOv4)
|
||
|
-----------------------------------
|
||
|
|
||
|
Checkout "plugins/Makefile". You'll need to make sure in "plugins/Makefile":
|
||
|
|
||
|
* CUDA `compute` is set correctly for your GPU (reference: [CUDA GPUs | NVIDIA Developer]());
|
||
|
* `TENSORRT_INCS` and `TENSORRT_LIBS` point to the right paths.
|
||
|
|
||
|
```
|
||
|
......
|
||
|
else ifeq ($(cpu_arch), x86_64) # x86_64 PC
|
||
|
$(warning "compute=75" is for GeForce RTX-2080 Ti. Please make sure CUDA compute is set correctly for your system in the Makefile.)
|
||
|
compute=75
|
||
|
......
|
||
|
NVCCFLAGS=-m64 -gencode arch=compute_$(compute),code=sm_$(compute) \
|
||
|
-gencode arch=compute_$(compute),code=compute_$(compute)
|
||
|
......
|
||
|
# These are the directories where I installed TensorRT on my x86_64 PC.
|
||
|
TENSORRT_INCS=-I"/usr/local/TensorRT-7.1.3.4/include"
|
||
|
TENSORRT_LIBS=-L"/usr/local/TensorRT-7.1.3.4/lib"
|
||
|
......
|
||
|
```
|
||
|
|
||
|
Otherwise, you should be able to follow the steps in the original [README.md](https://github.com/jkjung-avt/tensorrt_demos/blob/master/README.md) to get these 2 demos working.
|