| 55 | NEGEMMConv2d::~NEGEMMConv2d() = default; |
| 56 | |
| 57 | void NEGEMMConv2d::configure( |
| 58 | ITensor *input, const ITensor *weights, const ITensor *biases, ITensor *output, const Conv2dInfo &info) |
| 59 | { |
| 60 | ARM_COMPUTE_TRACE_EVENT(ARM_COMPUTE_PROF_CAT_CPU, ARM_COMPUTE_PROF_LVL_CPU, "NEGEMMConv2d::configure"); |
| 61 | ARM_COMPUTE_ERROR_ON_NULLPTR(input, weights, output); |
| 62 | |
| 63 | _impl->weights = weights; |
| 64 | _impl->is_prepared = false; |
| 65 | _impl->op = std::make_unique<OperatorType>(); |
| 66 | |
| 67 | _impl->op->configure(input->info(), weights->info(), biases != nullptr ? biases->info() : nullptr, output->info(), |
| 68 | info); |
| 69 | |
| 70 | _impl->aux_mem_req = _impl->op->workspace(); |
| 71 | _impl->run_pack = {{TensorType::ACL_SRC_0, input}, {TensorType::ACL_SRC_2, biases}, {TensorType::ACL_DST, output}}; |
| 72 | _impl->prep_pack = {{TensorType::ACL_SRC_1, weights}, {TensorType::ACL_SRC_2, biases}}; |
| 73 | _impl->workspace = manage_workspace<Tensor>(_impl->op->workspace(), _impl->memory_group, _impl->run_pack, |
| 74 | _impl->prep_pack, /* allocate_now */ false); |
| 75 | } |
| 76 | |
| 77 | Status NEGEMMConv2d::validate(const ITensorInfo *input, |
| 78 | const ITensorInfo *weights, |