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

Method calc

imperative/src/impl/tensor_sanity_check.cpp:9–38  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

7namespace imperative {
8
9TensorChecksumCalc::ChecksumResult TensorChecksumCalc::calc(TensorPtr ptr) {
10 auto&& dt = ptr->dev_tensor();
11 if (!dt.layout().total_nr_elems()) {
12 static ChecksumResult empty_checksum;
13 return empty_checksum;
14 }
15
16 auto span = dt.layout().span();
17 megdnn::TensorND tensor;
18 tensor.reset_ptr(dt.raw_ptr() + span.low_byte);
19 tensor.layout.init_contiguous_stride({span.dist_byte()});
20 tensor.layout.dtype = dtype::Byte();
21
22 DeviceTensorStorage* workspace;
23 {
24 MGB_LOCK_GUARD(m_workspace_mtx);
25 workspace = &m_workspace[std::this_thread::get_id()].storage[ptr->comp_node()];
26 }
27 auto comp_node = ptr->comp_node();
28 comp_node.activate();
29 auto opr = opr::intl::get_megdnn_global_opr<megdnn::Checksum>(comp_node);
30 auto workspace_reqsize = opr->get_workspace_in_bytes(tensor.layout);
31 workspace->comp_node(ptr->comp_node()).ensure_size(workspace_reqsize);
32
33 megdnn::Workspace mwk;
34 if (workspace_reqsize)
35 mwk = {workspace->ptr(), workspace_reqsize};
36
37 return opr->exec(tensor, mwk);
38}
39
40class TensorSanityCheckImpl {
41public:

Callers 1

checkMethod · 0.80

Calls 13

spanMethod · 0.80
reset_ptrMethod · 0.80
dist_byteMethod · 0.80
dev_tensorMethod · 0.45
total_nr_elemsMethod · 0.45
layoutMethod · 0.45
raw_ptrMethod · 0.45
comp_nodeMethod · 0.45
activateMethod · 0.45
ptrMethod · 0.45

Tested by

no test coverage detected