From f12e9de11124915f804432d3586efba32c13afce Mon Sep 17 00:00:00 2001 From: George Wu Date: Thu, 13 Aug 2020 22:24:44 +0000 Subject: [PATCH] build fixes for https://github.com/microsoft/onnxruntime/pull/4721 (#4784) * test * test * add missing CUDA header include * debug * fix * fix python package for dnnl and tensorrt. * fix * fix windows build. * revert * target_link_directories for tensorrt shared lib. --- cmake/onnxruntime_framework.cmake | 7 ++++++- cmake/onnxruntime_providers.cmake | 8 ++++++-- cmake/onnxruntime_python.cmake | 10 ++++++++++ setup.py | 2 +- 4 files changed, 23 insertions(+), 4 deletions(-) diff --git a/cmake/onnxruntime_framework.cmake b/cmake/onnxruntime_framework.cmake index 4da6450c00..eebad5791a 100644 --- a/cmake/onnxruntime_framework.cmake +++ b/cmake/onnxruntime_framework.cmake @@ -13,7 +13,12 @@ add_library(onnxruntime_framework ${onnxruntime_framework_srcs}) if(onnxruntime_ENABLE_INSTRUMENT) target_compile_definitions(onnxruntime_framework PRIVATE ONNXRUNTIME_ENABLE_INSTRUMENT) endif() -target_include_directories(onnxruntime_framework PRIVATE ${ONNXRUNTIME_ROOT} ${onnxruntime_CUDNN_HOME}/include PUBLIC ${CMAKE_CURRENT_BINARY_DIR}) +if(onnxruntime_USE_TENSORRT) +# TODO: for now, core framework depends on CUDA. It should be moved to TensorRT EP +target_include_directories(onnxruntime_framework PRIVATE ${ONNXRUNTIME_ROOT} ${onnxruntime_CUDNN_HOME}/include PUBLIC ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CUDA_TOOLKIT_INCLUDE_DIRECTORIES}) +else() +target_include_directories(onnxruntime_framework PRIVATE ${ONNXRUNTIME_ROOT} PUBLIC ${CMAKE_CURRENT_BINARY_DIR}) +endif() onnxruntime_add_include_to_target(onnxruntime_framework onnxruntime_common onnx onnx_proto protobuf::libprotobuf) set_target_properties(onnxruntime_framework PROPERTIES FOLDER "ONNXRuntime") # need onnx to build to create headers that this project includes diff --git a/cmake/onnxruntime_providers.cmake b/cmake/onnxruntime_providers.cmake index e288a58b57..7ff17f4611 100644 --- a/cmake/onnxruntime_providers.cmake +++ b/cmake/onnxruntime_providers.cmake @@ -364,7 +364,6 @@ if (onnxruntime_USE_TENSORRT) set(CMAKE_CUDA_FLAGS "${CMAKE_CUDA_FLAGS} -include algorithm") set(PROTOBUF_LIBRARY libprotobuf) set(DISABLED_WARNINGS_FOR_TRT /wd4267 /wd4244 /wd4996 /wd4456) - list(APPEND CUDA_LIBRARIES cudart.lib cudadevrt.lib) endif() if ( CMAKE_COMPILER_IS_GNUCC ) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-unused-parameter -Wno-missing-field-initializers") @@ -401,9 +400,14 @@ if (onnxruntime_USE_TENSORRT) source_group(TREE ${ONNXRUNTIME_ROOT}/core FILES ${onnxruntime_providers_tensorrt_cc_srcs}) add_library(onnxruntime_providers_tensorrt SHARED ${onnxruntime_providers_tensorrt_cc_srcs}) - target_link_libraries(onnxruntime_providers_tensorrt PRIVATE ${onnxparser_link_libs} ${trt_link_libs} cudart onnxruntime_providers_shared protobuf::libprotobuf) onnxruntime_add_include_to_target(onnxruntime_providers_tensorrt onnxruntime_common onnx ) add_dependencies(onnxruntime_providers_tensorrt onnxruntime_providers_shared ${onnxruntime_EXTERNAL_DEPENDENCIES}) + if(WIN32) + target_link_directories(onnxruntime_providers_tensorrt PRIVATE ${onnxruntime_CUDA_HOME}/x64/lib64) + else() + target_link_directories(onnxruntime_providers_tensorrt PRIVATE ${onnxruntime_CUDA_HOME}/lib64) + endif() + target_link_libraries(onnxruntime_providers_tensorrt PRIVATE ${onnxparser_link_libs} ${trt_link_libs} cudart onnxruntime_providers_shared protobuf::libprotobuf) target_include_directories(onnxruntime_providers_tensorrt PRIVATE ${ONNXRUNTIME_ROOT} ${onnxruntime_CUDNN_HOME}/include ${eigen_INCLUDE_DIRS} PUBLIC ${CMAKE_CUDA_TOOLKIT_INCLUDE_DIRECTORIES}) install(DIRECTORY ${PROJECT_SOURCE_DIR}/../include/onnxruntime/core/providers/tensorrt DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/onnxruntime/core/providers) set_target_properties(onnxruntime_providers_tensorrt PROPERTIES LINKER_LANGUAGE CXX) diff --git a/cmake/onnxruntime_python.cmake b/cmake/onnxruntime_python.cmake index 7ea318f9d9..d30c1f0d62 100644 --- a/cmake/onnxruntime_python.cmake +++ b/cmake/onnxruntime_python.cmake @@ -270,6 +270,16 @@ if (onnxruntime_USE_DNNL) ) endif() +if (onnxruntime_USE_TENSORRT) + add_custom_command( + TARGET onnxruntime_pybind11_state POST_BUILD + COMMAND ${CMAKE_COMMAND} -E copy + ${DNNL_DLL_PATH} $ + $ + $/onnxruntime/capi/ + ) +endif() + if (onnxruntime_USE_NGRAPH) add_custom_command( TARGET onnxruntime_pybind11_state POST_BUILD diff --git a/setup.py b/setup.py index 11dc205d8d..5fe14996da 100644 --- a/setup.py +++ b/setup.py @@ -183,7 +183,7 @@ elif platform.system() == "Darwin": else: libs = ['onnxruntime_pybind11_state.pyd', 'dnnl.dll', 'mklml.dll', 'libiomp5md.dll'] # DNNL & TensorRT EPs are built as shared libs - libs.extend(['libonnxruntime_providers_shared.dll']) + libs.extend(['onnxruntime_providers_shared.dll']) libs.extend(['onnxruntime_providers_dnnl.dll']) libs.extend(['onnxruntime_providers_tensorrt.dll']) # nGraph Libs