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

Method exec

dnn/src/cuda/padding/opr_impl.cpp:14–46  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

12}
13
14void PaddingForwardImpl::exec(_megdnn_tensor_in src, _megdnn_tensor_out dst) {
15 forward_check_exec(src.layout, dst.layout);
16 SmallVector<size_t> offsets(get_offsets());
17 // SamllVector can not be used as argument in cu file
18 size_t param_offsets[MEGDNN_MAX_NDIM * 2] = {
19 offsets[0], offsets[1], offsets[2], offsets[3], offsets[4],
20 offsets[5], offsets[6], offsets[7], offsets[8], offsets[9],
21 offsets[10], offsets[11], offsets[12], offsets[13]};
22 auto stream = cuda_stream(this->handle());
23 if (src.layout.ndim == 4 && is_conv_pad(param_offsets)) {
24#define cb(DType) \
25 if (src.layout.dtype.enumv() == DTypeTrait<DType>::enumv) { \
26 using ctype = typename DTypeTrait<DType>::ctype; \
27 padding::pad4d_forward_proxy<ctype>( \
28 src, dst, param_offsets, uint32_t(param().padding_mode), \
29 param().padding_val, stream); \
30 }
31 MEGDNN_FOREACH_COMPUTING_DTYPE(cb)
32 MEGDNN_FOREACH_QUANTIZED_DTYPE(cb)
33#undef cb
34 } else {
35#define cb(DType) \
36 if (src.layout.dtype.enumv() == DTypeTrait<DType>::enumv) { \
37 using ctype = typename DTypeTrait<DType>::ctype; \
38 padding::padding_forward_proxy<ctype>( \
39 src, dst, param_offsets, uint32_t(param().padding_mode), \
40 param().padding_val, stream); \
41 }
42 MEGDNN_FOREACH_COMPUTING_DTYPE(cb)
43 MEGDNN_FOREACH_QUANTIZED_DTYPE(cb)
44#undef cb
45 }
46}
47
48void PaddingBackwardImpl::exec(_megdnn_tensor_in src, _megdnn_tensor_out dst) {
49 backward_check_exec(src.layout, dst.layout);

Callers

nothing calls this directly

Calls 4

get_offsetsFunction · 0.85
cuda_streamFunction · 0.85
is_conv_padFunction · 0.85
handleMethod · 0.45

Tested by

no test coverage detected