From af389593be91c70b498fba1e4976f8170fcb4328 Mon Sep 17 00:00:00 2001
From: stevenlix
Date: Fri, 22 Mar 2019 14:46:57 -0700
Subject: [PATCH] Add Windows CI pipeline for TensorRT (#687)
* Update win-gpu-tensorrt-ci-pipeline.yml
* Update win-gpu-tensorrt-ci-pipeline.yml
* Update symbols.txt
* Update CMakeLists.txt
* Update build.py
* Update win-gpu-tensorrt-ci-pipeline.yml
* Update win-gpu-tensorrt-ci-pipeline.yml
* Update win-gpu-tensorrt-ci-pipeline.yml
* Update tensorrt_execution_provider.cc
* Update CMakeLists.txt
* Update win-gpu-tensorrt-ci-pipeline.yml
---
cmake/CMakeLists.txt | 2 +-
.../core/providers/tensorrt/symbols.txt | 2 +-
.../tensorrt/tensorrt_execution_provider.cc | 10 +---------
tools/ci_build/build.py | 5 +++--
.../win-gpu-tensorrt-ci-pipeline.yml | 19 ++++++++++++++-----
5 files changed, 20 insertions(+), 18 deletions(-)
diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt
index 88d2a1c30c..a684f3909c 100644
--- a/cmake/CMakeLists.txt
+++ b/cmake/CMakeLists.txt
@@ -504,7 +504,7 @@ endif()
if (onnxruntime_USE_TENSORRT)
if (WIN32)
- set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /DELAYLOAD:nvinfer.dll /DELAYLOAD:nvinfer_plugin.dll")
+ set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /DELAYLOAD:nvinfer.dll")
endif()
endif()
diff --git a/onnxruntime/core/providers/tensorrt/symbols.txt b/onnxruntime/core/providers/tensorrt/symbols.txt
index 8c11231f1f..47950c476c 100755
--- a/onnxruntime/core/providers/tensorrt/symbols.txt
+++ b/onnxruntime/core/providers/tensorrt/symbols.txt
@@ -1 +1 @@
-OrtCreateTensorrtExecutionProviderFactory
+OrtSessionOptionsAppendExecutionProvider_Tensorrt
diff --git a/onnxruntime/core/providers/tensorrt/tensorrt_execution_provider.cc b/onnxruntime/core/providers/tensorrt/tensorrt_execution_provider.cc
index d6a421a54e..abaef5a644 100755
--- a/onnxruntime/core/providers/tensorrt/tensorrt_execution_provider.cc
+++ b/onnxruntime/core/providers/tensorrt/tensorrt_execution_provider.cc
@@ -71,7 +71,6 @@ TensorrtExecutionProvider::GetCapability(const onnxruntime::GraphViewer& graph,
auto trt_network = unique_pointer(trt_builder->createNetwork());
auto trt_parser = unique_pointer(nvonnxparser::createParser(*trt_network, trt_logger));
trt_parser->supportsModel(string_buf.data(), string_buf.size(), supported_nodes_vector);
- model_proto.release_graph();
// Find inputs, initializers and outputs for each supported subgraph
std::vector> result;
@@ -79,11 +78,7 @@ TensorrtExecutionProvider::GetCapability(const onnxruntime::GraphViewer& graph,
int counter = 0;
for (const auto& group : supported_nodes_vector) {
if (!group.empty()) {
- std::set node_set(group.begin(), group.end()); //slx
- //std::set node_set;
- //for (const auto& index : group) {
- // node_set.insert(node_index[index]);
- //}
+ std::set node_set(group.begin(), group.end());
std::unique_ptr sub_graph = std::make_unique();
// Find inputs and outputs of the subgraph
std::map fused_inputs, fused_outputs, fused_outputs_to_add;
@@ -95,9 +90,6 @@ TensorrtExecutionProvider::GetCapability(const onnxruntime::GraphViewer& graph,
supported_nodes_set.insert(index);
sub_graph->nodes.push_back(index);
const auto& node = graph.GetNode(index);
- //supported_nodes_set.insert(node_index[index]);
- //sub_graph->nodes.push_back(node_index[index]);
- //const auto& node = graph.GetNode(node_index[index]);
for (const auto& input : node->InputDefs()) {
const auto& it = fused_outputs.find(input);
diff --git a/tools/ci_build/build.py b/tools/ci_build/build.py
index 099716f479..bb03441ead 100755
--- a/tools/ci_build/build.py
+++ b/tools/ci_build/build.py
@@ -700,8 +700,9 @@ def main():
if is_windows() or not os.path.exists(onnx_test_data_dir):
onnx_test_data_dir = os.path.join(source_dir, "cmake", "external", "onnx", "onnx", "backend", "test", "data")
if args.use_tensorrt:
- # Disable onnx unit tests for TensorRT because many tests are not supported yet
- run_onnx_tests(build_dir, configs, '', 'tensorrt', False, 1)
+ # Disable some onnx unit tests that TensorRT parser doesn't supported yet
+ onnx_test_data_dir = os.path.join(source_dir, "cmake", "external", "onnx", "onnx", "backend", "test", "data", "simple")
+ run_onnx_tests(build_dir, configs, onnx_test_data_dir, 'tensorrt', False, 1)
elif args.use_cuda:
run_onnx_tests(build_dir, configs, onnx_test_data_dir, 'cuda', False, 2)
elif args.x86 or platform.system() == 'Darwin':
diff --git a/tools/ci_build/github/azure-pipelines/win-gpu-tensorrt-ci-pipeline.yml b/tools/ci_build/github/azure-pipelines/win-gpu-tensorrt-ci-pipeline.yml
index babd6f22fc..986e9ca7df 100644
--- a/tools/ci_build/github/azure-pipelines/win-gpu-tensorrt-ci-pipeline.yml
+++ b/tools/ci_build/github/azure-pipelines/win-gpu-tensorrt-ci-pipeline.yml
@@ -4,8 +4,12 @@ jobs:
variables:
buildDirectory: '$(Build.BinariesDirectory)'
CUDA_VERSION: '10.0'
+ # There are some tests in 20190130.zip that TensorRT can't run. Instead here use 20181210 opset8 for TensorRT test.
+ TestDataUrl: https://onnxruntimetestdata.blob.core.windows.net/models/20181210.zip
+ TestDataChecksum: a966def7447f4ff04f5665bca235b3f3
+
steps:
- - template: templates/set-test-data-variables-step.yml
+ # - template: templates/set-test-data-variables-step.yml
- task: NuGetCommand@2
displayName: 'NuGet restore'
inputs:
@@ -58,7 +62,7 @@ jobs:
displayName: 'Download test data and generate cmake config'
inputs:
filename: '$(Build.BinariesDirectory)\packages\python\python.exe'
- arguments: '$(Build.SourcesDirectory)\tools\ci_build\build.py --config Debug Release --build_dir $(Build.BinariesDirectory) --skip_submodule_sync --cmake_path $(Build.BinariesDirectory)\cmake\bin\cmake.exe --ctest_path $(Build.BinariesDirectory)\cmake\bin\ctest.exe --enable_pybind --use_openmp --use_mkldnn --use_mkldnn --build_shared_lib --enable_onnx_tests --use_cuda --cuda_home="C:\local\cuda_10.0.130_win10" --cudnn_home="C:\local\cudnn-10.0-windows10-x64-v7.3.1.20\cuda" --use_full_protobuf --use_tensorrt --tensorrt_home="C:\local\TensorRT-5.0.4.3" --test_data_url $(TestDataUrl) --test_data_checksum $(TestDataChecksum) --update --msvc_toolset=14.11'
+ arguments: '$(Build.SourcesDirectory)\tools\ci_build\build.py --config Debug Release --build_dir $(Build.BinariesDirectory) --cmake_path $(Build.BinariesDirectory)\cmake\bin\cmake.exe --ctest_path $(Build.BinariesDirectory)\cmake\bin\ctest.exe --enable_pybind --use_openmp --use_mkldnn --use_mkldnn --build_shared_lib --enable_onnx_tests --cuda_home="C:\local\cuda_10.0.130_win10" --cudnn_home="C:\local\cudnn-10.0-windows10-x64-v7.3.1.20\cuda" --use_full_protobuf --use_tensorrt --tensorrt_home="C:\local\TensorRT-5.0.4.3" --test_data_url $(TestDataUrl) --test_data_checksum $(TestDataChecksum) --update --msvc_toolset=14.11'
workingDirectory: "$(Build.BinariesDirectory)"
- task: VSBuild@1
@@ -75,7 +79,7 @@ jobs:
displayName: 'Test Debug'
inputs:
filename: '$(Build.BinariesDirectory)\packages\python\python.exe'
- arguments: '$(Build.SourcesDirectory)\tools\ci_build\build.py --config Debug --build_dir $(Build.BinariesDirectory) --skip_submodule_sync --cmake_path $(Build.BinariesDirectory)\cmake\bin\cmake.exe --ctest_path $(Build.BinariesDirectory)\cmake\bin\ctest.exe --enable_pybind --use_openmp --use_mkldnn --use_mkldnn --build_shared_lib --enable_onnx_tests --use_cuda --cuda_home="C:\local\cuda_10.0.130_win10" --cudnn_home="C:\local\cudnn-10.0-windows10-x64-v7.3.1.20\cuda" --use_full_protobuf --use_tensorrt --tensorrt_home="C:\local\TensorRT-5.0.4.3" --test_data_url $(TestDataUrl) --test_data_checksum $(TestDataChecksum) --test'
+ arguments: '$(Build.SourcesDirectory)\tools\ci_build\build.py --config Debug --build_dir $(Build.BinariesDirectory) --cmake_path $(Build.BinariesDirectory)\cmake\bin\cmake.exe --ctest_path $(Build.BinariesDirectory)\cmake\bin\ctest.exe --enable_pybind --use_openmp --use_mkldnn --use_mkldnn --build_shared_lib --enable_onnx_tests --cuda_home="C:\local\cuda_10.0.130_win10" --cudnn_home="C:\local\cudnn-10.0-windows10-x64-v7.3.1.20\cuda" --use_full_protobuf --use_tensorrt --tensorrt_home="C:\local\TensorRT-5.0.4.3" --test_data_url $(TestDataUrl) --test_data_checksum $(TestDataChecksum) --test'
workingFolder: '$(Build.BinariesDirectory)'
- task: VSBuild@1
displayName: 'Build C# Debug'
@@ -111,7 +115,7 @@ jobs:
displayName: 'Test Release'
inputs:
filename: '$(Build.BinariesDirectory)\packages\python\python.exe'
- arguments: '$(Build.SourcesDirectory)\tools\ci_build\build.py --config Release --build_dir $(Build.BinariesDirectory) --skip_submodule_sync --cmake_path $(Build.BinariesDirectory)\cmake\bin\cmake.exe --ctest_path $(Build.BinariesDirectory)\cmake\bin\ctest.exe --enable_pybind --use_openmp --use_mkldnn --build_shared_lib --enable_onnx_tests --use_cuda --cuda_home="C:\local\cuda_10.0.130_win10" --cudnn_home="C:\local\cudnn-10.0-windows10-x64-v7.3.1.20\cuda" --use_full_protobuf --use_tensorrt --tensorrt_home="C:\local\TensorRT-5.0.4.3" --test_data_url $(TestDataUrl) --test_data_checksum $(TestDataChecksum) --test'
+ arguments: '$(Build.SourcesDirectory)\tools\ci_build\build.py --config Release --build_dir $(Build.BinariesDirectory) --cmake_path $(Build.BinariesDirectory)\cmake\bin\cmake.exe --ctest_path $(Build.BinariesDirectory)\cmake\bin\ctest.exe --enable_pybind --use_openmp --use_mkldnn --build_shared_lib --enable_onnx_tests --cuda_home="C:\local\cuda_10.0.130_win10" --cudnn_home="C:\local\cudnn-10.0-windows10-x64-v7.3.1.20\cuda" --use_full_protobuf --use_tensorrt --tensorrt_home="C:\local\TensorRT-5.0.4.3" --test_data_url $(TestDataUrl) --test_data_checksum $(TestDataChecksum) --test'
workingFolder: "$(Build.BinariesDirectory)"
- task: VSBuild@1
@@ -139,5 +143,10 @@ jobs:
testResultsFiles: '**\*.results.xml'
searchFolder: '$(Build.BinariesDirectory)'
testRunTitle: 'Unit Test Run'
- condition: succeededOrFailed()
+ condition: succeededOrFailed()
+
+ - task: ms.vss-governance-buildtask.governance-build-task-component-detection.ComponentGovernanceComponentDetection@0
+ displayName: 'Component Detection'
+ condition: and(succeeded(), in(variables['Build.Reason'], 'IndividualCI', 'BatchedCI'))
+
- template: templates/clean-agent-build-directory-step.yml