aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPablo Tello <pablo.tello@arm.com>2018-01-23 10:03:27 +0000
committerAnthony Barbier <anthony.barbier@arm.com>2018-11-02 16:43:42 +0000
commit6c6e77afc0059e4c5a59d97215acccdedf473a7f (patch)
tree59b3c6d21de1c7ad64904175703647ba227df27d
parent64c95a0d7fccb114ce56c9890bbcaf2d7da65668 (diff)
downloadComputeLibrary-6c6e77afc0059e4c5a59d97215acccdedf473a7f.tar.gz
COMPMID-784: Doxygen fixes
Change-Id: I35f429fbf08dece7c759242c37e0a68b0851ce49 Reviewed-on: https://eu-gerrit-1.euhpc.arm.com/117231 Reviewed-by: Anthony Barbier <anthony.barbier@arm.com> Tested-by: Jenkins <bsgcomp@arm.com>
-rw-r--r--arm_compute/core/NEON/kernels/NEWinogradLayerKernel.h92
-rw-r--r--arm_compute/core/NEON/kernels/winograd/perf.h23
-rw-r--r--arm_compute/core/NEON/kernels/winograd/winograd_layer.hpp88
-rw-r--r--docs/Doxyfile3
-rw-r--r--src/core/CL/kernels/CLPermuteKernel.cpp3
-rw-r--r--src/core/CPP/kernels/CPPPermuteKernel.cpp12
-rw-r--r--src/core/NEON/kernels/NEWinogradLayerKernel.cpp2
7 files changed, 153 insertions, 70 deletions
diff --git a/arm_compute/core/NEON/kernels/NEWinogradLayerKernel.h b/arm_compute/core/NEON/kernels/NEWinogradLayerKernel.h
index 95261929ca..78ac56418f 100644
--- a/arm_compute/core/NEON/kernels/NEWinogradLayerKernel.h
+++ b/arm_compute/core/NEON/kernels/NEWinogradLayerKernel.h
@@ -36,21 +36,35 @@ class NEWinogradLayerKernel;
class Winograd3x3F32 final
{
public:
+ /** Create a new Winograd convolution layer.
+ *
+ * @param[in] n_batches Number of batches in the input and output tensors.
+ * @param[in] n_input_channels Number of feature maps in a batch of the input tensor.
+ * @param[in] n_input_rows Number of rows in a feature map of the input tensor.
+ * @param[in] n_input_cols Number of columns in a feature map of the input tensor.
+ * @param[in] n_output_channels Number of feature maps in the output tensor.
+ * @param[in] same_padding Use "SAME" padding, otherwise use "VALID".
+ * @param[in] weights Pointer to weight tensor in spatial domain. Must be ordered as "Height x Rows x Input Feature Maps x Output Feature Maps.
+ * @param[out] weights_storage Pointer to storage for weight tensor in the Winograd domain. Must be at least the size returned by `get_weight_storage_size
+ * @param[in] input Pointer to NHWC ordered input tensor, in the spatial domain.
+ * @param[out] winograd_input Pointer to working space for the input tensor in the Winograd domain. Must be at least the size returned by `get_input_storage_size`.
+ * @param[out] output Pointer to NHWC ordered output tensor, in the spatial domain.
+ * @param[out] winograd_output Pointer to working space for the output tensor in the Winograd domain. Must be at least the size returned by `get_output_storage_size`.
+ */
friend class NEWinogradLayerKernel;
Winograd3x3F32(
- const int n_batches, /** Number of batches in the input and output tensors. */
- const int n_input_channels, /** Number of feature maps in a batch of the input tensor. */
- const int n_input_rows, /** Number of rows in a feature map of the input tensor. */
- const int n_input_cols, /** Number of columns in a feature map of the input tensor. */
- const int n_output_channels, /** Number of feature maps in the output tensor. */
- const bool same_padding, /** Use "SAME" padding, otherwise use "VALID". */
- const float *const weights, /** Pointer to weight tensor in spatial domain. Must be ordered as "Height x Rows x Input Feature Maps x Output Feature Maps. */
- float *const weights_storage, /** Pointer to storage for weight tensor in the Winograd domain. Must be at least the size returned by `get_weight_storage_size`. */
- const float *const input, /** Pointer to NHWC ordered input tensor, in the spatial domain. */
- float *const winograd_input, /** Pointer to working space for the input tensor in the Winograd domain. Must be at least the size returned by `get_input_storage_size`. */
- float *const output, /** Pointer to NHWC ordered output tensor, in the spatial domain. */
- float *const winograd_output /** Pointer to working space for the output tensor in the Winograd domain. Must be at least the size returned by `get_output_storage_size`. */
- );
+ const int n_batches,
+ const int n_input_channels,
+ const int n_input_rows,
+ const int n_input_cols,
+ const int n_output_channels,
+ const bool same_padding,
+ const float *const weights,
+ float *const weights_storage,
+ const float *const input,
+ float *const winograd_input,
+ float *const output,
+ float *const winograd_output);
~Winograd3x3F32();
void transform_weights();
@@ -88,31 +102,47 @@ public:
// Inherited methods overridden:
void run(const Window &window, const ThreadInfo &info) override;
- /* Get the memory required to instantiate a new Winograd operator.
- */
- static size_t get_weight_storage_size(
- const int n_output_channels, /** Number of output feature maps. */
- const int n_input_channels /** Number of input feature maps. */
- );
+ /** Determine how much memory (in units of TIn) to allocate for the
+ * transformed weights.
+ *
+ * @param[in] n_output_channels Number of output feature maps.
+ * @param[in] n_input_channels Number of input feature maps.
+ */
+ static unsigned int get_weight_storage_size(
+ const int n_output_channels,
+ const int n_input_channels);
+ /** Determine how much memory (in units of TIn) to allocate for the
+ * transformed input.
+ *
+ * @param[in] n_batches Number of batches in the input tensor.
+ * @param[in] n_channels Number of feature maps in the input tensor.
+ * @param[in] n_rows Number of rows in each feature map.
+ * @param[in] n_cols Number of columns in each feature map.
+ * @param[in] same_padding Use "SAME" padding, otherwise use "VALID".
+ */
static unsigned int get_input_storage_size(
- const int n_batches, /** Number of batches in the input tensor. */
- const int n_channels, /** Number of feature maps in the input tensor. */
- const int n_rows, /** Number of rows in each feature map. */
- const int n_cols, /** Number of columns in each feature map. */
- const bool same_padding /** Use "SAME" padding, otherwise use "VALID". */
- );
+ const int n_batches,
+ const int n_channels,
+ const int n_rows,
+ const int n_cols,
+ const bool same_padding);
/** Determine how much memory (in units of TOut) to allocate for the
* (Winograd domain) output.
+ *
+ * @param[in] n_batches Number of batches in the output tensor.
+ * @param[in] n_rows Number of rows in each feature map of the input tensor.
+ * @param[in] n_cols Number of columns in each feature map of the input tensor.
+ * @param[in] n_output_channels Number of feature maps in the output tensor.
+ * @param[in] same_padding Use "SAME" padding, otherwise use "VALID".
*/
static unsigned int get_output_storage_size(
- const int n_batches, /** Number of batches in the output tensor. */
- const int n_rows, /** Number of rows in each feature map of the input tensor. */
- const int n_cols, /** Number of columns in each feature map of the input tensor. */
- const int n_output_channels, /** Number of feature maps in the output tensor. */
- const bool same_padding /** Use "SAME" padding, otherwise use "VALID". */
- );
+ const int n_batches,
+ const int n_rows,
+ const int n_cols,
+ const int n_output_channels,
+ const bool same_padding);
protected:
Winograd3x3F32 *_convolver;
diff --git a/arm_compute/core/NEON/kernels/winograd/perf.h b/arm_compute/core/NEON/kernels/winograd/perf.h
index 0cdf742a25..3c0d36646d 100644
--- a/arm_compute/core/NEON/kernels/winograd/perf.h
+++ b/arm_compute/core/NEON/kernels/winograd/perf.h
@@ -1,3 +1,26 @@
+/*
+ * Copyright (c) 2018 ARM Limited.
+ *
+ * SPDX-License-Identifier: MIT
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to
+ * deal in the Software without restriction, including without limitation the
+ * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+ * sell copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
#pragma once
/* Prototypes from perf.c */
diff --git a/arm_compute/core/NEON/kernels/winograd/winograd_layer.hpp b/arm_compute/core/NEON/kernels/winograd/winograd_layer.hpp
index a3b3db42dd..4559312df4 100644
--- a/arm_compute/core/NEON/kernels/winograd/winograd_layer.hpp
+++ b/arm_compute/core/NEON/kernels/winograd/winograd_layer.hpp
@@ -74,55 +74,87 @@ class WinogradConvolutionLayer
/** Determine how much memory (in units of TIn) to allocate for the
* transformed weights.
+ *
+ * @param[in] n_output_channels Number of output feature maps.
+ * @param[in] n_input_channels Number of input feature maps.
*/
static unsigned int get_weight_storage_size(
- const int n_output_channels, /** Number of output feature maps. */
- const int n_input_channels /** Number of input feature maps. */
+ const int n_output_channels,
+ const int n_input_channels
);
/** Determine how much memory (in units of TIn) to allocate for the
* transformed input.
+ *
+ * @param[in] n_batches Number of batches in the input tensor.
+ * @param[in] n_channels Number of feature maps in the input tensor.
+ * @param[in] n_rows Number of rows in each feature map.
+ * @param[in] n_cols Number of columns in each feature map.
+ * @param[in] same_padding Use "SAME" padding, otherwise use "VALID".
*/
static unsigned int get_input_storage_size(
- const int n_batches, /** Number of batches in the input tensor. */
- const int n_channels, /** Number of feature maps in the input tensor. */
- const int n_rows, /** Number of rows in each feature map. */
- const int n_cols, /** Number of columns in each feature map. */
- const bool same_padding /** Use "SAME" padding, otherwise use "VALID". */
+ const int n_batches,
+ const int n_channels,
+ const int n_rows,
+ const int n_cols,
+ const bool same_padding
);
/** Determine how much memory (in units of TOut) to allocate for the
* (Winograd domain) output.
+ *
+ * @param[in] n_batches Number of batches in the output tensor.
+ * @param[in] n_rows Number of rows in each feature map of the input tensor.
+ * @param[in] n_cols Number of columns in each feature map of the input tensor.
+ * @param[in] n_output_channels Number of feature maps in the output tensor.
+ * @param[in] same_padding Use "SAME" padding, otherwise use "VALID".
*/
static unsigned int get_output_storage_size(
- const int n_batches, /** Number of batches in the output tensor. */
- const int n_rows, /** Number of rows in each feature map of the input tensor. */
- const int n_cols, /** Number of columns in each feature map of the input tensor. */
- const int n_output_channels, /** Number of feature maps in the output tensor. */
- const bool same_padding /** Use "SAME" padding, otherwise use "VALID". */
+ const int n_batches,
+ const int n_rows,
+ const int n_cols,
+ const int n_output_channels,
+ const bool same_padding
);
- /** Get the shape (rows, cols) of a feature map of the output tensor. */
+ /** Get the shape (rows, cols) of a feature map of the output tensor.
+ *
+ * @param[in] n_input_rows Number of rows in the input feature map.
+ * @param[in] n_input_cols Number of columns in the input feature map.
+ * @param[in] same_padding Use "SAME" padding, otherwise use "VALID".
+ */
static std::pair<int, int> get_output_feature_map_shape(
- const int n_input_rows, /** Number of rows in the input feature map. */
- const int n_input_cols, /** Number of columns in the input feature map. */
- const bool same_padding /** Use "SAME" padding, otherwise use "VALID". */
+ const int n_input_rows,
+ const int n_input_cols,
+ const bool same_padding
);
/** Create a new Winograd convolution layer.
+ * @param[in] n_batches Number of batches in the input and output tensors.
+ * @param[in] n_input_channels Number of feature maps in a batch of the input tensor.
+ * @param[in] n_input_rows Number of rows in a feature map of the input tensor.
+ * @param[in] n_input_cols Number of columns in a feature map of the input tensor.
+ * @param[in] n_output_channels Number of feature maps in the output tensor.
+ * @param[in] same_padding Use "SAME" padding, otherwise use "VALID".
+ * @param[in] weights Pointer to weight tensor in spatial domain. Must be ordered as "Height x Rows x Input Feature Maps x Output Feature Maps.
+ * @param[out] weights_storage Pointer to storage for weight tensor in the Winograd domain. Must be at least the size returned by `get_weight_storage_size
+ * @param[in] input Pointer to NHWC ordered input tensor, in the spatial domain.
+ * @param[out] winograd_input Pointer to working space for the input tensor in the Winograd domain. Must be at least the size returned by `get_input_storage_size`.
+ * @param[out] output Pointer to NHWC ordered output tensor, in the spatial domain.
+ * @param[out] winograd_output Pointer to working space for the output tensor in the Winograd domain. Must be at least the size returned by `get_output_storage_size`.
*/
WinogradConvolutionLayer(
- const int n_batches, /** Number of batches in the input and output tensors. */
- const int n_input_channels, /** Number of feature maps in a batch of the input tensor. */
- const int n_input_rows, /** Number of rows in a feature map of the input tensor. */
- const int n_input_cols, /** Number of columns in a feature map of the input tensor. */
- const int n_output_channels, /** Number of feature maps in the output tensor. */
- const bool same_padding, /** Use "SAME" padding, otherwise use "VALID". */
- const TIn* const weights, /** Pointer to weight tensor in spatial domain. Must be ordered as "Height x Rows x Input Feature Maps x Output Feature Maps. */
- TIn* const weights_storage, /** Pointer to storage for weight tensor in the Winograd domain. Must be at least the size returned by `get_weight_storage_size`. */
- const TIn* const input, /** Pointer to NHWC ordered input tensor, in the spatial domain. */
- TIn* const winograd_input, /** Pointer to working space for the input tensor in the Winograd domain. Must be at least the size returned by `get_input_storage_size`. */
- TOut* const output, /** Pointer to NHWC ordered output tensor, in the spatial domain. */
- TOut* const winograd_output /** Pointer to working space for the output tensor in the Winograd domain. Must be at least the size returned by `get_output_storage_size`. */
+ const int n_batches,
+ const int n_input_channels,
+ const int n_input_rows,
+ const int n_input_cols,
+ const int n_output_channels,
+ const bool same_padding,
+ const TIn* const weights,
+ TIn* const weights_storage,
+ const TIn* const input,
+ TIn* const winograd_input,
+ TOut* const output,
+ TOut* const winograd_output
);
};
diff --git a/docs/Doxyfile b/docs/Doxyfile
index de0320f38b..59aa780fd3 100644
--- a/docs/Doxyfile
+++ b/docs/Doxyfile
@@ -855,7 +855,8 @@ RECURSIVE = YES
# Note that relative paths are relative to the directory from which doxygen is
# run.
-EXCLUDE =
+EXCLUDE = ./arm_compute/core/NEON/kernels/assembly/ \
+ ./arm_compute/core/NEON/kernels/winograd/
# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or
# directories that are symbolic links (a Unix file system feature) are excluded
diff --git a/src/core/CL/kernels/CLPermuteKernel.cpp b/src/core/CL/kernels/CLPermuteKernel.cpp
index 7001c5565b..132de60b68 100644
--- a/src/core/CL/kernels/CLPermuteKernel.cpp
+++ b/src/core/CL/kernels/CLPermuteKernel.cpp
@@ -46,7 +46,8 @@ TensorShape get_output_shape(const ITensorInfo *input, const PermutationVector &
permute(output_shape, perm);
return output_shape;
}
-}
+} // namespace
+
void CLPermuteKernel::configure(const ICLTensor *input, ICLTensor *output, const PermutationVector &perm)
{
ARM_COMPUTE_ERROR_ON_DATA_TYPE_CHANNEL_NOT_IN(input, 1, DataType::U8, DataType::S8, DataType::QS8, DataType::QASYMM8,
diff --git a/src/core/CPP/kernels/CPPPermuteKernel.cpp b/src/core/CPP/kernels/CPPPermuteKernel.cpp
index c7bae870d1..298c700809 100644
--- a/src/core/CPP/kernels/CPPPermuteKernel.cpp
+++ b/src/core/CPP/kernels/CPPPermuteKernel.cpp
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2017, 2018 ARM Limited.
+ * Copyright (c) 2017-2018 ARM Limited.
*
* SPDX-License-Identifier: MIT
*
@@ -76,17 +76,13 @@ inline void permute_strides(Dimensions<T> &dimensions, const PermutationVector &
} // namespace
-
-
-
template <typename T>
void CPPPermuteKernel::run_permute(const Window &window)
{
-
- Strides strides = _output->info()->strides_in_bytes();
+ Strides strides = _output->info()->strides_in_bytes();
Strides perm_strides = strides;
- permute_strides(perm_strides,_perm);
- const int output_stride_w = strides[3];
+ permute_strides(perm_strides, _perm);
+ const int output_stride_w = strides[3];
Window window_out(window);
const Window::Dimension zero_window = Window::Dimension(0, 0, 0);
for(size_t d = 0; d <= _perm.num_dimensions(); ++d)
diff --git a/src/core/NEON/kernels/NEWinogradLayerKernel.cpp b/src/core/NEON/kernels/NEWinogradLayerKernel.cpp
index 24d72eddd8..ea48e1f32b 100644
--- a/src/core/NEON/kernels/NEWinogradLayerKernel.cpp
+++ b/src/core/NEON/kernels/NEWinogradLayerKernel.cpp
@@ -118,7 +118,7 @@ unsigned int NEWinogradLayerKernel::get_output_storage_size(
return T::get_output_storage_size(n_batches, n_rows, n_cols, n_output_channels, same_padding);
}
-size_t NEWinogradLayerKernel::get_weight_storage_size(const int n_output_channels, const int n_input_channels)
+unsigned int NEWinogradLayerKernel::get_weight_storage_size(const int n_output_channels, const int n_input_channels)
{
return T::get_weight_storage_size(n_output_channels, n_input_channels);
}