24.02.1
|
Go to the documentation of this file.
49 struct CLGEMMConvolutionLayer::Impl
51 const ITensor *weights{
nullptr};
52 std::unique_ptr<opencl::ClGemmConv2d> op{
nullptr};
53 ITensorPack run_pack{};
54 ITensorPack prep_pack{};
55 MemoryGroup memory_group{};
56 IWeightsManager *weights_manager{
nullptr};
58 WorkspaceData<CLTensor> workspace_tensors{};
59 bool is_prepared{
false};
64 : _impl(std::make_unique<Impl>())
67 _impl->weights_manager = weights_manager;
98 _impl->weights = weights;
99 _impl->op = std::make_unique<opencl::ClGemmConv2d>();
101 _impl->op->configure(compile_context,
input->info(), weights->
info(),
112 _impl->aux_mem_req = _impl->op->workspace();
113 _impl->workspace_tensors =
114 manage_workspace<CLTensor>(_impl->aux_mem_req, _impl->memory_group, _impl->run_pack, _impl->prep_pack);
135 _impl->op->run(_impl->run_pack);
140 if (!_impl->is_prepared)
142 _impl->op->prepare(_impl->prep_pack);
144 std::find_if(_impl->aux_mem_req.begin(), _impl->aux_mem_req.end(),
145 [](
const MemoryInfo &m) ->
bool { return m.lifetime == MemoryLifetime::Persistent; });
147 if (has_reshape !=
std::end(_impl->aux_mem_req))
149 _impl->weights->mark_as_unused();
154 _impl->run_pack.add_const_tensor(
ACL_SRC_1, _impl->weights);
157 _impl->is_prepared =
true;
std::vector< MemoryInfo > MemoryRequirements
Convolution Layer Weights Information class.
void run() override
Run the kernels contained in the function.
Interface for OpenCL tensor.
Class for specifying the size of an image or rectangle.
void configure(const ICLTensor *input, const ICLTensor *weights, const ICLTensor *biases, ICLTensor *output, const PadStrideInfo &conv_info, const WeightsInfo &weights_info=WeightsInfo(), const Size2D &dilation=Size2D(1U, 1U), const ActivationLayerInfo &act_info=ActivationLayerInfo(), unsigned int num_groups=1)
Set the input and output tensors.
static CLKernelLibrary & get()
Access the KernelLibrary singleton.
Manages all the OpenCL kernels compilation and caching, provides accessors for the OpenCL Context.
void prepare() override
Prepare the function for executing.
Descriptor used by the 2d Convolution function.
Activation Layer Information class.
#define ARM_COMPUTE_ERROR_ON_NULLPTR(...)
virtual ITensorInfo * info() const =0
Interface to be implemented by the child class to return the tensor's metadata.
~CLGEMMConvolutionLayer()
Default destructor.
void release_temporaries(const experimental::MemoryRequirements &mem_reqs, WorkspaceData< TensorType > &workspace)
Utility function to release tensors with lifetime marked as Prepare.
Interface to enqueue OpenCL kernels and get/set the OpenCL CommandQueue and ICLTuner.
static Status validate(const ITensorInfo *input, const ITensorInfo *weights, const ITensorInfo *biases, const ITensorInfo *output, const Conv2dInfo &conv2d_info, const WeightsInfo &weights_info=WeightsInfo())
Static function to check if given info will lead to a valid configuration.
const unsigned int num_groups
static Status validate(const ITensorInfo *input, const ITensorInfo *weights, const ITensorInfo *biases, const ITensorInfo *output, const PadStrideInfo &conv_info, const WeightsInfo &weights_info=WeightsInfo(), const Size2D &dilation=Size2D(1U, 1U), const ActivationLayerInfo &act_info=ActivationLayerInfo(), unsigned int num_groups=1)
Static function to check if given info will lead to a valid configuration of CLGEMMConvolutionLayer.
Memory group resources scope handling class.
Copyright (c) 2017-2024 Arm Limited.
void end(TokenStream &in, bool &valid)
Store the tensor's metadata.
Weights manager interface to handle weights transformations.
CLGEMMConvolutionLayer(std::shared_ptr< IMemoryManager > memory_manager=nullptr, IWeightsManager *weights_manager=nullptr)
Constructor.