diff options
-rw-r--r-- | include/armnn/BackendId.hpp | 45 | ||||
-rw-r--r-- | src/armnn/WallClockTimer.hpp | 10 |
2 files changed, 34 insertions, 21 deletions
diff --git a/include/armnn/BackendId.hpp b/include/armnn/BackendId.hpp index 72248bca34..8de985ec2f 100644 --- a/include/armnn/BackendId.hpp +++ b/include/armnn/BackendId.hpp @@ -132,31 +132,14 @@ private: std::string m_Id; }; -inline std::ostream& operator<<(std::ostream& os, const BackendId& id) -{ - os << id.Get(); - return os; -} - -template <template <class...> class TContainer> -inline std::ostream& operator<<(std::ostream& os, - const TContainer<BackendId>& ids) -{ - os << '['; - for (const auto& id : ids) { os << id << " "; } - os << ']'; - return os; } -using BackendIdSet = std::unordered_set<BackendId>; - -} // namespace armnn - namespace std { // make BackendId compatible with std hashtables by reusing the hash -// function for strings +// function for strings. +// Note this must come *before* the first use of unordered_set<BackendId>. template <> struct hash<armnn::BackendId> { @@ -168,3 +151,27 @@ struct hash<armnn::BackendId> }; } // namespace std + +namespace armnn +{ + +inline std::ostream& operator<<(std::ostream& os, const BackendId& id) +{ + os << id.Get(); + return os; +} + +template <template <typename...> class TContainer, typename... TContainerTemplateArgs> +std::ostream& operator<<(std::ostream& os, + const TContainer<BackendId, TContainerTemplateArgs...>& ids) +{ + os << '['; + for (const auto& id : ids) { os << id << " "; } + os << ']'; + return os; +} + +using BackendIdSet = std::unordered_set<BackendId>; + +} // namespace armnn + diff --git a/src/armnn/WallClockTimer.hpp b/src/armnn/WallClockTimer.hpp index 88cbb4d50d..197ad7d1b7 100644 --- a/src/armnn/WallClockTimer.hpp +++ b/src/armnn/WallClockTimer.hpp @@ -11,7 +11,7 @@ namespace armnn { -// Clock class that uses the same timestamp function as the Mali DDK. +// Clock class that uses the same timestamp function as the Mali DDK where possible. class monotonic_clock_raw { public: using duration = std::chrono::nanoseconds; @@ -19,9 +19,15 @@ public: static std::chrono::time_point<monotonic_clock_raw, std::chrono::nanoseconds> now() noexcept { +#if defined(__unix__) timespec ts; clock_gettime(CLOCK_MONOTONIC_RAW, &ts); - return time_point(std::chrono::nanoseconds(ts.tv_sec*1000000000 + ts.tv_nsec)); + return time_point(std::chrono::nanoseconds(ts.tv_sec * 1000000000 + ts.tv_nsec)); +#else + // On other platforms we have to make do with the standard C++ API, which may not exactly match + // the Mali DDK. + return std::chrono::time_point<monotonic_clock_raw, std::chrono::nanoseconds>(); +#endif } }; |