diff --git a/tensorflow/lite/delegates/gpu/cl/arguments.cc b/tensorflow/lite/delegates/gpu/cl/arguments.cc index b7e6b08616e..526a09f18f9 100644 --- a/tensorflow/lite/delegates/gpu/cl/arguments.cc +++ b/tensorflow/lite/delegates/gpu/cl/arguments.cc @@ -843,11 +843,16 @@ absl::Status Arguments::AllocateObjects(CLContext* context) { for (auto& t : objects_) { RETURN_IF_ERROR( t.second.descriptor->CreateGPUObject(context, &t.second.obj_ptr)); - t.second.descriptor->Release(); } return absl::OkStatus(); } +void Arguments::ReleaseCPURepresentation() { + for (auto& t : objects_) { + t.second.descriptor->Release(); + } +} + absl::Status Arguments::AddObjectArgs() { for (auto& t : objects_) { AddGPUResources(t.first, t.second.descriptor->GetGPUResources()); diff --git a/tensorflow/lite/delegates/gpu/cl/arguments.h b/tensorflow/lite/delegates/gpu/cl/arguments.h index 4636a06db6f..7d76b24a47a 100644 --- a/tensorflow/lite/delegates/gpu/cl/arguments.h +++ b/tensorflow/lite/delegates/gpu/cl/arguments.h @@ -55,6 +55,7 @@ class Arguments { absl::Status Merge(Arguments&& args, const std::string& postfix); absl::Status AllocateObjects(CLContext* context); + void ReleaseCPURepresentation(); absl::Status TransformToCLCode( const DeviceInfo& device_info, const std::map& linkables, std::string* code); diff --git a/tensorflow/lite/delegates/gpu/cl/inference_context.cc b/tensorflow/lite/delegates/gpu/cl/inference_context.cc index 9bea02c8245..b834bbfffef 100644 --- a/tensorflow/lite/delegates/gpu/cl/inference_context.cc +++ b/tensorflow/lite/delegates/gpu/cl/inference_context.cc @@ -182,6 +182,10 @@ absl::Status InferenceContext::InitFromGraph( RETURN_IF_ERROR(Compile(creation_context)); RETURN_IF_ERROR(UpdateParams()); + for (auto& node : nodes_) { + node.operation->args_.ReleaseCPURepresentation(); + } + TuningParameters tuning_parameters; tuning_parameters.queue = env->profiling_queue(); tuning_parameters.info = &env->device().info_; diff --git a/tensorflow/lite/delegates/gpu/cl/kernels/cl_test.cc b/tensorflow/lite/delegates/gpu/cl/kernels/cl_test.cc index 0112241117e..efe97f9931b 100644 --- a/tensorflow/lite/delegates/gpu/cl/kernels/cl_test.cc +++ b/tensorflow/lite/delegates/gpu/cl/kernels/cl_test.cc @@ -55,6 +55,7 @@ absl::Status ExecuteGPUOperation(const std::vector& src_cpu, RETURN_IF_ERROR(operation->Compile(creation_context)); RETURN_IF_ERROR(operation->UpdateParams()); + operation->args_.ReleaseCPURepresentation(); RETURN_IF_ERROR(operation->AddToQueue(creation_context.queue)); RETURN_IF_ERROR(creation_context.queue->WaitForCompletion());