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

Method exec

dnn/src/cuda/lsq/opr_impl.cpp:7–37  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

5namespace cuda {
6
7void LSQForwardImpl::exec(
8 _megdnn_tensor_in input, _megdnn_tensor_in scale, _megdnn_tensor_in zero_point,
9 _megdnn_tensor_in grad_scale, _megdnn_tensor_out output,
10 _megdnn_workspace workspace) {
11 check_exec(
12 input.layout, scale.layout, zero_point.layout, grad_scale.layout,
13 output.layout, workspace.size);
14
15 if (!input.layout.is_contiguous() || !output.layout.is_contiguous())
16 return exec_noncontig(input, scale, zero_point, grad_scale, output);
17
18 ElemwiseOpParamN<3> ele_param;
19 ele_param[0] = scale;
20 ele_param[0].layout = ele_param[0].layout.broadcast(input.layout);
21 ele_param[1] = zero_point;
22 ele_param[1].layout = ele_param[1].layout.broadcast(input.layout);
23 ele_param[2] = grad_scale;
24 ele_param[2].layout = ele_param[2].layout.broadcast(input.layout);
25 ele_param.init_from_given_tensor();
26 auto m_param = param();
27 auto stream = cuda_stream(handle());
28
29#define cb(DType) \
30 if (input.layout.dtype == DType()) { \
31 using T = typename DTypeTrait<DType>::ctype; \
32 run_elemwise<LSQKernOp<T>, T, 3>(ele_param, stream, {input, output, m_param}); \
33 return; \
34 }
35 cb(megdnn::dtype::Float32)
36#undef cb
37}
38
39void LSQForwardImpl::exec_noncontig(
40 _megdnn_tensor_in input, _megdnn_tensor_in scale, _megdnn_tensor_in zero_point,

Callers

nothing calls this directly

Calls 6

cuda_streamFunction · 0.85
paramFunction · 0.50
cbFunction · 0.50
is_contiguousMethod · 0.45
broadcastMethod · 0.45

Tested by

no test coverage detected