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

Method exec

dnn/src/naive/region_restricted_convolution/opr_impl.cpp:17–70  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

15using namespace naive;
16
17void RegionRestrictedConvolutionForwardImpl::exec(
18 _megdnn_tensor_in src, _megdnn_tensor_in filter, _megdnn_tensor_in rin,
19 _megdnn_tensor_in rout, _megdnn_tensor_out dst, _megdnn_workspace workspace) {
20#if !MGE_BUILD_WITHOUT_NAIVE_EXEC
21 MIDOUT_BEGIN(megdnn_naive_region_restricted_conv_fwd) {
22 auto filter_meta = check_exec(
23 src.layout, filter.layout, rin.layout, rout.layout, dst.layout,
24 workspace.size);
25 using ComputeMode = Param::ComputeMode;
26#define DISPATCH_CMODE(in_dt, r_dt, out_dt, in_ct, r_ct, out_ct, comp_ct, cmode) \
27 do { \
28 using namespace dtype; \
29 if (src.layout.dtype.enumv() == DTypeTrait<in_dt>::enumv && \
30 dst.layout.dtype.enumv() == DTypeTrait<out_dt>::enumv && \
31 rin.layout.dtype.enumv() == DTypeTrait<r_dt>::enumv && \
32 rout.layout.dtype.enumv() == DTypeTrait<r_dt>::enumv && \
33 param().compute_mode == cmode) { \
34 MEGDNN_DISPATCH_CPU_KERN_OPR((convolution::region_restricted_forward< \
35 in_ct, in_ct, r_ct, out_ct, comp_ct>( \
36 src, filter, rin, rout, dst, filter_meta));); \
37 return; \
38 } \
39 } while (0);
40#define DISPATCH(in_dt, r_dt, out_dt, in_ct, r_ct, out_ct, comp_ct) \
41 DISPATCH_CMODE( \
42 in_dt, r_dt, out_dt, in_ct, r_ct, out_ct, comp_ct, ComputeMode::DEFAULT)
43#define cb(dt) \
44 DISPATCH( \
45 dt, Int32, dt, DTypeTrait<dt>::ctype, dt_int32, DTypeTrait<dt>::ctype, \
46 DTypeTrait<dt>::ctype) \
47 DISPATCH( \
48 dt, Uint8, dt, DTypeTrait<dt>::ctype, dt_uint8, DTypeTrait<dt>::ctype, \
49 DTypeTrait<dt>::ctype)
50 MEGDNN_FOREACH_COMPUTING_DTYPE_FLOAT(cb);
51#undef cb
52 DNN_INC_FLOAT16(DISPATCH_CMODE(
53 Float16, Int32, Float16, dt_float16, dt_int32, dt_float16, dt_float32,
54 ComputeMode::FLOAT32));
55 DNN_INC_FLOAT16(DISPATCH_CMODE(
56 Float16, Uint8, Float16, dt_float16, dt_uint8, dt_float16, dt_float32,
57 ComputeMode::FLOAT32));
58#undef DISPATCH
59 megdnn_throw(ssprintf(
60 "unsupported RegionRestrictedConv(%s, %s, %s, %s) -> %s with cmode = "
61 "%d",
62 src.layout.dtype.name(), filter.layout.dtype.name(),
63 rin.layout.dtype.name(), rout.layout.dtype.name(),
64 dst.layout.dtype.name(), static_cast<int>(param().compute_mode)));
65 }
66 MIDOUT_END();
67#else
68 __builtin_trap();
69#endif
70}
71
72size_t RegionRestrictedConvolutionBackwardDataImpl::get_workspace_in_bytes(
73 const TensorLayout& filter, const TensorLayout& diff, const TensorLayout& rin,

Callers

nothing calls this directly

Calls 2

paramFunction · 0.50
nameMethod · 0.45

Tested by

no test coverage detected