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

Method hash

imperative/src/include/megbrain/imperative/graph_cache.h:56–72  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

54
55template <typename... TExtraArgs>
56inline size_t OpMethArgs<TExtraArgs...>::hash() const {
57 XXHash state;
58 size_t length = 0;
59 size_t data[1 + 4 * inputs.size() + sizeof...(TExtraArgs)];
60 auto append = [&](size_t hash) { data[length++] = hash; };
61 append(op->hash());
62 for (auto&& i : inputs) {
63 append(mgb::hash(i.layout.dtype.handle()));
64 append(mgb::hash(i.comp_node));
65 append(mgb::hash(i.layout.ndim));
66 append(mgb::hash(i.value.empty()));
67 }
68 std::apply([&](auto&&... extras) { (append(mgb::hash(extras)), ...); }, extras);
69 mgb_assert(length == sizeof(data) / sizeof(size_t));
70 state.update(data, sizeof(data));
71 return state.digest();
72}
73
74template <typename TValue, typename... TExtraArgs>
75struct OpMethResultCache : std::unordered_map<

Callers 1

operator()Method · 0.45

Calls 7

applyFunction · 0.70
hashFunction · 0.50
sizeMethod · 0.45
handleMethod · 0.45
emptyMethod · 0.45
updateMethod · 0.45
digestMethod · 0.45

Tested by

no test coverage detected