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

Method exec

dnn/src/armv7/relayout/opr_impl.cpp:112–135  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

110} // namespace megdnn
111
112void armv7::RelayoutForwardImpl::exec(
113 _megdnn_tensor_in src0, _megdnn_tensor_out dst0, Handle* src_handle) {
114 check_cpu_handle(src_handle);
115 TensorND src = src0, dst = dst0;
116 check_layout_and_canonize(src.layout, dst.layout);
117
118 // FIXME: optimize for lowbit cases
119 if (src.layout.dtype.enumv() == DTypeEnum::QuantizedS4 ||
120 src.layout.dtype.enumv() == DTypeEnum::Quantized4Asymm) {
121 fallback::RelayoutForwardImpl::exec(src0, dst0, src_handle);
122 return;
123 }
124
125 relayout::TransposeParam trans_param;
126 bool trans = relayout::is_transpose(src.layout, dst.layout, trans_param);
127 if (trans && trans_param.c == 1 && src0.layout.dtype.size() == 1) {
128 MEGDNN_DISPATCH_CPU_KERN_OPR(transpose_fallback::transpose<TransposeByte>(
129 trans_param.batch, trans_param.m, trans_param.n,
130 static_cast<TransposeByte*>(src.raw_ptr()),
131 static_cast<TransposeByte*>(dst.raw_ptr())));
132 return;
133 }
134 exec_after_preprocess(src, dst, trans ? &trans_param : nullptr);
135}
136
137// vim: syntax=cpp.doxygen

Callers

nothing calls this directly

Calls 5

execFunction · 0.50
enumvMethod · 0.45
sizeMethod · 0.45
raw_ptrMethod · 0.45

Tested by

no test coverage detected