NVIDIA-AI-IOT / tf_to_trt_image_classification

Image classification with NVIDIA TensorRT from TensorFlow models.
BSD 3-Clause "New" or "Revised" License
456 stars 155 forks source link

Error while running make: cannot find -lnvparsers #17

Open gangooteli opened 6 years ago

gangooteli commented 6 years ago

$ dpkg -l | grep tensorRT ii tensorrt-2.1.2 3.0.2-1+cuda8.0 arm64 Meta package of TensorRT

while running make, i am getting below error: nvidia@tegra-ubuntu:~/Documents/tf_to_trt_models/tf_to_trt_image_classification/build$ cmake .. -- Found CUDA: /usr/local/cuda-8.0 (found suitable exact version "8.0") -- Found CUDA: /usr/local/cuda-8.0 (found version "8.0") -- Configuring done -- Generating done -- Build files have been written to: /home/nvidia/Documents/tf_to_trt_models/tf_to_trt_image_classification/build

nvidia@tegra-ubuntu:~/Documents/tf_to_trt_models/tf_to_trt_image_classification/build$ make [ 16%] Linking CXX executable classify_image /usr/bin/ld: cannot find -lnvparsers collect2: error: ld returned 1 exit status examples/classify_image/CMakeFiles/classify_image.dir/build.make:513: recipe for target 'examples/classify_image/classify_image' failed make[2]: [examples/classify_image/classify_image] Error 1 CMakeFiles/Makefile2:103: recipe for target 'examples/classify_image/CMakeFiles/classify_image.dir/all' failed make[1]: [examples/classify_image/CMakeFiles/classify_image.dir/all] Error 2 Makefile:83: recipe for target 'all' failed make: *** [all] Error 2

Please help

ghost commented 6 years ago

Hi @gangooteli.

Have you loaded software to your Jetson TX2 using the latest JetPack 3.2 (see Setup)? It should install CUDA 9.0 and TensorRT 3.0.4 if successful.

Let me know if you run into any issues.

gangooteli commented 6 years ago

Will this code base not work for cuda 8? I am using cuda 8. I have some other project setup using cuda 8. So didn't wanted to remove cuda 8 and install cuda 9. TensorRT is also loaded using JetPack.

ghost commented 6 years ago

Not without some modification.

TensorRT 3.0.4 (shipped with JetPack 3.2, dependent on CUDA 9) contains support for the Squeeze operation which is used in each image classification model listed. Perhaps you could modify each TensorFlow graph to remove the Squeeze operation and the conversion will succeed using the version of TensorRT you mentioned, but I haven't tested this. (Let me know if you need help on this end)

That said, the original error you listed indicates the compiler cannot locate the shared library libnvparsers.so. This should be located under /usr/lib/aarch64-linux-gnu. Are you able to verify that this file is present?

Beastmaster commented 6 years ago

You should link "nvparsers" (/usr/local/nvidia/tensorrt/targets/x86_64-linux-gnu/lib/libnvparsers.so) in CMakeLists.txt when loading from uff file add the following line: target_link_libraries(PRJ_NAME, nvparsers)