| 127 | } // namespace |
| 128 | |
| 129 | void CpuDirectConv3dKernel::configure(const ITensorInfo *src0, |
| 130 | const ITensorInfo *src1, |
| 131 | const ITensorInfo *src2, |
| 132 | ITensorInfo *dst, |
| 133 | const Conv3dInfo &conv_info) |
| 134 | { |
| 135 | ARM_COMPUTE_TRACE_EVENT(ARM_COMPUTE_PROF_CAT_CPU, ARM_COMPUTE_PROF_LVL_CPU, "CpuDirectConv3dKernel::configure"); |
| 136 | ARM_COMPUTE_UNUSED(src2); |
| 137 | ARM_COMPUTE_ERROR_ON_NULLPTR(src0, src1, dst); |
| 138 | |
| 139 | const auto *uk = |
| 140 | CpuDirectConv3dKernel::get_implementation(DataTypeISASelectorData{src0->data_type(), CPUInfo::get().get_isa()}); |
| 141 | |
| 142 | ARM_COMPUTE_ERROR_ON_NULLPTR(uk); |
| 143 | |
| 144 | _conv_info = conv_info; |
| 145 | _run_method = uk->ukernel; |
| 146 | _name = std::string("CpuDirectConv3dKernel").append("/").append(uk->name); |
| 147 | |
| 148 | // Get convolved dimensions |
| 149 | TensorShape output_shape = |
| 150 | misc::shape_calculator::compute_conv3d_shape(src0->tensor_shape(), src1->tensor_shape(), conv_info); |
| 151 | |
| 152 | DataType data_type = src0->data_type(); |
| 153 | |
| 154 | // Output auto inizialitation if not yet initialized |
| 155 | auto_init_if_empty(*dst, output_shape, 1, data_type); |
| 156 | |
| 157 | // Perform validation step |
| 158 | ARM_COMPUTE_ERROR_THROW_ON(validate_arguments(src0, src1, src2, dst, conv_info)); |
| 159 | |
| 160 | // Configure kernel window |
| 161 | Window win = calculate_max_window(*dst, Steps()); |
| 162 | ICpuKernel::configure(win); |
| 163 | } |
| 164 | |
| 165 | Status CpuDirectConv3dKernel::validate(const ITensorInfo *src0, |
| 166 | const ITensorInfo *src1, |
nothing calls this directly
no test coverage detected