Browse Source

feat(opcache): add ndim and has_value to cache key

GitOrigin-RevId: ad073d389e
tags/v1.9.0
Megvii Engine Team 3 years ago
parent
commit
9527859cc8
1 changed files with 9 additions and 1 deletions
  1. +9
    -1
      imperative/src/include/megbrain/imperative/graph_cache.h

+ 9
- 1
imperative/src/include/megbrain/imperative/graph_cache.h View File

@@ -44,6 +44,12 @@ struct OpMethArgs {
if (inputs[i].layout.dtype != rhs.inputs[i].layout.dtype) {
return false;
}
if (inputs[i].layout.ndim != rhs.inputs[i].layout.ndim) {
return false;
}
if (inputs[i].value.empty() != rhs.inputs[i].value.empty()) {
return false;
}
}
return extras == rhs.extras;
}
@@ -57,12 +63,14 @@ template <typename... TExtraArgs>
inline size_t OpMethArgs<TExtraArgs...>::hash() const {
XXHash state;
size_t length = 0;
size_t data[1 + 2 * inputs.size() + sizeof...(TExtraArgs)];
size_t data[1 + 4 * inputs.size() + sizeof...(TExtraArgs)];
auto append = [&](size_t hash) { data[length++] = hash; };
append(op->hash());
for (auto&& i : inputs) {
append(mgb::hash(i.layout.dtype.handle()));
append(mgb::hash(i.comp_node));
append(mgb::hash(i.layout.ndim));
append(mgb::hash(i.value.empty()));
}
std::apply([&](auto&&... extras) { (append(mgb::hash(extras)), ...); }, extras);
mgb_assert(length == sizeof(data) / sizeof(size_t));


Loading…
Cancel
Save