1
1
#
2
- # Copyright (c) 2019 , NVIDIA CORPORATION. All rights reserved.
2
+ # Copyright (c) 2020 , NVIDIA CORPORATION. All rights reserved.
3
3
#
4
4
# Licensed under the Apache License, Version 2.0 (the "License");
5
5
# you may not use this file except in compliance with the License.
@@ -19,7 +19,7 @@ include(cmake/modules/set_ifndef.cmake)
19
19
include (cmake/modules/find_library_create_target.cmake)
20
20
21
21
set_ifndef(TRT_LIB_DIR ${CMAKE_BINARY_DIR} )
22
- set_ifndef(TRT_BIN_DIR ${CMAKE_BINARY_DIR} )
22
+ set_ifndef(TRT_OUT_DIR ${CMAKE_BINARY_DIR} )
23
23
24
24
file (STRINGS "${CMAKE_CURRENT_SOURCE_DIR} /include/NvInferVersion.h" VERSION_STRINGS REGEX "#define NV_TENSORRT_.*" )
25
25
@@ -33,8 +33,8 @@ foreach(TYPE MAJOR MINOR PATCH)
33
33
string (REGEX MATCH "[0-9]" TRT_SO_${TYPE} ${TRT_TYPE_STRING} )
34
34
endforeach (TYPE )
35
35
36
- set (TRT_VERSION "${TRT_MAJOR} .${TRT_MINOR} .${TRT_PATCH} . ${TRT_BUILD} " CACHE STRING "TRT project version" )
37
- set (TRT_SOVERSION "${TRT_SO_MAJOR} . ${TRT_SO_MINOR} . ${TRT_SO_PATCH} " CACHE STRING "TRT library so version" )
36
+ set (TRT_VERSION "${TRT_MAJOR} .${TRT_MINOR} .${TRT_PATCH} " CACHE STRING "TensorRT project version" )
37
+ set (TRT_SOVERSION "${TRT_SO_MAJOR} " CACHE STRING "TensorRT library so version" )
38
38
message ("Building for TensorRT version: ${TRT_VERSION} , library version: ${TRT_SOVERSION} " )
39
39
40
40
if (NOT DEFINED CMAKE_TOOLCHAIN_FILE)
@@ -56,26 +56,81 @@ endif(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
56
56
option (BUILD_PLUGINS "Build TensorRT plugin" ON )
57
57
option (BUILD_PARSERS "Build TensorRT parsers" ON )
58
58
option (BUILD_SAMPLES "Build TensorRT samples" ON )
59
- option (NVPARTNER "Build partner repos from source" OFF )
60
- option (NVINTERNAL "Build in NVIDIA internal source tree" OFF )
61
59
62
60
set (CMAKE_CXX_STANDARD 11)
63
61
set (CMAKE_CXX_STANDARD_REQUIRED ON )
64
62
set (CMAKE_CXX_EXTENSIONS OFF )
63
+ set (CMAKE_CXX_FLAGS "-Wno-deprecated-declarations ${CMAKE_CXX_FLAGS} -DBUILD_SYSTEM=cmake_oss" )
65
64
66
- ############################# CROSS COMPILATION SETTINGS ##################################
65
+ ############################################################################################
66
+ # Cross-compilation settings
67
67
68
68
set_ifndef(TRT_PLATFORM_ID "x86_64" )
69
69
message (STATUS "Targeting TRT Platform: ${TRT_PLATFORM_ID} " )
70
70
71
71
############################################################################################
72
+ # Debug settings
73
+
72
74
set (TRT_DEBUG_POSTFIX _debug CACHE STRING "suffix for debug builds" )
73
75
74
76
if (CMAKE_BUILD_TYPE STREQUAL "Debug" )
75
77
message ("Building in debug mode ${DEBUG_POSTFIX} " )
76
78
endif ()
77
79
78
- set (CMAKE_CXX_FLAGS "-Wno-deprecated-declarations ${CMAKE_CXX_FLAGS} -DBUILD_SYSTEM=cmake_oss" )
80
+ ############################################################################################
81
+ # Dependencies
82
+
83
+ set (DEFAULT_CUDA_VERSION 11.0)
84
+ set (DEFAULT_CUDNN_VERSION 8.0)
85
+ set (DEFAULT_PROTOBUF_VERSION 3.0.0)
86
+ set (DEFAULT_CUB_VERSION 1.8.0)
87
+
88
+ # Dependency Version Resolution
89
+ set_ifndef(CUDA_VERSION ${DEFAULT_CUDA_VERSION} )
90
+ message (STATUS "CUDA version set to ${CUDA_VERSION} " )
91
+ set_ifndef(CUDNN_VERSION ${DEFAULT_CUDNN_VERSION} )
92
+ message (STATUS "cuDNN version set to ${CUDNN_VERSION} " )
93
+ set_ifndef(PROTOBUF_VERSION ${DEFAULT_PROTOBUF_VERSION} )
94
+ message (STATUS "Protobuf version set to ${PROTOBUF_VERSION} " )
95
+
96
+ find_package (Threads REQUIRED)
97
+ if (BUILD_PLUGINS OR BUILD_PARSERS)
98
+ include (third_party/zlib.cmake)
99
+ include (third_party/protobuf.cmake)
100
+ endif ()
101
+ if (NOT CUB_ROOT_DIR)
102
+ set (CUB_ROOT_DIR ${CMAKE_CURRENT_SOURCE_DIR} /third_party/cub CACHE STRING "directory of CUB installation" )
103
+ endif ()
104
+
105
+ ## find_package(CUDA) is broken for cross-compilation. Enable CUDA language instead.
106
+ if (NOT DEFINED CMAKE_TOOLCHAIN_FILE)
107
+ find_package (CUDA ${CUDA_VERSION} REQUIRED)
108
+ endif ()
109
+
110
+ include_directories (
111
+ ${CUDA_INCLUDE_DIRS}
112
+ ${CUDNN_ROOT_DIR} /include
113
+ )
114
+ find_library (CUDNN_LIB cudnn HINTS
115
+ ${CUDA_TOOLKIT_ROOT_DIR} ${CUDNN_ROOT_DIR} PATH_SUFFIXES lib64 lib)
116
+ find_library (CUBLAS_LIB cublas HINTS
117
+ ${CUDA_TOOLKIT_ROOT_DIR} PATH_SUFFIXES lib64 lib lib/stubs)
118
+ find_library (CUBLASLT_LIB cublasLt HINTS
119
+ ${CUDA_TOOLKIT_ROOT_DIR} PATH_SUFFIXES lib64 lib lib/stubs)
120
+ if (BUILD_PARSERS)
121
+ configure_protobuf(${PROTOBUF_VERSION} )
122
+ endif ()
123
+
124
+ find_library_create_target(nvinfer nvinfer SHARED ${TRT_LIB_DIR} )
125
+ find_library_create_target(nvuffparser nvparsers SHARED ${TRT_LIB_DIR} )
126
+
127
+ find_library (CUDART_LIB cudart HINTS ${CUDA_TOOLKIT_ROOT_DIR} PATH_SUFFIXES lib lib64)
128
+ find_library (RT_LIB rt)
129
+
130
+ set (CUDA_LIBRARIES ${CUDART_LIB} )
131
+
132
+ ############################################################################################
133
+ # CUDA targets
79
134
80
135
if (DEFINED GPU_ARCHS)
81
136
message (STATUS "GPU_ARCHS defined as ${GPU_ARCHS} . Generating CUDA code for SM ${GPU_ARCHS} " )
@@ -88,6 +143,12 @@ else()
88
143
70
89
144
75
90
145
)
146
+ if (CUDA_VERSION VERSION_GREATER_EQUAL 11.0)
147
+ # Ampere GPU (SM80) support is only available in CUDA versions > 11.0
148
+ list (APPEND GPU_ARCHS 80)
149
+ else ()
150
+ message (WARNING "Detected CUDA version is < 11.0. SM80 not supported." )
151
+ endif ()
91
152
message (STATUS "GPU_ARCHS is not defined. Generating CUDA code for default SMs: ${GPU_ARCHS} " )
92
153
endif ()
93
154
set (BERT_GENCODES)
@@ -106,140 +167,23 @@ if (${LATEST_SM} GREATER_EQUAL 70)
106
167
endif ()
107
168
set (CMAKE_CUDA_FLAGS "${CMAKE_CUDA_FLAGS} -Xcompiler -Wno-deprecated-declarations" )
108
169
109
- ################################### DEPENDENCIES ##########################################
110
- set (DEFAULT_CUDA_VERSION 10.2)
111
- set (DEFAULT_CUDNN_VERSION 7.6)
112
- set (DEFAULT_PROTOBUF_VERSION 3.0.0)
113
- set (DEFAULT_PROTOBUF_INTERNAL_VERSION 10.0)
114
- set (DEFAULT_CUB_VERSION 1.8.0)
115
-
116
- # Dependency Version Resolution
117
- set_ifndef(CUDA_VERSION ${DEFAULT_CUDA_VERSION} )
118
- message (STATUS "CUDA version set to ${CUDA_VERSION} " )
119
- set_ifndef(CUDNN_VERSION ${DEFAULT_CUDNN_VERSION} )
120
- message (STATUS "cuDNN version set to ${CUDNN_VERSION} " )
121
-
122
- if (NVINTERNAL)
123
- #TODO: Change this to set_ifndef(PROTOBUF_INTERNAL_VERSION ${DEFAULT_PROTOBUF_INTERNAL_VERSION}) once onnx-tensorrts build system is fixed
124
- set_ifndef(PROTOBUF_VERSION ${DEFAULT_PROTOBUF_VERSION} )
125
- message (STATUS "Protobuf version set to ${PROTOBUF_INTERNAL_VERSION} " )
126
- set_ifndef(CUB_VERSION ${DEFAULT_CUB_VERSION} )
127
- message (STATUS "CUB version set to ${CUB_VERSION} " )
128
- #TODO: Remove this once CMake is fully intergrated in the P4 build system
129
- set_ifndef(NVINTERNAL_SUFFIX "V2" )
130
- else ()
131
- set_ifndef(PROTOBUF_VERSION ${DEFAULT_PROTOBUF_VERSION} )
132
- message (STATUS "Protobuf version set to ${PROTOBUF_VERSION} " )
133
- endif ()
134
-
135
-
136
- find_package (Threads REQUIRED)
137
- if (BUILD_PLUGINS OR BUILD_PARSERS)
138
- include (third_party/zlib.cmake)
139
- include (third_party/protobuf.cmake)
140
- endif ()
141
- if (NVINTERNAL)
142
- ########################################### DEPENDENCIES FOR BUILDING IN NVIDIA's TREE ############################################
143
- set (EXTERNALS ${PROJECT_SOURCE_DIR} /../externals)
144
- set (CUB_ROOT_DIR ${EXTERNALS} /cub/${CUB_VERSION} CACHE STRING "directory of CUB installation" )
145
- set (Protobuf_DIR ${EXTERNALS} /protobuf/${TRT_PLATFORM_ID} CACHE STRING "directory of PROTOBUF installation" )
146
-
147
- ## This needs to be fixed to work with externals
148
- if (NOT DEFINED CMAKE_TOOLCHAIN_FILE)
149
- find_package (CUDA REQUIRED)
150
- endif ()
151
-
152
- # Set this for ONNX Parser
153
- set (CUDNN_ROOT_DIR ${EXTERNALS} /cudnn/${TRT_PLATFORM_ID} /${CUDNN_VERSION} /cuda-${CUDA_VERSION} )
154
-
155
- include_directories (
156
- ${CUDNN_ROOT_DIR} /include
157
- ${CUDA_TOOLKIT_ROOT_DIR} /include
158
- /usr/local/cuda-${CUDA_VERSION} /include
159
- )
160
-
161
-
162
- #Check externals before using system
163
- find_library (CUDNN_LIB cudnn HINTS
164
- ${CUDNN_ROOT_DIR} /lib64 NO_DEFAULT_PATH)
165
- find_library (CUDNN_LIB cudnn HINTS
166
- ${CUDNN_ROOT_DIR} /lib64)
167
-
168
- find_library (CUBLAS_LIB cublas HINTS
169
- ${CUDA_TOOLKIT_ROOT_DIR} /lib NO_DEFAULT_PATH)
170
- find_library (CUBLAS_LIB cublas HINTS
171
- ${CUDA_TOOLKIT_ROOT_DIR} /lib)
172
-
173
- if (BUILD_PARSERS)
174
- #TODO: Change this to configure_protobuf_internal(${PROTOBUF_INTERNAL_VERSION}) once onnx-tensorrts build system is fixed
175
- configure_protobuf(${PROTOBUF_VERSION} )
176
- endif ()
177
- ########################################### DEPENDENCIES FOR BUILDING IN NVIDIA's TREE ############################################
178
- else ()
179
- ########################################### DEPENDENCIES FOR BUILDING OUTSIDE OF NVIDIA ############################################
180
- if (NOT CUB_ROOT_DIR)
181
- set (CUB_ROOT_DIR ${CMAKE_CURRENT_SOURCE_DIR} /third_party/cub CACHE STRING "directory of CUB installation" )
182
- endif ()
183
-
184
- ## find_package(CUDA) is broken for cross-compilation. Enable CUDA language instead.
185
- if (NOT DEFINED CMAKE_TOOLCHAIN_FILE)
186
- find_package (CUDA ${CUDA_VERSION} REQUIRED)
187
- endif ()
188
-
189
- include_directories (
190
- ${CUDA_INCLUDE_DIRS}
191
- ${CUDNN_ROOT_DIR} /include
192
- )
193
- find_library (CUDNN_LIB cudnn HINTS
194
- ${CUDA_TOOLKIT_ROOT_DIR} ${CUDNN_ROOT_DIR} PATH_SUFFIXES lib64 lib)
195
- find_library (CUBLAS_LIB cublas HINTS
196
- ${CUDA_TOOLKIT_ROOT_DIR} PATH_SUFFIXES lib64 lib lib/stubs)
197
- # CUBLASLT libraries are only available in CUDA versions > 10. Check for CUDA version here and
198
- # remove dependency on the libarary and unset BERT_GENCODES.
199
- if (CUDA_VERSION VERSION_LESS_EQUAL 10.0)
200
- message (WARNING "Detected CUDA version is <= 10.0! Removing BERT plugins from compilation list." )
201
- unset (BERT_GENCODES)
202
- else ()
203
- find_library (CUBLASLT_LIB cublasLt HINTS
204
- ${CUDA_TOOLKIT_ROOT_DIR} PATH_SUFFIXES lib64 lib lib/stubs)
205
- endif ()
206
- if (BUILD_PARSERS)
207
- configure_protobuf(${PROTOBUF_VERSION} )
208
- endif ()
209
- ########################################### DEPENDENCIES FOR BUILDING OUTSIDE OF NVIDIA ############################################
210
- endif ()
211
-
212
- find_library_create_target(nvinfer nvinfer SHARED ${TRT_LIB_DIR} )
213
-
214
- if (NOT (NVINTERNAL OR NVPARTNER))
215
- find_library_create_target(nvuffparser nvparsers SHARED ${TRT_LIB_DIR} )
216
- endif ()
217
-
218
- find_library (CUDART_LIB cudart HINTS ${CUDA_TOOLKIT_ROOT_DIR} PATH_SUFFIXES lib lib64)
219
- find_library (RT_LIB rt)
220
-
221
- set (CUDA_LIBRARIES ${CUDART_LIB} )
222
170
############################################################################################
223
171
# TensorRT
224
172
225
173
if (BUILD_PLUGINS)
226
- add_subdirectory (plugin${NVINTERNAL_SUFFIX} )
174
+ add_subdirectory (plugin)
227
175
else ()
228
- find_library_create_target(nvinfer_plugin nvinfer_plugin SHARED ${TRT_BIN_DIR } ${TRT_LIB_DIR} )
176
+ find_library_create_target(nvinfer_plugin nvinfer_plugin SHARED ${TRT_OUT_DIR } ${TRT_LIB_DIR} )
229
177
endif ()
230
178
231
179
if (BUILD_PARSERS)
232
- add_subdirectory (parsers${NVINTERNAL_SUFFIX} )
180
+ add_subdirectory (parsers)
233
181
else ()
234
- if (NVPARTNER OR NVINTERNAL)
235
- find_library_create_target(nvuffparser nvparsers SHARED ${TRT_BIN_DIR} ${TRT_LIB_DIR} )
236
- endif ()
237
-
238
- find_library_create_target(nvcaffeparser nvparsers SHARED ${TRT_BIN_DIR} ${TRT_LIB_DIR} )
239
- find_library_create_target(nvonnxparser nvonnxparser SHARED ${TRT_BIN_DIR} ${TRT_LIB_DIR} )
182
+ find_library_create_target(nvcaffeparser nvparsers SHARED ${TRT_OUT_DIR} ${TRT_LIB_DIR} )
183
+ find_library_create_target(nvonnxparser nvonnxparser SHARED ${TRT_OUT_DIR} ${TRT_LIB_DIR} )
240
184
endif ()
241
185
242
186
if (BUILD_SAMPLES)
243
- add_subdirectory (samples${NVINTERNAL_SUFFIX} )
187
+ add_subdirectory (samples)
244
188
endif ()
245
189
0 commit comments