| 132 | } |
| 133 | |
| 134 | void ClIndirectConv2d::prepare(ITensorPack &constants) |
| 135 | { |
| 136 | if (!_is_prepared) |
| 137 | { |
| 138 | ICLTensor *indirect_buffer_aux = |
| 139 | utils::cast::polymorphic_downcast<ICLTensor *>(constants.get_tensor(offset_int_vec(IndirectBuffer))); |
| 140 | ARM_COMPUTE_ERROR_ON(indirect_buffer_aux == nullptr); |
| 141 | |
| 142 | ARM_COMPUTE_LOG_INFO_WITH_FUNCNAME_ACL("Preparing indirect buffer"); |
| 143 | |
| 144 | CLAuxTensorHandler indirect_buffer(_indirect_buffer, *indirect_buffer_aux); |
| 145 | ARM_COMPUTE_ERROR_ON(indirect_buffer.get()->cl_buffer().get() == nullptr); |
| 146 | |
| 147 | ITensorPack indirect_buffer_pack{{ACL_DST, indirect_buffer.get()}}; |
| 148 | CLScheduler::get().enqueue_op(*_addr_precalculation_kernel, indirect_buffer_pack, true); |
| 149 | |
| 150 | _is_prepared = true; |
| 151 | } |
| 152 | } |
| 153 | |
| 154 | experimental::MemoryRequirements ClIndirectConv2d::workspace() const |
| 155 | { |
nothing calls this directly
no test coverage detected