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

Function MIDOUT_BEGIN

dnn/src/naive/conv_bias/opr_impl.cpp:216–282  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

214 const PreprocessedFilter* preprocessed_filter, _megdnn_workspace workspace) {
215#if !MGE_BUILD_WITHOUT_NAIVE_EXEC
216 MIDOUT_BEGIN(megdnn_naive_conv_bias_fwd) {
217 dt_byte* workspace_ptr = workspace.raw_ptr;
218 // ============================w * f + b================================
219
220 auto filter_meta = check_exec_allow_noncontiguous(
221 src.layout, filter.layout, bias.layout, z.layout, dst.layout,
222 workspace.size, preprocessed_filter);
223 auto sfb = dst;
224 if (bias.layout.dtype.enumv() != dst.layout.dtype.enumv()) {
225 // intermediate result
226 sfb = TensorND{workspace_ptr, TensorLayout{dst.layout, bias.layout.dtype}};
227 workspace_ptr += sfb.layout.span().dist_byte();
228 }
229#define DISPATCH_RAW(in_dt, flt_dt, bias_dt, out_dt, cmode, func) \
230 else if ( \
231 src.layout.dtype.enumv() == DTypeTrait<dtype::in_dt>::enumv && \
232 filter.layout.dtype.enumv() == DTypeTrait<dtype::flt_dt>::enumv && \
233 bias.layout.dtype.enumv() == DTypeTrait<dtype::bias_dt>::enumv && \
234 sfb.layout.dtype.enumv() == DTypeTrait<dtype::out_dt>::enumv && \
235 param().compute_mode == Param::ComputeMode::cmode) { \
236 MEGDNN_DISPATCH_CPU_KERN_OPR( \
237 func(src, filter, bias, sfb, workspace_ptr, filter_meta)); \
238 }
239#define DISPATCH(in_dt, out_dt) \
240 DISPATCH_RAW( \
241 in_dt, in_dt, out_dt, out_dt, DEFAULT, \
242 (convolution::forward_bias< \
243 DTypeTrait<dtype::in_dt>::ctype, DTypeTrait<dtype::in_dt>::ctype, \
244 DTypeTrait<dtype::out_dt>::ctype, \
245 DTypeTrait<dtype::out_dt>::ctype>))
246 if (0) {
247 }
248 DISPATCH(Float32, Float32)
249 DISPATCH(Int8, Int16)
250 DISPATCH(Int8, Int32)
251 DISPATCH(QuantizedS8, QuantizedS32)
252 DISPATCH(QuantizedS8, Float32)
253 DISPATCH(Quantized8Asymm, QuantizedS32)
254 DISPATCH(Quantized4Asymm, QuantizedS32)
255 DISPATCH_RAW(
256 QuantizedS8, QuantizedS8, QuantizedS32, QuantizedS32, FLOAT32,
257 (convolution::forward_bias<dt_int8, dt_int8, dt_int32, dt_int32>))
258 DISPATCH(QuantizedS4, QuantizedS32)
259 DISPATCH_RAW(
260 Quantized4Asymm, QuantizedS4, QuantizedS32, QuantizedS32, DEFAULT,
261 (convolution::forward_bias<dt_quint4, dt_qint4, dt_qint32, dt_qint32>))
262 DISPATCH_RAW(
263 QuantizedS1, QuantizedS1, QuantizedS32, QuantizedS32, FLOAT32,
264 (convolution::forward_bias<dt_qint1, dt_qint1, dt_qint32, dt_qint32>))
265#if !MEGDNN_DISABLE_FLOAT16
266 DISPATCH(Float16, Float16)
267 DISPATCH_RAW(
268 Float16, Float16, Float16, Float16, FLOAT32,
269 (convolution::forward_bias<
270 dt_float16, dt_float16, dt_float16, dt_float32>))
271 DISPATCH_RAW(
272 BFloat16, BFloat16, BFloat16, BFloat16, FLOAT32,
273 (convolution::forward_bias<

Callers 1

cvt_bt601_yuv<uchar>Function · 0.50

Calls 4

dist_byteMethod · 0.80
spanMethod · 0.80
enumvMethod · 0.45
nameMethod · 0.45

Tested by

no test coverage detected