| 27 | } |
| 28 | |
| 29 | MatrixMul* get_matmul_opr(const NCBKernSizeParam& param) { |
| 30 | using ConvCM = param::Convolution::ComputeMode; |
| 31 | using MmCM = param::MatrixMul::ComputeMode; |
| 32 | static CpuOprDelegationStorage<3> storage; |
| 33 | if (param.filter_meta.format == param::Convolution::Format::NCHW44) { |
| 34 | MatrixMul::Param p; |
| 35 | p.format = param::MatrixMul::Format::MK4; |
| 36 | return storage.get<MatrixMul, 0>(p); |
| 37 | } |
| 38 | switch (param.compute_mode) { |
| 39 | default: |
| 40 | return storage.get<MatrixMul, 1>({}); |
| 41 | case ConvCM::FLOAT32: { |
| 42 | MatrixMul::Param p; |
| 43 | p.compute_mode = MmCM::FLOAT32; |
| 44 | return storage.get<MatrixMul, 2>(p); |
| 45 | } |
| 46 | } |
| 47 | } |
| 48 | |
| 49 | WorkspaceBundle get_bundle(const NCBKernSizeParam& param) { |
| 50 | UNPACK_CONV_F32_NCB_KERN_SIZES(param); |
no outgoing calls
no test coverage detected