From 462364eb06f9e40f11a07116cc3fb01b6c235dee Mon Sep 17 00:00:00 2001 From: Megvii Engine Team Date: Fri, 14 Jan 2022 12:51:41 +0800 Subject: [PATCH] perf(interpreter): don't check host value if unnecessary GitOrigin-RevId: 5306c71328d10cbb9335cdf2b5765f7dbf0023d9 --- imperative/src/impl/interpreter/interpreter_impl.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/imperative/src/impl/interpreter/interpreter_impl.cpp b/imperative/src/impl/interpreter/interpreter_impl.cpp index ecf63e654..45fda4dbf 100644 --- a/imperative/src/impl/interpreter/interpreter_impl.cpp +++ b/imperative/src/impl/interpreter/interpreter_impl.cpp @@ -935,13 +935,14 @@ TensorPtr ChannelImpl::wait_tensor(TensorInfo* info, TensorProp prop) { MGB_RECORD_EVENT(TensorWaitPropEvent, info->id, m_waitee_id, prop); bool require_host = prop == TensorProp::HostValue; auto host_available = [&] { return info->ptr && info->ptr->value_fetched(); }; - bool wait_host = !host_available(); - if (require_host && wait_host) { + bool wait_host = false; + if (require_host && !host_available()) { // avoid dead lock lock.unlock(); m_buffer.enqueue(GetValue{info}); m_buffer.flush(); lock.lock(); + wait_host = true; } m_cv.wait(lock, [&]() { check_worker_exc_unsafe(); @@ -949,7 +950,7 @@ TensorPtr ChannelImpl::wait_tensor(TensorInfo* info, TensorProp prop) { }); MGB_RECORD_EVENT(TensorWaitPropFinishEvent, info->id, m_waitee_id, prop); m_waitee = nullptr; - if (require_host && wait_host) { + if (wait_host) { auto err = info->ptr->comp_node().check_async_error(); mgb_assert(!err, "%s", err->what()); } -- GitLab