aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMikael Olsson <mikael.olsson@arm.com>2023-12-11 17:24:49 +0100
committerMikael Olsson <mikael.olsson@arm.com>2023-12-15 14:09:43 +0100
commit578af8fd1f88cc50ee44498ddd3b879eba686c86 (patch)
treea9c5edd2bfb09114d672dfdf8eddb261458ab70d
parentd9afc0ab30060517f5a18efc7c70f412d0d99340 (diff)
downloadethos-u-core-software-578af8fd1f88cc50ee44498ddd3b879eba686c86.tar.gz
Add NPU placeholder profiler lib24.02-rc124.02
A placeholder profiler lib has been added with weak functions that can be implemented to add further profiling functionality. Change-Id: I111d0188c8e7d2b55106e8a93ca4a048faddb263 Signed-off-by: Mikael Olsson <mikael.olsson@arm.com>
-rw-r--r--lib/CMakeLists.txt6
-rw-r--r--lib/ethosu_profiler/CMakeLists.txt21
-rw-r--r--lib/ethosu_profiler/include/ethosu_profiler.hpp45
-rw-r--r--lib/ethosu_profiler/src/ethosu_profiler.cpp53
4 files changed, 123 insertions, 2 deletions
diff --git a/lib/CMakeLists.txt b/lib/CMakeLists.txt
index 06e660b..ed7aad1 100644
--- a/lib/CMakeLists.txt
+++ b/lib/CMakeLists.txt
@@ -1,6 +1,5 @@
#
-# Copyright (c) 2021-2022 Arm Limited. All rights reserved.
-#
+# SPDX-FileCopyrightText: Copyright 2021-2023 Arm Limited and/or its affiliates <open-source-office@arm.com>
# SPDX-License-Identifier: Apache-2.0
#
# Licensed under the Apache License, Version 2.0 (the License); you may
@@ -28,5 +27,8 @@ add_subdirectory(ethosu_monitor)
# Build ethosu_logging
add_subdirectory(ethosu_log)
+# Build ethosu_profiler
+add_subdirectory(ethosu_profiler)
+
# Build crc lib
add_subdirectory(crc)
diff --git a/lib/ethosu_profiler/CMakeLists.txt b/lib/ethosu_profiler/CMakeLists.txt
new file mode 100644
index 0000000..85ef7d9
--- /dev/null
+++ b/lib/ethosu_profiler/CMakeLists.txt
@@ -0,0 +1,21 @@
+#
+# SPDX-FileCopyrightText: Copyright 2023 Arm Limited and/or its affiliates <open-source-office@arm.com>
+# 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.
+#
+
+add_library(ethosu_profiler STATIC)
+
+target_include_directories(ethosu_profiler PUBLIC include)
+target_sources(ethosu_profiler PRIVATE src/ethosu_profiler.cpp)
diff --git a/lib/ethosu_profiler/include/ethosu_profiler.hpp b/lib/ethosu_profiler/include/ethosu_profiler.hpp
new file mode 100644
index 0000000..dc56d0b
--- /dev/null
+++ b/lib/ethosu_profiler/include/ethosu_profiler.hpp
@@ -0,0 +1,45 @@
+/*
+ * SPDX-FileCopyrightText: Copyright 2023 Arm Limited and/or its affiliates <open-source-office@arm.com>
+ * 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.
+ */
+
+#pragma once
+
+#include <stdint.h>
+
+#if defined __has_include
+#if __has_include(<ethosu_profiler_impl.hpp>)
+#define HAS_IMPL
+#include <ethosu_profiler_impl.hpp>
+#endif
+#endif
+
+#ifndef HAS_IMPL
+struct ethosu_profiler_context {};
+#endif
+
+void ethosu_profiler_start(struct ethosu_profiler_context *ctx);
+
+void ethosu_profiler_end(struct ethosu_profiler_context *ctx);
+
+void ethosu_profiler_reset(struct ethosu_profiler_context *ctx);
+
+uint64_t ethosu_profiler_get_pmu_cycles(struct ethosu_profiler_context *ctx);
+
+void ethosu_profiler_add_to_pmu_cycles(struct ethosu_profiler_context *ctx, uint64_t cycles);
+
+void ethosu_profiler_add_to_pmu_event(struct ethosu_profiler_context *ctx, uint32_t index, uint32_t value);
+
+void ethosu_profiler_report(struct ethosu_profiler_context *ctx);
diff --git a/lib/ethosu_profiler/src/ethosu_profiler.cpp b/lib/ethosu_profiler/src/ethosu_profiler.cpp
new file mode 100644
index 0000000..6a2c788
--- /dev/null
+++ b/lib/ethosu_profiler/src/ethosu_profiler.cpp
@@ -0,0 +1,53 @@
+/*
+ * SPDX-FileCopyrightText: Copyright 2023 Arm Limited and/or its affiliates <open-source-office@arm.com>
+ * 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.
+ */
+
+#include "ethosu_profiler.hpp"
+
+#define UNUSED(x) ((void)x)
+
+void __attribute((weak)) ethosu_profiler_start(struct ethosu_profiler_context *ctx) {
+ UNUSED(ctx);
+}
+
+void __attribute((weak)) ethosu_profiler_end(struct ethosu_profiler_context *ctx) {
+ UNUSED(ctx);
+}
+
+void __attribute((weak)) ethosu_profiler_reset(struct ethosu_profiler_context *ctx) {
+ UNUSED(ctx);
+}
+
+uint64_t __attribute((weak)) ethosu_profiler_get_pmu_cycles(struct ethosu_profiler_context *ctx) {
+ UNUSED(ctx);
+ return 0U;
+}
+
+void __attribute((weak)) ethosu_profiler_add_to_pmu_cycles(struct ethosu_profiler_context *ctx, uint64_t cycles) {
+ UNUSED(ctx);
+ UNUSED(cycles);
+}
+
+void __attribute((weak))
+ethosu_profiler_add_to_pmu_event(struct ethosu_profiler_context *ctx, uint32_t index, uint32_t value) {
+ UNUSED(ctx);
+ UNUSED(index);
+ UNUSED(value);
+}
+
+void __attribute((weak)) ethosu_profiler_report(struct ethosu_profiler_context *ctx) {
+ UNUSED(ctx);
+}