| 188 | }; |
| 189 | |
| 190 | static inline TinyMat tensor2TinyMat(const megdnn::TensorND& tensor) { |
| 191 | auto layout = tensor.layout; |
| 192 | mgb_assert( |
| 193 | layout.ndim == 3 || ((layout.ndim == 4) && (layout[0] == 1)), |
| 194 | "failed %s, %d %d", layout.to_string().c_str(), (layout.ndim == 4), |
| 195 | (layout[0] == 1)); |
| 196 | int idx_offset = layout.ndim - 3; |
| 197 | TinyMat res; |
| 198 | res.rows = layout[idx_offset + 0]; |
| 199 | res.cols = layout[idx_offset + 1]; |
| 200 | res.channels = layout[idx_offset + 2]; |
| 201 | res.data = tensor.raw_ptr(); |
| 202 | return res; |
| 203 | } |
| 204 | template <typename Opr> |
| 205 | PerformanceResult proxy_cv_kernel( |
| 206 | TensorNDArray tensor_array, RunCvHelper<Opr>& runner, void* func_ptr, |
no test coverage detected