提交 9527859c 编写于 作者: M Megvii Engine Team

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

GitOrigin-RevId: ad073d389eeddb33bf58652a40abed7b621bc837
上级 cbb47089
...@@ -44,6 +44,12 @@ struct OpMethArgs { ...@@ -44,6 +44,12 @@ struct OpMethArgs {
if (inputs[i].layout.dtype != rhs.inputs[i].layout.dtype) { if (inputs[i].layout.dtype != rhs.inputs[i].layout.dtype) {
return false; 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; return extras == rhs.extras;
} }
...@@ -57,12 +63,14 @@ template <typename... TExtraArgs> ...@@ -57,12 +63,14 @@ template <typename... TExtraArgs>
inline size_t OpMethArgs<TExtraArgs...>::hash() const { inline size_t OpMethArgs<TExtraArgs...>::hash() const {
XXHash state; XXHash state;
size_t length = 0; 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; }; auto append = [&](size_t hash) { data[length++] = hash; };
append(op->hash()); append(op->hash());
for (auto&& i : inputs) { for (auto&& i : inputs) {
append(mgb::hash(i.layout.dtype.handle())); append(mgb::hash(i.layout.dtype.handle()));
append(mgb::hash(i.comp_node)); 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); std::apply([&](auto&&... extras) { (append(mgb::hash(extras)), ...); }, extras);
mgb_assert(length == sizeof(data) / sizeof(size_t)); mgb_assert(length == sizeof(data) / sizeof(size_t));
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册