Compute Library
 21.02
CpuActivationKernel Class Reference

Interface for the activation kernel. More...

#include <CpuActivationKernel.h>

Collaboration diagram for CpuActivationKernel:
[legend]

Public Member Functions

 CpuActivationKernel ()=default
 
 ARM_COMPUTE_DISALLOW_COPY_ALLOW_MOVE (CpuActivationKernel)
 
void configure (const ITensorInfo *src, ITensorInfo *dst, ActivationLayerInfo activation_info)
 Configure kernel for a given list of arguments. More...
 
void run_op (ITensorPack &tensors, const Window &window, const ThreadInfo &info) override
 Execute the kernel on the passed window. More...
 
const char * name () const override
 Name of the kernel. More...
 
- Public Member Functions inherited from ICPPKernel
virtual ~ICPPKernel ()=default
 Default destructor. More...
 
virtual void run (const Window &window, const ThreadInfo &info)
 Execute the kernel on the passed window. More...
 
virtual void run_nd (const Window &window, const ThreadInfo &info, const Window &thread_locator)
 legacy compatibility layer for implemantions which do not support thread_locator In these cases we simply narrow the interface down the legacy version More...
 
- Public Member Functions inherited from IKernel
 IKernel ()
 Constructor. More...
 
virtual ~IKernel ()=default
 Destructor. More...
 
virtual bool is_parallelisable () const
 Indicates whether or not the kernel is parallelisable. More...
 
virtual BorderSize border_size () const
 The size of the border for that kernel. More...
 
const Windowwindow () const
 The maximum window the kernel can be executed on. More...
 

Static Public Member Functions

static Status validate (const ITensorInfo *src, const ITensorInfo *dst, const ActivationLayerInfo &act_info)
 Static function to check if given info will lead to a valid configuration of CpuActivationKernel. More...
 

Detailed Description

Interface for the activation kernel.

Definition at line 37 of file CpuActivationKernel.h.

Constructor & Destructor Documentation

◆ CpuActivationKernel()

CpuActivationKernel ( )
default

Member Function Documentation

◆ ARM_COMPUTE_DISALLOW_COPY_ALLOW_MOVE()

ARM_COMPUTE_DISALLOW_COPY_ALLOW_MOVE ( CpuActivationKernel  )

◆ configure()

void configure ( const ITensorInfo src,
ITensorInfo dst,
ActivationLayerInfo  activation_info 
)

Configure kernel for a given list of arguments.

Note
If the output tensor is a nullptr, the activation function will be performed in-place
Parameters
[in,out]srcSource tensor info. In case of dst tensor = nullptr, this tensor will store the result of the activation function. Data types supported: QASYMM8/QASYMM8_SIGNED/QSYMM16/F16/F32.
[out]dstDestination tensor info. Data type supported: same as src
[in]activation_infoActivation layer information.

Definition at line 210 of file CpuActivationKernel.cpp.

References ARM_COMPUTE_ERROR_ON_NULLPTR, ARM_COMPUTE_ERROR_THROW_ON, and arm_compute::validate_arguments().

211 {
213 
214  _act_info = activation_info;
215 
217 
218  // Configure kernel window
219  auto win_config = validate_and_configure_window(src, dst);
220  ARM_COMPUTE_ERROR_THROW_ON(win_config.first);
221  ICPPKernel::configure(win_config.second);
222 }
#define ARM_COMPUTE_ERROR_THROW_ON(status)
Definition: Error.h:455
SimpleTensor< float > src
Definition: DFT.cpp:155
Status validate_arguments(const ITensorInfo *input, const ITensorInfo *bias, const ITensorInfo *output, const GEMMLowpOutputStageInfo *output_stage)
#define ARM_COMPUTE_ERROR_ON_NULLPTR(...)
Definition: Validate.h:161

◆ name()

const char * name ( ) const
overridevirtual

Name of the kernel.

Returns
Kernel name

Implements ICPPKernel.

Definition at line 255 of file CpuActivationKernel.cpp.

256 {
257  return "CpuActivationKernel";
258 }

◆ run_op()

void run_op ( ITensorPack tensors,
const Window window,
const ThreadInfo info 
)
overridevirtual

