MCPcopy Create free account
hub / github.com/MegEngine/MegEngine / exec

Method exec

dnn/src/arm_common/pooling/algo.cpp:535–563  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

533}
534
535void PoolingImpl::AlgoInt8Filter3MaxStride2::exec(const PoolingKernParam& param) const {
536 auto IH = param.isz[0], IW = param.isz[1];
537 auto OH = param.osz[0], OW = param.osz[1];
538 auto N = param.n, C = param.ic;
539 auto PH = param.padding[0];
540 auto PW = param.padding[1];
541
542 auto src_ptr = param.src<dt_int8>();
543 auto dst_ptr = param.dst<dt_int8>();
544
545 MIDOUT_BEGIN(megdnn_arm_common_pooling, midout_iv(7)) {
546 WorkspaceBundle wbundle = get_bundle(param);
547 auto run = [C, IH, IW, OH, OW, PH, PW, src_ptr, dst_ptr, wbundle = wbundle,
548 workspace_ptr = param.workspace<dt_byte>()](
549 size_t index, size_t thread_id) {
550 auto ws = wbundle;
551 ws.set(workspace_ptr + thread_id * ws.total_size_in_bytes());
552 size_t n = index / C;
553 size_t c = index % C;
554 do_max_pooling_3x3_s2x2_int8_NEON(
555 src_ptr + n * C * IH * IW + c * IH * IW,
556 dst_ptr + n * C * OH * OW + c * OH * OW, IH, IW, OH, OW, PH, PW,
557 ws);
558 };
559 MEGDNN_DISPATCH_MULTI_THREAD_CPU_KERN(
560 static_cast<::megdnn::naive::HandleImpl*>(param.handle), N * C, run);
561 }
562 MIDOUT_END();
563}
564
565bool PoolingImpl::AlgoFilter3ModexStridexNCHW44::usable(
566 const PoolingKernSizeParam& param) const {

Callers

nothing calls this directly

Calls 5

total_size_in_bytesMethod · 0.80
get_bundleFunction · 0.70
MIDOUT_BEGINFunction · 0.50
setMethod · 0.45

Tested by

no test coverage detected