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

Method get_workspace_bundle

dnn/src/cuda/svd/opr_impl.cpp:43–57  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

41namespace cuda {
42
43WorkspaceBundle SVDForwardImpl::get_workspace_bundle(
44 size_t block_cnt, size_t m, size_t n, size_t dtype_size, void* raw_ptr) {
45 const size_t max_mn = std::max(m, n);
46 const size_t min_mn = std::min(m, n);
47 SmallVector<size_t> ws_sizes = {
48 block_cnt * m * n * dtype_size, // copy of src
49 get_cusolver_buffer_size(max_mn, min_mn) * dtype_size,
50 sizeof(int) // devInfo
51 };
52 if (m > n) {
53 ws_sizes.push_back(block_cnt * max_mn * max_mn * dtype_size);
54 ws_sizes.push_back(block_cnt * min_mn * min_mn * dtype_size);
55 }
56 return {raw_ptr, std::move(ws_sizes), handle()->alignment_requirement()};
57}
58
59size_t SVDForwardImpl::get_cusolver_buffer_size(size_t m, size_t n) {
60 int lwork;

Callers 2

execMethod · 0.45

Calls 4

maxFunction · 0.85
minFunction · 0.50
push_backMethod · 0.45
alignment_requirementMethod · 0.45

Tested by

no test coverage detected