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

Method exec

dnn/src/naive/checksum/opr_impl.cpp:15–39  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

13}
14
15ChecksumForward::Result ChecksumForwardImpl::exec(
16 _megdnn_tensor_in data, _megdnn_workspace workspace) {
17 check_exec(data.layout, workspace.size);
18
19 Result result;
20 bool finished = false;
21 auto run = [&]() {
22 auto ptr = static_cast<uint8_t*>(data.raw_ptr());
23 size_t size_all = data.layout.shape[0], size_ints = size_all / sizeof(uint32_t);
24 result.last_val.iv = 0;
25 auto last_val_size = std::min<size_t>(size_all, 4);
26 memcpy(&result.last_val, ptr + size_all - last_val_size, last_val_size);
27 result.checksum = 0;
28 auto iptr = static_cast<uint32_t*>(data.raw_ptr());
29 for (size_t i = 0; i < size_ints; ++i)
30 result.checksum += iptr[i] * (i + 1);
31
32 finished = true;
33 };
34 auto handle = static_cast<HandleImpl*>(this->handle());
35 handle->dispatch_kern(run);
36 handle->megcore_dispatcher()->sync();
37 megdnn_assert(finished);
38 return result;
39}
40
41// vim: syntax=cpp.doxygen

Callers

nothing calls this directly

Calls 5

megcore_dispatcherMethod · 0.80
raw_ptrMethod · 0.45
handleMethod · 0.45
dispatch_kernMethod · 0.45
syncMethod · 0.45

Tested by

no test coverage detected