diff options
Diffstat (limited to 'arm_compute/graph/backends/FunctionHelpers.h')
-rw-r--r-- | arm_compute/graph/backends/FunctionHelpers.h | 32 |
1 files changed, 24 insertions, 8 deletions
diff --git a/arm_compute/graph/backends/FunctionHelpers.h b/arm_compute/graph/backends/FunctionHelpers.h index ee257e3abf..02bfe9dc22 100644 --- a/arm_compute/graph/backends/FunctionHelpers.h +++ b/arm_compute/graph/backends/FunctionHelpers.h @@ -174,11 +174,12 @@ std::unique_ptr<IFunction> create_batch_normalization_layer(BatchNormalizationLa * @tparam TargetInfo Target-specific information * * @param[in] node Node to create the backend function for + * @param[in] ctx Graph context * * @return Backend batch normalization layer function */ template <typename FusedLayerTypes, typename TargetInfo> -std::unique_ptr<IFunction> create_fused_convolution_batch_normalization_layer(FusedConvolutionBatchNormalizationNode &node) +std::unique_ptr<IFunction> create_fused_convolution_batch_normalization_layer(FusedConvolutionBatchNormalizationNode &node, GraphContext &ctx) { validate_node<TargetInfo>(node, 7 /* expected inputs */, 1 /* expected outputs */); @@ -199,9 +200,16 @@ std::unique_ptr<IFunction> create_fused_convolution_batch_normalization_layer(Fu const ActivationLayerInfo fused_act = node.fused_activation(); const float epsilon = node.epsilon(); + // Create and configure function (we assume that functions have been validated before creation) + std::shared_ptr<IMemoryManager> mm = get_memory_manager(ctx, TargetInfo::TargetType); + std::unique_ptr<IFunction> func; + std::string func_name; + + using FType = FusedConvolutionBatchNormalizationFunction<TargetInfo, FusedLayerTypes>; + // Create and configure function - auto func = support::cpp14::make_unique<FusedConvolutionBatchNormalizationFunction<TargetInfo, FusedLayerTypes>>(); - func->configure(input, weights, biases, output, mean, var, beta, gamma, epsilon, conv_info, num_groups, fast_math, fused_act); + std::tie(func, func_name) = create_named_memory_managed_function<FType>( + std::string("FusedConvolutionBatchNormalizationLayer"), mm, input, weights, biases, output, mean, var, beta, gamma, epsilon, conv_info, num_groups, fast_math, fused_act); // Log info ARM_COMPUTE_LOG_GRAPH_INFO("Instantiated " @@ -214,7 +222,7 @@ std::unique_ptr<IFunction> create_fused_convolution_batch_normalization_layer(Fu << " Output shape: " << output->info()->tensor_shape() << (fused_act.enabled() ? " " + to_string(fused_act.activation()) : "") << std::endl); - return std::move(func); + return func; } /** Create a backend fused depthwise convolution batch normalization layer function @@ -223,11 +231,12 @@ std::unique_ptr<IFunction> create_fused_convolution_batch_normalization_layer(Fu * @tparam TargetInfo Target-specific information * * @param[in] node Node to create the backend function for + * @param[in] ctx Graph context * * @return Backend fused depthwise convolution batch normalization layer function */ template <typename FusedLayerTypes, typename TargetInfo> -std::unique_ptr<IFunction> create_fused_depthwise_convolution_batch_normalization_layer(FusedDepthwiseConvolutionBatchNormalizationNode &node) +std::unique_ptr<IFunction> create_fused_depthwise_convolution_batch_normalization_layer(FusedDepthwiseConvolutionBatchNormalizationNode &node, GraphContext &ctx) { validate_node<TargetInfo>(node, 7 /* expected inputs */, 1 /* expected outputs */); @@ -247,9 +256,16 @@ std::unique_ptr<IFunction> create_fused_depthwise_convolution_batch_normalizatio const ActivationLayerInfo fused_act = node.fused_activation(); const float epsilon = node.epsilon(); + // Create and configure function (we assume that functions have been validated before creation) + std::shared_ptr<IMemoryManager> mm = get_memory_manager(ctx, TargetInfo::TargetType); + std::unique_ptr<IFunction> func; + std::string func_name; + + using FType = FusedDepthwiseConvolutionBatchNormalizationFunction<TargetInfo, FusedLayerTypes>; + // Create and configure function - auto func = support::cpp14::make_unique<FusedDepthwiseConvolutionBatchNormalizationFunction<TargetInfo, FusedLayerTypes>>(); - func->configure(input, weights, biases, output, mean, var, beta, gamma, epsilon, conv_info, depth_multiplier, fused_act); + std::tie(func, func_name) = create_named_memory_managed_function<FType>( + std::string("FusedDepthwiseConvolutionBatchNormalizationLayer"), mm, input, weights, biases, output, mean, var, beta, gamma, epsilon, conv_info, depth_multiplier, fused_act); // Log info ARM_COMPUTE_LOG_GRAPH_INFO("Instantiated " @@ -262,7 +278,7 @@ std::unique_ptr<IFunction> create_fused_depthwise_convolution_batch_normalizatio << " Output shape: " << output->info()->tensor_shape() << (fused_act.enabled() ? " " + to_string(fused_act.activation()) : "") << std::endl); - return std::move(func); + return func; } /** Create a backend bounding box transform layer function |