| 249 | } |
| 250 | |
| 251 | void MatrixMulImpl::exec( |
| 252 | _megdnn_tensor_in A, _megdnn_tensor_in B, _megdnn_tensor_out C, |
| 253 | _megdnn_workspace workspace) { |
| 254 | check_exec(A.layout, B.layout, C.layout, workspace.size); |
| 255 | |
| 256 | if (auto algo = get_algorithm_heuristic( |
| 257 | A.layout, B.layout, C.layout, std::numeric_limits<size_t>::max(), |
| 258 | AlgoAttribute::DEFAULT, AlgoAttribute::DEFAULT)) { |
| 259 | auto kern_param = make_kern_param(A, B, C, workspace); |
| 260 | auto kern = static_cast<AlgoBase*>(algo)->get_kern(kern_param); |
| 261 | auto run = [kern, kern_param]() { kern(kern_param); }; |
| 262 | static_cast<naive::HandleImpl*>(handle())->dispatch_kern(run); |
| 263 | return; |
| 264 | } |
| 265 | |
| 266 | naive::MatrixMulForwardImpl::exec(A, B, C, workspace); |
| 267 | } |
| 268 | |
| 269 | MatrixMulImpl::AlgoDataType MatrixMulImpl::KernSizeParam::deduce_algo_data_type() |
| 270 | const { |
nothing calls this directly
no test coverage detected