| 48 | }; |
| 49 | |
| 50 | void ResizeImpl::exec( |
| 51 | _megdnn_tensor_in src, _megdnn_tensor_out dst, _megdnn_workspace workspace) { |
| 52 | auto handle = cnnl_handle(this->handle()); |
| 53 | check_exec(src.layout, dst.layout, workspace.size); |
| 54 | // cnnl interp only support float and half |
| 55 | check_dtype_float(src.layout.dtype.enumv()); |
| 56 | megdnn_assert( |
| 57 | param().format == param::Resize::Format::NHWC, |
| 58 | "CNNL resize only support NHWC when input tensor is 4D"); |
| 59 | ResizeCnnlDescs descs(src.layout, dst.layout, param().imode); |
| 60 | cnnl_check(cnnlInterp_v2( |
| 61 | handle, descs.align_corners, descs.align_center, descs.imode, NULL, true, |
| 62 | descs.input_desc.desc(), src.raw_ptr(), descs.output_desc.desc(), |
| 63 | dst.raw_ptr())); |
| 64 | } |
| 65 | |
| 66 | // ***************************Backward*************************** // |
| 67 | void ResizeBackwardImpl::exec( |