Execute the kernel on the passed window.

Warning
If is_parallelisable() returns false then the passed window must be equal to window()
Note
The window has to be a region within the window returned by the window() method
The width of the window has to be a multiple of num_elems_processed_per_iteration().
Parameters
[in]tensorsA vector containing the tensors to operate on.
[in]windowRegion on which to execute the kernel. (Must be a region of the window returned by window())
[in]infoInfo about executing thread and CPU.

Reimplemented from ICPPKernel.

Definition at line 233 of file CpuActivationKernel.cpp.

References arm_compute::ACL_DST, arm_compute::ACL_SRC, ARM_COMPUTE_ERROR_ON, ARM_COMPUTE_ERROR_ON_INVALID_SUBWINDOW, ARM_COMPUTE_ERROR_ON_UNCONFIGURED_KERNEL, ARM_COMPUTE_UNUSED, arm_compute::test::validation::dst, ITensorPack::empty(), ITensorPack::get_const_tensor(), ITensorPack::get_tensor(), arm_compute::test::validation::src, and IKernel::window().

234 {
235  // Early exit on disabled activation
236  if(!_act_info.enabled())
237  {
238  return;
239  }
240 
244 
245  ARM_COMPUTE_ERROR_ON(tensors.empty());
246 
247  const ITensor *src = tensors.get_const_tensor(TensorType::ACL_SRC);
248  ITensor *dst = tensors.get_tensor(TensorType::ACL_DST);
249 
250  const auto *uk = get_implementation(ActivationSelectorData{ src->info()->data_type() });
251 
252  uk->ukernel(src, dst, _act_info, window);
253 }
const Window & window() const
The maximum window the kernel can be executed on.
Definition: IKernel.cpp:28
bool enabled() const
Check if initialised.
Definition: Types.h:1600
#define ARM_COMPUTE_ERROR_ON(cond)
If the condition is true then an error message is printed and an exception thrown.
Definition: Error.h:466
SimpleTensor< float > src
Definition: DFT.cpp:155
#define ARM_COMPUTE_UNUSED(...)
To avoid unused variables warnings.
Definition: Error.h:152
#define ARM_COMPUTE_ERROR_ON_UNCONFIGURED_KERNEL(k)
Definition: Validate.h:941
ScaleKernelInfo info(interpolation_policy, default_border_mode, PixelValue(), sampling_policy, false)
#define ARM_COMPUTE_ERROR_ON_INVALID_SUBWINDOW(f, s)
Definition: Validate.h:205

◆ validate()

Status validate ( const ITensorInfo src,
const ITensorInfo dst,
const ActivationLayerInfo act_info 
)
static

Static function to check if given info will lead to a valid configuration of CpuActivationKernel.

Parameters
[in]srcSource tensor info. In case of dst tensor info = nullptr, this tensor will store the result of the activation function. Data types supported: QASYMM8/QASYMM8_SIGNED/QSYMM16/F16/F32.
[in]dstDestination tensor info. Data type supported: same as src
[in]act_infoActivation layer information.
Returns
a status

Definition at line 224 of file CpuActivationKernel.cpp.

References ARM_COMPUTE_RETURN_ON_ERROR, ARM_COMPUTE_UNUSED, ICloneable< T >::clone(), and arm_compute::validate_arguments().

Referenced by CpuActivation::validate().

225 {
226  ARM_COMPUTE_UNUSED(act_info);
228  ARM_COMPUTE_RETURN_ON_ERROR(validate_and_configure_window(src->clone().get(), (dst != nullptr) ? dst->clone().get() : nullptr).first);
229 
230  return Status{};
231 }
#define ARM_COMPUTE_RETURN_ON_ERROR(status)
Checks if a status contains an error and returns it.
Definition: Error.h:204
SimpleTensor< float > src
Definition: DFT.cpp:155
#define ARM_COMPUTE_UNUSED(...)
To avoid unused variables warnings.
Definition: Error.h:152
Status validate_arguments(const ITensorInfo *input, const ITensorInfo *bias, const ITensorInfo *output, const GEMMLowpOutputStageInfo *output_stage)

The documentation for this class was generated from the following files: