diff --git a/onnxruntime/core/providers/tensorrt/tensorrt_execution_provider.cc b/onnxruntime/core/providers/tensorrt/tensorrt_execution_provider.cc index 03a8f6ac94..c8d426f1ec 100644 --- a/onnxruntime/core/providers/tensorrt/tensorrt_execution_provider.cc +++ b/onnxruntime/core/providers/tensorrt/tensorrt_execution_provider.cc @@ -1737,6 +1737,16 @@ common::Status TensorrtExecutionProvider::Compile(const std::vector(input_tensor); + if (input_tensor_ptr == nullptr) { + scratch_buffers.push_back(IAllocator::MakeUniquePtr(alloc, sizeof(uint8_t))); + buffers[binding_index] = scratch_buffers.back().get(); + } else { + buffers[binding_index] = const_cast(input_tensor_ptr); + } + break; + } case ONNX_TENSOR_ELEMENT_DATA_TYPE_INT32: { auto input_tensor_ptr = ort.GetTensorData(input_tensor); if (input_tensor_ptr == nullptr) { @@ -1870,6 +1880,16 @@ common::Status TensorrtExecutionProvider::Compile(const std::vector(output_tensor[i]); + if (output_tensor_ptr == nullptr) { + scratch_buffers.push_back(IAllocator::MakeUniquePtr(alloc, sizeof(uint8_t))); + buffers[binding_index] = scratch_buffers.back().get(); + } else { + buffers[binding_index] = output_tensor_ptr; + } + break; + } case ONNX_TENSOR_ELEMENT_DATA_TYPE_INT32: { auto output_tensor_ptr = ort.GetTensorMutableData(output_tensor[i]); if (output_tensor_ptr == nullptr) {