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

Method kern_fallback_multi_src

dnn/src/fallback/warp_perspective/opr_impl.cpp:149–209  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

147
148template <typename ctype, typename mtype>
149void WarpPerspectiveImpl::kern_fallback_multi_src(
150 const KernParam<ctype, mtype>& kern_param) {
151 UNPACK_WARP_PERSPECTIVE_FWD_KERN_PARAM(kern_param);
152 // cause error if accidentally used
153 sptr = nullptr;
154 mptr = nullptr;
155 dptr = nullptr;
156 MEGDNN_MARK_USED_VAR(sptr);
157 MEGDNN_MARK_USED_VAR(mptr);
158 MEGDNN_MARK_USED_VAR(dptr);
159 MEGDNN_MARK_USED_VAR(border_val);
160
161 MEGDNN_MARK_USED_VAR(IH);
162 MEGDNN_MARK_USED_VAR(IW);
163 KernParam<ctype, mtype> sub_param = kern_param;
164 sub_param.n_src = 1;
165 sub_param.n_mat = 1;
166 sub_param.midx_ptr = RefPtr();
167 sub_param.src_ptr = RefPtr(kern_param.srcs_ptr.front().get_ptr());
168 sub_param.mat_ptr = RefPtr(kern_param.mat_ptr.get_ptr());
169 sub_param.dst_ptr = RefPtr(kern_param.dst_ptr.get_ptr());
170 sub_param.srcs_ptr = kern_param.srcs_ptr;
171
172 rep(n, N_MAT) {
173 if (midx_ptr) {
174 size_t idx = midx_ptr[n];
175 megdnn_assert(
176 idx < N_SRC, "mat_idx out of bound: mat_idx[%zu]=%zu src_batch=%zu",
177 n, idx, N_SRC);
178 sub_param.src_ptr.reset(
179 static_cast<ctype*>(kern_param.srcs_ptr[idx].get_ptr()));
180 } else if (n) {
181 sub_param.src_ptr.reset(
182 static_cast<ctype*>(kern_param.srcs_ptr[n].get_ptr()));
183 }
184 if (is_resize_optimizable(static_cast<mtype*>(sub_param.mat_ptr.get_ptr()))) {
185 if (bmode == BorderMode::CONSTANT) {
186 MIDOUT_BEGIN(
187 megdnn_fallback_warpperspective, midout_iv(1), midout_iv(true),
188 ctype, mtype) {
189 kern_resize<true, ctype, mtype>(sub_param);
190 }
191 MIDOUT_END();
192 } else {
193 MIDOUT_BEGIN(
194 megdnn_fallback_warpperspective, midout_iv(1), midout_iv(false),
195 ctype, mtype) {
196 kern_resize<false, ctype, mtype>(sub_param);
197 }
198 MIDOUT_END();
199 }
200 } else {
201 MIDOUT_BEGIN(megdnn_fallback_warpperspective, midout_iv(2), ctype, mtype) {
202 rep(oh, OH) kern_naive<ctype, mtype>(sub_param, oh);
203 }
204 MIDOUT_END();
205 }
206 sub_param.mat_ptr += 3 * 3 * sizeof(mtype);

Callers

nothing calls this directly

Calls 3

RefPtrClass · 0.85
get_ptrMethod · 0.80
frontMethod · 0.80

Tested by

no test coverage detected