tensorrt cmakelist 顺序影响
# cuda10.0
include_directories(/usr/local/cuda/include)
link_directories(/usr/local/cuda/lib64)
# tensorrt 7.0.0.11
set(TENSORRT_ROOT ${CMAKE_SOURCE_DIR}/3rdparty/TensorRT-7.0.0.11)
include_directories(${TENSORRT_ROOT}/include)
link_directories(${TENSORRT_ROOT}/lib)
今天突然发现这两个顺序颠倒会影响精度。具体原因是调用的libnvinfer这个库。
cuda10.0和tensorrt目录下面都有这个库,但是cuda目录下面的库是6版本的,tensorrt下面这个库是7版本的。具体看下面这个图:
顺序不一样,链接的库的版本不一样,哪个在前面就优先链接哪个库。
我这边是cuda在前面精度才一致,如果链接tensorrt目录下面的libnvinfer.so.7这个库精度就会不一致。看了git工程,大家写的cmakelist大部分都是把cuda写在前面。
试想想,如果我一开始把tensorrt写前面,然后精度不一致,又不报错,然后这个精度问题根本查找不出来的吧?太难了。
还好我是一开始把cuda写前面,然后再新建工程复制粘贴把tensorrt写前面发现精度不一致了,
然后也找了半天原因,各种控制变量实验,才发现顺序不一样,链接的库不一样,精度不一样。
好记性不如烂键盘---点滴、积累、进步!