| 117 | |
| 118 | if (param.src_type == dtype::Float32{}) { |
| 119 | DISPATCH_MODE(dt_float32, float, float, 0); |
| 120 | } |
| 121 | #undef DISPATCH_FUNC |
| 122 | #undef DISPATCH_WINDOW |
| 123 | #undef DISPATCH_MODE |
| 124 | } |
| 125 | bool PoolingImpl::AlgoGiFilter2ModexStride2::usable( |
| 126 | const PoolingKernSizeParam& param) const { |
| 127 | auto SH = param.stride[0]; |
| 128 | auto SW = param.stride[1]; |
| 129 | auto FH = param.filter[0]; |
| 130 | auto FW = param.filter[1]; |
| 131 | |
| 132 | bool avaible = param.src_type.category() == DTypeCategory::FLOAT && |
| 133 | param.format == Param::Format::NCHW && FH == FW && SH == SW && |
| 134 | FH == 2 && SH == 2; |
| 135 | bool is_mode_ok = (param.mode == Mode::MAX || param.mode == Mode::AVERAGE); |
| 136 | return avaible && is_mode_ok; |
| 137 | } |
| 138 | |
| 139 | void PoolingImpl::AlgoGiFilter2ModexStride2::exec(const PoolingKernParam& param) const { |
| 140 | auto IH = param.isz[0], IW = param.isz[1]; |
no test coverage detected