From 82d225899bd3d4fd07d70cac80f50c1b288dc4a3 Mon Sep 17 00:00:00 2001 From: Davide Grohmann Date: Mon, 25 Apr 2022 12:52:38 +0200 Subject: Add support for rejected inference responses Change-Id: I62e13df69c712ed4cf70766429b4cb13fc9c9dcb --- driver_library/src/ethosu.cpp | 29 +++++++++++++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) (limited to 'driver_library/src/ethosu.cpp') diff --git a/driver_library/src/ethosu.cpp b/driver_library/src/ethosu.cpp index 2b1da45..0da30c3 100644 --- a/driver_library/src/ethosu.cpp +++ b/driver_library/src/ethosu.cpp @@ -330,6 +330,20 @@ size_t Network::getOfmSize() const { * Inference ****************************************************************************/ +ostream &operator<<(ostream &out, const InferenceStatus &status) { + switch (status) { + case InferenceStatus::OK: + return out << "ok"; + case InferenceStatus::ERROR: + return out << "error"; + case InferenceStatus::RUNNING: + return out << "running"; + case InferenceStatus::REJECTED: + return out << "rejected"; + } + throw Exception("Unknown inference status"); +} + Inference::~Inference() noexcept(false) { eclose(fd); } @@ -395,12 +409,23 @@ int Inference::wait(int64_t timeoutNanos) const { return eppoll(&pfd, 1, &tmo_p, NULL); } -bool Inference::failed() const { +InferenceStatus Inference::status() const { ethosu_uapi_result_status uapi; eioctl(fd, ETHOSU_IOCTL_INFERENCE_STATUS, static_cast(&uapi)); - return uapi.status != ETHOSU_UAPI_STATUS_OK; + switch (uapi.status) { + case ETHOSU_UAPI_STATUS_OK: + return InferenceStatus::OK; + case ETHOSU_UAPI_STATUS_ERROR: + return InferenceStatus::ERROR; + case ETHOSU_UAPI_STATUS_RUNNING: + return InferenceStatus::RUNNING; + case ETHOSU_UAPI_STATUS_REJECTED: + return InferenceStatus::REJECTED; + } + + throw Exception("Unknown inference status"); } const std::vector Inference::getPmuCounters() const { -- cgit v1.2.1