Compute Library
 23.11
ClElementwiseOperations.cpp
Go to the documentation of this file.
1 /*
2  * Copyright (c) 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  */
25 
26 #include "src/common/utils/Log.h"
28 
29 namespace arm_compute
30 {
31 namespace opencl
32 {
34  ITensorInfo *src1,
35  ITensorInfo *src2,
38 {
39  ARM_COMPUTE_LOG_PARAMS(src1, src2, dst, act_info);
40  auto k = std::make_unique<kernels::ClArithmeticKernel>();
41  k->configure(compile_context, ArithmeticOperation::DIV, src1, src2, dst, act_info);
42  _kernel = std::move(k);
43 }
44 
46  const ITensorInfo *src2,
47  const ITensorInfo *dst,
49 {
51 }
52 
53 void ClElementwiseMax::configure(const ClCompileContext &compile_context,
54  ITensorInfo *src1,
55  ITensorInfo *src2,
58 {
59  ARM_COMPUTE_LOG_PARAMS(src1, src2, dst, act_info);
60  auto k = std::make_unique<kernels::ClArithmeticKernel>();
61  k->configure(compile_context, ArithmeticOperation::MAX, src1, src2, dst, act_info);
62  _kernel = std::move(k);
63 }
64 
66  const ITensorInfo *src2,
67  const ITensorInfo *dst,
69 {
71 }
72 
73 void ClElementwiseMin::configure(const ClCompileContext &compile_context,
74  ITensorInfo *src1,
75  ITensorInfo *src2,
78 {
79  ARM_COMPUTE_LOG_PARAMS(src1, src2, dst, act_info);
80  auto k = std::make_unique<kernels::ClArithmeticKernel>();
81  k->configure(compile_context, ArithmeticOperation::MIN, src1, src2, dst, act_info);
82  _kernel = std::move(k);
83 }
84 
86  const ITensorInfo *src2,
87  const ITensorInfo *dst,
89 {
91 }
92 
94  ITensorInfo *src1,
95  ITensorInfo *src2,
98 {
99  ARM_COMPUTE_LOG_PARAMS(src1, src2, dst, act_info);
100  auto k = std::make_unique<kernels::ClArithmeticKernel>();
101  k->configure(compile_context, ArithmeticOperation::SQUARED_DIFF, src1, src2, dst, act_info);
102  _kernel = std::move(k);
103 }
104 
106  const ITensorInfo *src2,
107  const ITensorInfo *dst,
109 {
111 }
112 
114  ITensorInfo *src1,
115  ITensorInfo *src2,
116  ITensorInfo *dst,
118 {
119  ARM_COMPUTE_LOG_PARAMS(src1, src2, dst, act_info);
120  auto k = std::make_unique<kernels::ClArithmeticKernel>();
121  k->configure(compile_context, ArithmeticOperation::POWER, src1, src2, dst, act_info);
122  _kernel = std::move(k);
123 }
124 
126  const ITensorInfo *src2,
127  const ITensorInfo *dst,
129 {
131 }
132 } // namespace opencl
133 } // namespace arm_compute
arm_compute::opencl::kernels::ClArithmeticKernel::validate
static Status validate(ArithmeticOperation op, const ITensorInfo *src1, const ITensorInfo *src2, const ITensorInfo *dst, const ActivationLayerInfo &act_info=ActivationLayerInfo())
Static function to check if given info will lead to a valid configuration.
Definition: ClElementwiseKernel.cpp:539
arm_compute::opencl::ClElementwiseSquaredDiff::configure
void configure(const ClCompileContext &compile_context, ITensorInfo *src1, ITensorInfo *src2, ITensorInfo *dst, const ActivationLayerInfo &act_info=ActivationLayerInfo())
Configure function for a given list of arguments.
Definition: ClElementwiseOperations.cpp:93
arm_compute::ArithmeticOperation::MAX
@ MAX
Max(x, y)
arm_compute::opencl::ClElementwiseDivision::configure
void configure(const ClCompileContext &compile_context, ITensorInfo *src1, ITensorInfo *src2, ITensorInfo *dst, const ActivationLayerInfo &act_info=ActivationLayerInfo())
Configure function for a given list of arguments.
Definition: ClElementwiseOperations.cpp:33
arm_compute::opencl::ClElementwiseMax::validate
static Status validate(const ITensorInfo *src1, const ITensorInfo *src2, const ITensorInfo *dst, const ActivationLayerInfo &act_info=ActivationLayerInfo())
Static function to check if given info will lead to a valid configuration.
Definition: ClElementwiseOperations.cpp:65
arm_compute::test::validation::dst
auto dst
Definition: DFT.cpp:170
arm_compute::opencl::ClElementwiseMin::validate
static Status validate(const ITensorInfo *src1, const ITensorInfo *src2, const ITensorInfo *dst, const ActivationLayerInfo &act_info=ActivationLayerInfo())
Static function to check if given info will lead to a valid configuration.
Definition: ClElementwiseOperations.cpp:85
arm_compute::opencl::ClElementwisePower::validate
static Status validate(const ITensorInfo *src1, const ITensorInfo *src2, const ITensorInfo *dst, const ActivationLayerInfo &act_info=ActivationLayerInfo())
Static function to check if given info will lead to a valid configuration.
Definition: ClElementwiseOperations.cpp:125
arm_compute::opencl::ClElementwisePower::configure
void configure(const ClCompileContext &compile_context, ITensorInfo *src1, ITensorInfo *src2, ITensorInfo *dst, const ActivationLayerInfo &act_info=ActivationLayerInfo())
Configure function for a given list of arguments.
Definition: ClElementwiseOperations.cpp:113
arm_compute::ArithmeticOperation::POWER
@ POWER
x ^ y
arm_compute::ActivationLayerInfo
Activation Layer Information class.
Definition: ActivationLayerInfo.h:55
arm_compute::test::validation::act_info
act_info
Definition: DirectConvolutionLayer.cpp:547
arm_compute::CLCompileContext
CLCompileContext class.
Definition: CLCompileContext.h:204
arm_compute::ArithmeticOperation::MIN
@ MIN
Min(x, y)
arm_compute::Status
Status class.
Definition: Error.h:52
arm_compute::opencl::ClElementwiseMin::configure
void configure(const ClCompileContext &compile_context, ITensorInfo *src1, ITensorInfo *src2, ITensorInfo *dst, const ActivationLayerInfo &act_info=ActivationLayerInfo())
Configure function for a given list of arguments.
Definition: ClElementwiseOperations.cpp:73
arm_compute::ArithmeticOperation::SQUARED_DIFF
@ SQUARED_DIFF
(x - y)^2
arm_compute::ArithmeticOperation::DIV
@ DIV
(x / y)
arm_compute
Copyright (c) 2017-2023 Arm Limited.
Definition: introduction.dox:24
arm_compute::opencl::ClElementwiseDivision::validate
static Status validate(const ITensorInfo *src1, const ITensorInfo *src2, const ITensorInfo *dst, const ActivationLayerInfo &act_info=ActivationLayerInfo())
Static function to check if given info will lead to a valid configuration.
Definition: ClElementwiseOperations.cpp:45
Log.h
ClElementwiseKernel.h
arm_compute::opencl::ClElementwiseMax::configure
void configure(const ClCompileContext &compile_context, ITensorInfo *src1, ITensorInfo *src2, ITensorInfo *dst, const ActivationLayerInfo &act_info=ActivationLayerInfo())
Configure function for a given list of arguments.
Definition: ClElementwiseOperations.cpp:53
arm_compute::opencl::ClElementwiseSquaredDiff::validate
static Status validate(const ITensorInfo *src1, const ITensorInfo *src2, const ITensorInfo *dst, const ActivationLayerInfo &act_info=ActivationLayerInfo())
Static function to check if given info will lead to a valid configuration.
Definition: ClElementwiseOperations.cpp:105
arm_compute::ITensorInfo
Store the tensor's metadata.
Definition: ITensorInfo.h:44
ARM_COMPUTE_LOG_PARAMS
#define ARM_COMPUTE_LOG_PARAMS(...)
Definition: Log.h:35
ClElementwiseOperations.h