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

Method exec

dnn/src/cuda/convolution/backward_data/group_conv.cpp:89–117  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

87}
88
89void ConvolutionBackwardDataImpl::AlgoGroupConvGeneral::exec(
90 const ExecArgs& args) const {
91 auto bundle = get_workspace_bundle(args.workspace.raw_ptr, args);
92 {
93 auto config = prepare_sub_opr(args);
94 TensorND tfilter{args.filter_tensor->raw_ptr(), config.first[0]};
95 TensorND tdiff{args.diff_tensor->raw_ptr(), config.first[1]};
96 TensorND tgrad{args.grad_tensor->raw_ptr(), config.first[2]};
97
98 size_t c_pos = 1;
99
100 auto&& fm = args.filter_meta;
101
102 auto strd_flt = fm.icpg * fm.ocpg * fm.spatial[0] * fm.spatial[1] *
103 tfilter.layout.dtype.size(),
104 strd_diff =
105 tdiff.layout.stride[c_pos] * fm.ocpg * tdiff.layout.dtype.size(),
106 strd_grad =
107 (tgrad.layout.stride[c_pos] * fm.icpg * tgrad.layout.dtype.size());
108
109 auto grp = args.filter_meta.group;
110 for (uint32_t g = 0; g < grp; ++g) {
111 config.second->exec(tfilter, tdiff, tgrad, bundle.get_workspace(0));
112 incr_refp(tfilter.get_ref_ptr(), strd_flt);
113 incr_refp(tdiff.get_ref_ptr(), strd_diff);
114 incr_refp(tgrad.get_ref_ptr(), strd_grad);
115 }
116 }
117}
118
119// vim: syntax=cpp.doxygen

Callers

nothing calls this directly

Calls 7

incr_refpFunction · 0.85
prepare_sub_oprFunction · 0.70
get_workspace_bundleFunction · 0.50
raw_ptrMethod · 0.45
sizeMethod · 0.45
get_workspaceMethod · 0.45
get_ref_ptrMethod · 0.45

Tested by

no test coverage detected