24.02
NEElementwiseUnaryLayer.cpp
Go to the documentation of this file.
1
/*
2
* Copyright (c) 2018-2021 Arm Limited.
3
*
4
* SPDX-License-Identifier: MIT
5
*
6
* Permission is hereby granted, free of charge, to any person obtaining a copy
7
* of this software and associated documentation files (the "Software"), to
8
* deal in the Software without restriction, including without limitation the
9
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
10
* sell copies of the Software, and to permit persons to whom the Software is
11
* furnished to do so, subject to the following conditions:
12
*
13
* The above copyright notice and this permission notice shall be included in all
14
* copies or substantial portions of the Software.
15
*
16
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
22
* SOFTWARE.
23
*/
24
#include "
arm_compute/runtime/NEON/functions/NEElementwiseUnaryLayer.h
"
25
26
#include "
src/cpu/operators/CpuElementwiseUnary.h
"
27
28
#include <utility>
29
30
namespace
arm_compute
31
{
32
using
OperatorType
= cpu::CpuElementwiseUnary;
33
34
template
<ElementWiseUnary op>
35
struct
NEElementwiseUnaryLayer<op>::Impl
36
{
37
const
ITensor *
src
{
nullptr
};
38
ITensor *
dst
{
nullptr
};
39
std::unique_ptr<OperatorType> cpu_op{
nullptr
};
40
};
41
42
template
<ElementWiseUnary op>
43
NEElementwiseUnaryLayer<op>::NEElementwiseUnaryLayer
() : _impl(std::make_unique<Impl>())
44
{
45
}
46
template
<ElementWiseUnary op>
47
NEElementwiseUnaryLayer<op>::~NEElementwiseUnaryLayer
() =
default
;
48
template
<ElementWiseUnary op>
49
NEElementwiseUnaryLayer<op>::NEElementwiseUnaryLayer
(
NEElementwiseUnaryLayer
&&) =
default
;
50
template
<ElementWiseUnary op>
51
NEElementwiseUnaryLayer<op>
&
NEElementwiseUnaryLayer<op>::operator=
(
NEElementwiseUnaryLayer
&&) =
default
;
52
53
template
<ElementWiseUnary op>
54
void
NEElementwiseUnaryLayer<op>::configure
(
const
ITensor
*
input
,
ITensor
*output)
55
{
56
_impl->src =
input
;
57
_impl->dst = output;
58
_impl->cpu_op = std::make_unique<OperatorType>();
59
_impl->cpu_op->configure(op, *_impl->src->info(), *_impl->dst->info());
60
}
61
62
template
<ElementWiseUnary op>
63
Status
NEElementwiseUnaryLayer<op>::validate
(
const
ITensorInfo
*
input
,
const
ITensorInfo
*output)
64
{
65
return
OperatorType::validate
(op, *
input
, *output);
66
}
67
68
template
<ElementWiseUnary op>
69
void
NEElementwiseUnaryLayer<op>::run
()
70
{
71
ITensorPack
pack
;
72
pack
.
add_tensor
(
TensorType::ACL_SRC
, _impl->src);
73
pack
.
add_tensor
(
TensorType::ACL_DST
, _impl->dst);
74
_impl->cpu_op->run(
pack
);
75
}
76
77
template
class
NEElementwiseUnaryLayer<ElementWiseUnary::RSQRT>
;
78
template
class
NEElementwiseUnaryLayer<ElementWiseUnary::EXP>
;
79
template
class
NEElementwiseUnaryLayer<ElementWiseUnary::NEG>
;
80
template
class
NEElementwiseUnaryLayer<ElementWiseUnary::LOG>
;
81
template
class
NEElementwiseUnaryLayer<ElementWiseUnary::ABS>
;
82
template
class
NEElementwiseUnaryLayer<ElementWiseUnary::ROUND>
;
83
template
class
NEElementwiseUnaryLayer<ElementWiseUnary::SIN>
;
84
85
}
// namespace arm_compute
arm_compute::test::validation::src
SimpleTensor< float > src
Definition:
DFT.cpp:155
arm_compute::NEElementwiseUnaryLayer::configure
void configure(const ITensor *input, ITensor *output)
Initialize the function.
Definition:
NEElementwiseUnaryLayer.cpp:54
arm_compute::test::validation::dst
auto dst
Definition:
DFT.cpp:170
arm_compute::ITensor
Interface for CPU tensor.
Definition:
ITensor.h:36
arm_compute::ITensorPack::add_tensor
void add_tensor(int id, ITensor *tensor)
Add tensor to the pack.
Definition:
ITensorPack.cpp:38
arm_compute::NEElementwiseUnaryLayer::validate
static Status validate(const ITensorInfo *input, const ITensorInfo *output)
Static function to check if given info will lead to a valid configuration.
Definition:
NEElementwiseUnaryLayer.cpp:63
NEElementwiseUnaryLayer.h
arm_compute::ITensorPack
Tensor packing service.
Definition:
ITensorPack.h:39
arm_compute::ACL_DST
@ ACL_DST
Definition:
Types.h:55
arm_compute::NEElementwiseUnaryLayer::operator=
NEElementwiseUnaryLayer & operator=(const NEElementwiseUnaryLayer &)=delete
Prevent instances of this class from being copied (As this class contains pointers)
arm_compute::Status
Status class.
Definition:
Error.h:52
arm_compute::test::validation::pack
ITensorPack pack
Definition:
Im2Col.cpp:188
arm_compute::OperatorType
opencl::ClGemm OperatorType
Definition:
CLGEMM.cpp:40
CpuElementwiseUnary.h
arm_compute
Copyright (c) 2017-2024 Arm Limited.
Definition:
introduction.dox:24
arm_compute::NEElementwiseUnaryLayer
Basic function to perform unary elementwise operations.
Definition:
NEElementwiseUnaryLayer.h:39
arm_compute::ACL_SRC
@ ACL_SRC
Definition:
Types.h:44
arm_compute::ITensorInfo
Store the tensor's metadata.
Definition:
ITensorInfo.h:44
arm_compute::NEElementwiseUnaryLayer::NEElementwiseUnaryLayer
NEElementwiseUnaryLayer()
Default Constructor.
Definition:
NEElementwiseUnaryLayer.cpp:43
arm_compute::NEElementwiseUnaryLayer::~NEElementwiseUnaryLayer
~NEElementwiseUnaryLayer()
Default Destructor.
arm_compute::opencl::ClGemm::validate
static Status validate(const ITensorInfo *a, const ITensorInfo *b, const ITensorInfo *c, const ITensorInfo *output, float alpha, float beta, const GEMMInfo &gemm_info)
Static function to check if given info will lead to a valid configuration.
Definition:
ClGemm.cpp:720
arm_compute::test::validation::input
auto input
Definition:
LSTMLayerQuantized.cpp:486
arm_compute::NEElementwiseUnaryLayer::run
void run() override
Run the kernels contained in the function.
Definition:
NEElementwiseUnaryLayer.cpp:69
src
runtime
NEON
functions
NEElementwiseUnaryLayer.cpp
Generated on Wed Feb 14 2024 11:14:54 for Compute Library by
1.8.17