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

Method exec

dnn/src/cambricon/param_pack/opr_impl.cpp:16–37  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

14}
15
16void ParamPackConcatImpl::exec(
17 _megdnn_tensor_in srcs, _megdnn_tensor_in offsets, _megdnn_tensor_out dst,
18 _megdnn_workspace workspace) {
19 check_exec(dst.layout, offsets.layout, srcs.layout);
20 auto queue = cnrt_queue(this->handle());
21
22 size_t inp_size = srcs.layout.shape[0], out_size = dst.layout.total_nr_elems();
23 size_t dtype_size = dst.layout.dtype.size();
24
25 const void** src_cpu = static_cast<const void**>(srcs.raw_ptr());
26 megdnn_assert_internal(src_cpu);
27 const void** src_gpu = reinterpret_cast<const void**>(workspace.raw_ptr);
28
29 int32_t* offsets_gpu = offsets.ptr<int32_t>();
30 cnrt_check(cnrtMemcpyAsync(
31 src_gpu, src_cpu, sizeof(void*) * inp_size, queue, cnrtMemcpyHostToDev));
32 cnrt_check(cnrtMemsetAsync(dst.raw_ptr(), 0, out_size * dtype_size, queue));
33
34 auto bang_handle = concrete_banghandle(this->handle());
35 param_pack::concat_proxy(
36 bang_handle, src_gpu, dst.raw_ptr(), offsets_gpu, dtype_size, inp_size);
37}
38
39} // namespace cambricon
40} // namespace megdnn

Callers

nothing calls this directly

Calls 6

cnrt_queueFunction · 0.85
concrete_banghandleFunction · 0.85
handleMethod · 0.45
total_nr_elemsMethod · 0.45
sizeMethod · 0.45
raw_ptrMethod · 0.45

Tested by

no test coverage detected