| /* |
| * Copyright (c) 2021 Arm Limited. All rights reserved. |
| * |
| * SPDX-License-Identifier: Apache-2.0 |
| * |
| * Licensed under the Apache License, Version 2.0 (the License); you may |
| * not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an AS IS BASIS, WITHOUT |
| * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| #ifndef ETHOSU_PROFILER_H |
| #define ETHOSU_PROFILER_H |
| |
| #include "tensorflow/lite/kernels/internal/compatibility.h" |
| #include <memory> |
| #include <pmu_ethosu.h> |
| |
| // NOTE: This profiler only works on systems with 1 NPU due to the use of |
| // ethosu_reserve_driver(). |
| namespace tflite { |
| class EthosUProfiler : public MicroProfiler { |
| public: |
| EthosUProfiler(size_t max_events = 200); |
| uint32_t BeginEvent(const char *tag); |
| void EndEvent(uint32_t event_handle); |
| uint64_t GetTotalTicks() const; |
| void Log() const; |
| |
| private: |
| size_t max_events_; |
| std::unique_ptr<const char *[]> tags_; |
| std::unique_ptr<uint64_t[]> start_ticks_; |
| std::unique_ptr<uint64_t[]> end_ticks_; |
| |
| int num_events_ = 0; |
| |
| TF_LITE_REMOVE_VIRTUAL_DELETE; |
| }; |
| |
| } // namespace tflite |
| |
| #endif |