| 159 | } |
| 160 | |
| 161 | void PoolingImpl::exec( |
| 162 | _megdnn_tensor_in src, _megdnn_tensor_out dst, _megdnn_workspace workspace) { |
| 163 | check_exec(src.layout, dst.layout, workspace.size); |
| 164 | auto param = make_pooling_kern_param(this, src, dst, workspace); |
| 165 | |
| 166 | bool fwd_reduce = is_global_pooling_reduce(param); |
| 167 | if (fwd_reduce) { |
| 168 | auto global_pooling_fwd = [=]() { |
| 169 | auto reduce_tensor = get_gloabl_pooling_reduce_tensor(src, dst); |
| 170 | auto&& opr = get_global_pooling_reduce_opr(nullptr, param); |
| 171 | opr->exec(reduce_tensor.first, reduce_tensor.second, workspace); |
| 172 | }; |
| 173 | MEGDNN_DISPATCH_CPU_KERN_OPR(global_pooling_fwd()); |
| 174 | return; |
| 175 | } |
| 176 | |
| 177 | auto algo = get_algorithm(this, src.layout, dst.layout); |
| 178 | if (!is_fallback_algo(algo)) { |
| 179 | algo->exec(param); |
| 180 | } else { |
| 181 | fallback::PoolingImpl::exec(src, dst, workspace); |
| 182 | } |
| 183 | } |
| 184 | |
| 185 | MEGDNN_DEF_GET_ALGO_FROM_DESC(PoolingImpl); |
| 186 |
nothing calls this directly
no test coverage detected