Last active
December 10, 2020 20:21
-
-
Save p3jitnath/34361edc95bf82410d11278cba83fdee to your computer and use it in GitHub Desktop.
Install TensorRT on Ubuntu 20.04 LTS
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
cd $TRT_SOURCE | |
mkdir -p build && cd build | |
cmake .. -DCUDNN_VERSION=7.6.5 -DGPU_ARCHS="75" -DTRT_LIB_DIR=$TRT_RELEASE/lib -DTRT_BIN_DIR=`pwd`/out -DCUDNN_INCLUDE_DIR=/usr/lib/cuda/include -DCUDNN_LIB=/usr/lib/cuda/lib64/libcudnn.so.7> | |
make -j$(nproc) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# | |
# Copyright (c) 2019, NVIDIA CORPORATION. All rights reserved. | |
# | |
# Licensed under the Apache License, Version 2.0 (the "License"); | |
# you may not use this file except in compliance with the License. | |
# You may obtain a copy of the License at | |
# | |
# http://www.apache.org/licenses/LICENSE-2.0 | |
# | |
# Unless required by applicable law or agreed to in writing, software | |
# distributed under the License is distributed on an "AS IS" BASIS, | |
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
# See the License for the specific language governing permissions and | |
# limitations under the License. | |
# | |
cmake_minimum_required(VERSION 3.13 FATAL_ERROR) | |
include(cmake/modules/set_ifndef.cmake) | |
include(cmake/modules/find_library_create_target.cmake) | |
set_ifndef(TRT_LIB_DIR ${CMAKE_BINARY_DIR}) | |
set_ifndef(TRT_BIN_DIR ${CMAKE_BINARY_DIR}) | |
file(STRINGS "${CMAKE_CURRENT_SOURCE_DIR}/include/NvInferVersion.h" VERSION_STRINGS REGEX "#define NV_TENSORRT_.*") | |
foreach(TYPE MAJOR MINOR PATCH BUILD) | |
string(REGEX MATCH "NV_TENSORRT_${TYPE} [0-9]" TRT_TYPE_STRING ${VERSION_STRINGS}) | |
string(REGEX MATCH "[0-9]" TRT_${TYPE} ${TRT_TYPE_STRING}) | |
endforeach(TYPE) | |
foreach(TYPE MAJOR MINOR PATCH) | |
string(REGEX MATCH "NV_TENSORRT_SONAME_${TYPE} [0-9]" TRT_TYPE_STRING ${VERSION_STRINGS}) | |
string(REGEX MATCH "[0-9]" TRT_SO_${TYPE} ${TRT_TYPE_STRING}) | |
endforeach(TYPE) | |
set(TRT_VERSION "${TRT_MAJOR}.${TRT_MINOR}.${TRT_PATCH}.${TRT_BUILD}" CACHE STRING "TRT project version") | |
set(TRT_SOVERSION "${TRT_SO_MAJOR}.${TRT_SO_MINOR}.${TRT_SO_PATCH}" CACHE STRING "TRT library so version") | |
message("Building for TensorRT version: ${TRT_VERSION}, library version: ${TRT_SOVERSION}") | |
if(NOT DEFINED CMAKE_TOOLCHAIN_FILE) | |
find_program(CMAKE_CXX_COMPILER NAMES $ENV{CXX} g++-7) | |
endif() | |
set(CMAKE_SKIP_BUILD_RPATH True) | |
project(TensorRT | |
LANGUAGES CXX CUDA | |
VERSION ${TRT_VERSION} | |
DESCRIPTION "TensorRT is a C++ library that facilitates high performance inference on NVIDIA GPUs and deep learning accelerators." | |
HOMEPAGE_URL "https://github.com/NVIDIA/TensorRT") | |
if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) | |
set(CMAKE_INSTALL_PREFIX ${TRT_LIB_DIR}/../ CACHE PATH "TensorRT installation" FORCE) | |
endif(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) | |
option(BUILD_PLUGINS "Build TensorRT plugin" ON) | |
option(BUILD_PARSERS "Build TensorRT parsers" ON) | |
option(BUILD_SAMPLES "Build TensorRT samples" ON) | |
option(NVPARTNER "Build partner repos from source" OFF) | |
option(NVINTERNAL "Build in NVIDIA internal source tree" OFF) | |
set(CMAKE_CXX_STANDARD 11) | |
set(CMAKE_CXX_STANDARD_REQUIRED ON) | |
set(CMAKE_CXX_EXTENSIONS OFF) | |
############################# CROSS COMPILATION SETTINGS ################################## | |
set_ifndef(TRT_PLATFORM_ID "x86_64") | |
message(STATUS "Targeting TRT Platform: ${TRT_PLATFORM_ID}") | |
############################################################################################ | |
set(TRT_DEBUG_POSTFIX _debug CACHE STRING "suffix for debug builds") | |
if (CMAKE_BUILD_TYPE STREQUAL "Debug") | |
message("Building in debug mode ${DEBUG_POSTFIX}") | |
endif() | |
set(CMAKE_CXX_FLAGS "-Wno-deprecated-declarations ${CMAKE_CXX_FLAGS} -DBUILD_SYSTEM=cmake_oss") | |
set(CMAKE_CUDA_FLAGS "${CMAKE_CUDA_FLAGS} -Xcompiler -Wno-deprecated-declarations") | |
################################### DEPENDENCIES ########################################## | |
set(DEFAULT_CUDA_VERSION 10.1) | |
set(DEFAULT_CUDNN_VERSION 7.5) | |
set(DEFAULT_PROTOBUF_VERSION 3.0.0) | |
set(DEFAULT_PROTOBUF_INTERNAL_VERSION 10.0) | |
set(DEFAULT_CUB_VERSION 1.8.0) | |
# Dependency Version Resolution | |
set_ifndef(CUDA_VERSION ${DEFAULT_CUDA_VERSION}) | |
message(STATUS "CUDA version set to ${CUDA_VERSION}") | |
set_ifndef(CUDNN_VERSION ${DEFAULT_CUDNN_VERSION}) | |
message(STATUS "cuDNN version set to ${CUDNN_VERSION}") | |
if (NVINTERNAL) | |
#TODO: Change this to set_ifndef(PROTOBUF_INTERNAL_VERSION ${DEFAULT_PROTOBUF_INTERNAL_VERSION}) once onnx-tensorrts build system is fixed | |
set_ifndef(PROTOBUF_VERSION ${DEFAULT_PROTOBUF_VERSION}) | |
message(STATUS "Protobuf version set to ${PROTOBUF_INTERNAL_VERSION}") | |
set_ifndef(CUB_VERSION ${DEFAULT_CUB_VERSION}) | |
message(STATUS "CUB version set to ${CUB_VERSION}") | |
#TODO: Remove this once CMake is fully intergrated in the P4 build system | |
set_ifndef(NVINTERNAL_SUFFIX "V2") | |
else() | |
set_ifndef(PROTOBUF_VERSION ${DEFAULT_PROTOBUF_VERSION}) | |
message(STATUS "Protobuf version set to ${PROTOBUF_VERSION}") | |
endif() | |
find_package(Threads REQUIRED) | |
include(third_party/zlib.cmake) | |
include(third_party/protobuf.cmake) | |
if (NVINTERNAL) | |
########################################### DEPENDENCIES FOR BUILDING IN NVIDIA's TREE ############################################ | |
set(EXTERNALS ${PROJECT_SOURCE_DIR}/../externals) | |
set(CUB_ROOT_DIR ${EXTERNALS}/cub/${CUB_VERSION} CACHE STRING "directory of CUB installation") | |
set(Protobuf_DIR ${EXTERNALS}/protobuf/${TRT_PLATFORM_ID} CACHE STRING "directory of PROTOBUF installation") | |
## This needs to be fixed to work with externals | |
if(NOT DEFINED CMAKE_TOOLCHAIN_FILE) | |
find_package(CUDA REQUIRED) | |
endif() | |
# Set this for ONNX Parser | |
set(CUDNN_ROOT_DIR ${EXTERNALS}/cudnn/${TRT_PLATFORM_ID}/${CUDNN_VERSION}/cuda-${CUDA_VERSION}) | |
include_directories( | |
${CUDNN_ROOT_DIR}/include | |
${CUDA_TOOLKIT_ROOT_DIR}/include | |
/usr/lib/cuda/include | |
) | |
#Check externals before using system | |
find_library(CUDNN_LIB cudnn HINTS | |
${CUDNN_ROOT_DIR}/lib64 NO_DEFAULT_PATH) | |
find_library(CUDNN_LIB cudnn HINTS | |
${CUDNN_ROOT_DIR}/lib64) | |
find_library(CUBLAS_LIB cublas HINTS | |
${CUDA_TOOLKIT_ROOT_DIR}/lib NO_DEFAULT_PATH) | |
find_library(CUBLAS_LIB cublas HINTS | |
${CUDA_TOOLKIT_ROOT_DIR}/lib) | |
if(BUILD_PARSERS) | |
#TODO: Change this to configure_protobuf_internal(${PROTOBUF_INTERNAL_VERSION}) once onnx-tensorrts build system is fixed | |
configure_protobuf(${PROTOBUF_VERSION}) | |
endif() | |
########################################### DEPENDENCIES FOR BUILDING IN NVIDIA's TREE ############################################ | |
else() | |
########################################### DEPENDENCIES FOR BUILDING OUTSIDE OF NVIDIA ############################################ | |
if(NOT CUB_ROOT_DIR) | |
set(CUB_ROOT_DIR ${CMAKE_CURRENT_SOURCE_DIR}/third_party/cub CACHE STRING "directory of CUB installation") | |
endif() | |
## find_package(CUDA) is broken for cross-compilation. Enable CUDA language instead. | |
if(NOT DEFINED CMAKE_TOOLCHAIN_FILE) | |
find_package(CUDA ${CUDA_VERSION} REQUIRED) | |
endif() | |
include_directories( | |
${CUDA_INCLUDE_DIRS} | |
/usr/lib/cuda/include | |
) | |
find_library(CUDNN_LIB cudnn HINTS | |
${CUDA_TOOLKIT_ROOT_DIR} ${CUDNN_ROOT_DIR} PATH_SUFFIXES lib64 lib) | |
find_library(CUBLAS_LIB cublas HINTS | |
${CUDA_TOOLKIT_ROOT_DIR} PATH_SUFFIXES lib64 lib lib/stubs) | |
if(BUILD_PARSERS) | |
configure_protobuf(${PROTOBUF_VERSION}) | |
endif() | |
########################################### DEPENDENCIES FOR BUILDING OUTSIDE OF NVIDIA ############################################ | |
endif() | |
find_library_create_target(nvinfer nvinfer SHARED ${TRT_LIB_DIR}) | |
if (NOT (NVINTERNAL OR NVPARTNER)) | |
find_library_create_target(nvuffparser nvparsers SHARED ${TRT_LIB_DIR}) | |
endif() | |
find_library(CUDART_LIB cudart HINTS ${CUDA_TOOLKIT_ROOT_DIR} PATH_SUFFIXES lib lib64) | |
find_library(RT_LIB rt) | |
set(CUDA_LIBRARIES ${CUDART_LIB}) | |
############################################################################################ | |
# TensorRT | |
if(BUILD_PLUGINS) | |
add_subdirectory(plugin${NVINTERNAL_SUFFIX}) | |
else() | |
find_library_create_target(nvinfer_plugin nvinfer_plugin SHARED ${TRT_BIN_DIR} ${TRT_LIB_DIR}) | |
endif() | |
if(BUILD_PARSERS) | |
add_subdirectory(parsers${NVINTERNAL_SUFFIX}) | |
else() | |
if(NVPARTNER OR NVINTERNAL) | |
find_library_create_target(nvuffparser nvparsers SHARED ${TRT_BIN_DIR} ${TRT_LIB_DIR}) | |
endif() | |
find_library_create_target(nvcaffeparser nvparsers SHARED ${TRT_BIN_DIR} ${TRT_LIB_DIR}) | |
find_library_create_target(nvonnxparser nvonnxparser SHARED ${TRT_BIN_DIR} ${TRT_LIB_DIR}) | |
endif() | |
if(BUILD_SAMPLES) | |
add_subdirectory(samples${NVINTERNAL_SUFFIX}) | |
endif() | |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
cmake_minimum_required(VERSION 3.5) | |
set(CMAKE_C_COMPILER "gcc-7") | |
set(CMAKE_CXX_COMPILER "/usr/bin/g++-7") | |
project (tkDNN) | |
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/cmake) | |
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -fPIC -Wno-deprecated-declarations -Wno-unused-variable") | |
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/include/tkDNN) | |
# project specific flags | |
if(DEBUG) | |
add_definitions(-DDEBUG) | |
endif() | |
#------------------------------------------------------------------------------- | |
# CUDA | |
#------------------------------------------------------------------------------- | |
find_package(CUDA 9.0 REQUIRED) | |
SET(CUDA_SEPARABLE_COMPILATION ON) | |
#set(CUDA_NVCC_FLAGS "${CUDA_NVCC_FLAGS} -arch=sm_30 --compiler-options '-fPIC'") | |
set(CUDA_NVCC_FLAGS ${CUDA_NVCC_FLAGS} --maxrregcount=32) | |
find_package(CUDNN REQUIRED) | |
# compile | |
file(GLOB tkdnn_CUSRC "src/kernels/*.cu" "src/sorting.cu") | |
cuda_include_directories(${CMAKE_CURRENT_SOURCE_DIR}/include ${CUDA_INCLUDE_DIRS} ${CUDNN_INCLUDE_DIRS}) | |
cuda_add_library(kernels SHARED ${tkdnn_CUSRC}) | |
#------------------------------------------------------------------------------- | |
# External Libraries | |
#------------------------------------------------------------------------------- | |
find_package(Eigen3 REQUIRED) | |
include_directories(${EIGEN3_INCLUDE_DIR}) | |
find_package(OpenCV REQUIRED) | |
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DOPENCV") | |
# gives problems in cross-compiling, probably malformed cmake config | |
#find_package(yaml-cpp REQUIRED) | |
#------------------------------------------------------------------------------- | |
# Build Libraries | |
#------------------------------------------------------------------------------- | |
file(GLOB tkdnn_SRC "src/*.cpp") | |
set(tkdnn_LIBS kernels ${CUDA_LIBRARIES} ${CUDA_CUBLAS_LIBRARIES} ${CUDNN_LIBRARIES} ${OpenCV_LIBS} yaml-cpp) | |
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") | |
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/include /usr/lib/cuda/include /home/pritthijit/TensorRT-6.0.1.5/include ${CUDA_INCLUDE_DIRS} ${OPENCV_INCLUDE_DIRS} ${NVINFER_INCLUDES}) | |
add_library(tkDNN SHARED ${tkdnn_SRC}) | |
target_link_libraries(tkDNN ${tkdnn_LIBS}) | |
#static | |
#add_library(tkDNN_static STATIC ${tkdnn_SRC}) | |
#target_link_libraries(tkDNN_static ${tkdnn_LIBS}) | |
# SMALL NETS | |
add_executable(test_simple tests/simple/test_simple.cpp) | |
target_link_libraries(test_simple tkDNN) | |
add_executable(test_mnist tests/mnist/test_mnist.cpp) | |
target_link_libraries(test_mnist tkDNN) | |
add_executable(test_mnistRT tests/mnist/test_mnistRT.cpp) | |
target_link_libraries(test_mnistRT tkDNN) | |
add_executable(test_imuodom tests/imuodom/imuodom.cpp) | |
target_link_libraries(test_imuodom tkDNN) | |
# DARKNET | |
file(GLOB darknet_SRC "tests/darknet/*.cpp") | |
foreach(test_SRC ${darknet_SRC}) | |
get_filename_component(test_NAME "${test_SRC}" NAME_WE) | |
set(test_NAME test_${test_NAME}) | |
add_executable(${test_NAME} ${test_SRC}) | |
target_link_libraries(${test_NAME} tkDNN) | |
endforeach() | |
# MOBILENET | |
add_executable(test_mobilenetv2ssd tests/mobilenet/mobilenetv2ssd/mobilenetv2ssd.cpp) | |
target_link_libraries(test_mobilenetv2ssd tkDNN) | |
add_executable(test_bdd-mobilenetv2ssd tests/mobilenet/bdd-mobilenetv2ssd/bdd-mobilenetv2ssd.cpp) | |
target_link_libraries(test_bdd-mobilenetv2ssd tkDNN) | |
add_executable(test_mobilenetv2ssd512 tests/mobilenet/mobilenetv2ssd512/mobilenetv2ssd512.cpp) | |
target_link_libraries(test_mobilenetv2ssd512 tkDNN) | |
# BACKBONES | |
add_executable(test_resnet101 tests/backbones/resnet101/resnet101.cpp) | |
target_link_libraries(test_resnet101 tkDNN) | |
add_executable(test_dla34 tests/backbones/dla34/dla34.cpp) | |
target_link_libraries(test_dla34 tkDNN) | |
# CENTERNET | |
add_executable(test_resnet101_cnet tests/centernet/resnet101_cnet/resnet101_cnet.cpp) | |
target_link_libraries(test_resnet101_cnet tkDNN) | |
add_executable(test_dla34_cnet tests/centernet/dla34_cnet/dla34_cnet.cpp) | |
target_link_libraries(test_dla34_cnet tkDNN) | |
# DEMOS | |
add_executable(test_rtinference tests/test_rtinference/rtinference.cpp) | |
target_link_libraries(test_rtinference tkDNN) | |
add_executable(map_demo demo/demo/map.cpp) | |
target_link_libraries(map_demo tkDNN) | |
add_executable(demo demo/demo/demo.cpp) | |
target_link_libraries(demo tkDNN) | |
#------------------------------------------------------------------------------- | |
# Install | |
#------------------------------------------------------------------------------- | |
#if (CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) | |
# set (CMAKE_INSTALL_PREFIX "${CMAKE_BINARY_DIR}/install" | |
# CACHE PATH "default install path" FORCE) | |
#endif() | |
message("install dir:" ${CMAKE_INSTALL_PREFIX}) | |
install(DIRECTORY include/ DESTINATION include/) | |
install(TARGETS tkDNN kernels DESTINATION lib) | |
install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/cmake/" # source directory | |
DESTINATION "share/tkDNN/cmake/" # target directory | |
) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment