From 890ad1be4eff1a805fe07667f4044b1d38a07b39 Mon Sep 17 00:00:00 2001 From: Anthony Barbier Date: Wed, 22 Aug 2018 13:44:36 +0100 Subject: COMPMID-1246: Fix bug in handling backends that can't be loaded in the Graph API Change-Id: Iefd175af2f472179d86df5358a1527a79c5666ed Reviewed-on: https://eu-gerrit-1.euhpc.arm.com/145182 Reviewed-by: Georgios Pinitas Tested-by: Jenkins --- src/graph/detail/ExecutionHelpers.cpp | 25 +++++++++++-------------- 1 file changed, 11 insertions(+), 14 deletions(-) (limited to 'src/graph/detail') diff --git a/src/graph/detail/ExecutionHelpers.cpp b/src/graph/detail/ExecutionHelpers.cpp index 6157b7fecf..f479963280 100644 --- a/src/graph/detail/ExecutionHelpers.cpp +++ b/src/graph/detail/ExecutionHelpers.cpp @@ -44,10 +44,9 @@ void validate_all_nodes(Graph &g) { if(node != nullptr) { - Target assigned_target = node->assigned_target(); - auto backend = backends::BackendRegistry::get().find_backend(assigned_target); - ARM_COMPUTE_ERROR_ON_MSG(!backend, "Requested backend doesn't exist!"); - Status status = backend->validate_node(*node); + Target assigned_target = node->assigned_target(); + backends::IDeviceBackend &backend = backends::BackendRegistry::get().get_backend(assigned_target); + Status status = backend.validate_node(*node); ARM_COMPUTE_ERROR_ON_MSG(!bool(status), status.error_description().c_str()); } } @@ -61,11 +60,10 @@ void configure_all_tensors(Graph &g) { if(tensor && tensor->handle() == nullptr) { - Target target = tensor->desc().target; - auto backend = backends::BackendRegistry::get().find_backend(target); - ARM_COMPUTE_ERROR_ON_MSG(!backend, "Requested backend doesn't exist!"); - auto handle = backend->create_tensor(*tensor); - ARM_COMPUTE_ERROR_ON_MSG(!backend, "Couldn't create backend handle!"); + Target target = tensor->desc().target; + backends::IDeviceBackend &backend = backends::BackendRegistry::get().get_backend(target); + std::unique_ptr handle = backend.create_tensor(*tensor); + ARM_COMPUTE_ERROR_ON_MSG(!handle, "Couldn't create backend handle!"); tensor->set_handle(std::move(handle)); } } @@ -143,10 +141,9 @@ ExecutionWorkload configure_all_nodes(Graph &g, GraphContext &ctx, const std::ve auto node = g.node(node_id); if(node != nullptr) { - Target assigned_target = node->assigned_target(); - auto backend = backends::BackendRegistry::get().find_backend(assigned_target); - ARM_COMPUTE_ERROR_ON_MSG(!backend, "Requested backend doesn't exist!"); - auto func = backend->configure_node(*node, ctx); + Target assigned_target = node->assigned_target(); + backends::IDeviceBackend &backend = backends::BackendRegistry::get().get_backend(assigned_target); + std::unique_ptr func = backend.configure_node(*node, ctx); if(func != nullptr) { ExecutionTask task; @@ -264,4 +261,4 @@ bool call_all_output_node_accessors(ExecutionWorkload &workload) } } // namespace detail } // namespace graph -} // namespace arm_compute \ No newline at end of file +} // namespace arm_compute -- cgit v1.2.1