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

Method exec

dnn/src/cambricon/checksum/opr_impl.cpp:30–55  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

28}
29
30ChecksumForward::Result ChecksumForwardImpl::exec(
31 _megdnn_tensor_in data, _megdnn_workspace workspace) {
32 Result result;
33 memset(&result, 0, sizeof(result));
34 check_exec(data.layout, workspace.size);
35 auto queue = cnrt_queue(handle());
36
37 auto ptr = static_cast<uint8_t*>(data.raw_ptr());
38 size_t size_all = data.layout.shape[0], size_ints = size_all / sizeof(uint32_t);
39 auto last_val_size = std::min<size_t>(size_all, 4);
40 cnrt_check(cnrtMemcpyAsync(
41 &result.last_val, ptr + size_all - last_val_size, last_val_size, queue,
42 CNRT_MEM_TRANS_DIR_DEV2HOST));
43 if (size_ints) {
44 auto&& device_info = current_device_info();
45 bang_c_wrapper(
46 reinterpret_cast<uint32_t*>(workspace.raw_ptr),
47 static_cast<uint32_t*>(data.raw_ptr()), size_ints, queue,
48 device_info.ISAVersion);
49 cnrt_check(cnrtMemcpyAsync(
50 &result.checksum, workspace.raw_ptr, sizeof(result.checksum), queue,
51 CNRT_MEM_TRANS_DIR_DEV2HOST));
52 }
53 cnrt_check(cnrtQueueSync(queue));
54 return result;
55}
56
57// vim: syntax=cpp.doxygen

Callers

nothing calls this directly

Calls 3

cnrt_queueFunction · 0.85
bang_c_wrapperFunction · 0.85
raw_ptrMethod · 0.45

Tested by

no test coverage detected