From 4b3ac86d1f36b7571baf4d9930c0a089e62799a0 Mon Sep 17 00:00:00 2001 From: Yuanle Liu Date: Fri, 21 Jul 2023 17:43:50 +0800 Subject: [PATCH] [Inference] save_optimized_model_pass support gpu (#55551) * fix cudnn 8.7+ bug on cudnnConvolutionBiasActivationForward * save_optimized_model_pass support gpu --- .../inference/analysis/passes/save_optimized_model_pass.cc | 7 ++++++- paddle/fluid/inference/api/analysis_predictor.cc | 1 + paddle/fluid/inference/api/paddle_pass_builder.h | 2 -- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/paddle/fluid/inference/analysis/passes/save_optimized_model_pass.cc b/paddle/fluid/inference/analysis/passes/save_optimized_model_pass.cc index a2e96859194..2cfba89a91c 100644 --- a/paddle/fluid/inference/analysis/passes/save_optimized_model_pass.cc +++ b/paddle/fluid/inference/analysis/passes/save_optimized_model_pass.cc @@ -55,6 +55,9 @@ void SaveOptimizedModelPass::SaveOptimizedModel(Argument* argument) { auto* graph = argument->main_graph_ptr(); framework::ProgramDesc optimized_program_desc; + // NOTE(liuyuanle): If the following line of code is not added, an error + // [SegmentFault] may occur! + optimized_program_desc.CopyFrom(*argument->main_program().Proto()); framework::ir::GraphToProgram(*graph, &optimized_program_desc); auto IsPersistable = [](const framework::VarDesc* var) { @@ -130,7 +133,9 @@ void SaveOptimizedModelPass::SaveOptimizedModel(Argument* argument) { } void SaveOptimizedModelPass::RunImpl(Argument* argument) { - if (argument->use_xpu_valid()) { + // TODO(inference): Support trt. + if (argument->use_xpu() || + (argument->use_gpu() && !argument->use_tensorrt())) { SaveOptimizedModel(argument); } } diff --git a/paddle/fluid/inference/api/analysis_predictor.cc b/paddle/fluid/inference/api/analysis_predictor.cc index d9899e27e24..44bd09e86ad 100644 --- a/paddle/fluid/inference/api/analysis_predictor.cc +++ b/paddle/fluid/inference/api/analysis_predictor.cc @@ -1379,6 +1379,7 @@ void AnalysisPredictor::PrepareArgument() { argument_->SetOptimInputShape(config_.optim_input_shape_); argument_->SetTensorRtTunedDynamicShape( config_.tuned_tensorrt_dynamic_shape()); + argument_->SetUseTensorRT(false); if (config_.use_gpu() && config_.tensorrt_engine_enabled()) { LOG(INFO) << "TensorRT subgraph engine is enabled"; argument_->SetUseTensorRT(true); diff --git a/paddle/fluid/inference/api/paddle_pass_builder.h b/paddle/fluid/inference/api/paddle_pass_builder.h index 4ebd0dd5331..cc8403be534 100644 --- a/paddle/fluid/inference/api/paddle_pass_builder.h +++ b/paddle/fluid/inference/api/paddle_pass_builder.h @@ -181,8 +181,6 @@ class PD_INFER_DECL PassStrategy : public PaddlePassBuilder { bool use_ipu_{false}; bool use_mkldnn_{false}; bool use_custom_device_{false}; - - bool use_gpu_low_precision_{false}; /// \endcond }; -- GitLab