aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMikael Olsson <mikael.olsson@arm.com>2023-06-05 15:59:27 +0200
committerMikael Olsson <mikael.olsson@arm.com>2023-09-28 11:53:42 +0200
commitc078cedb6229e7aca6e9dc7e3cda1302eb3951f4 (patch)
tree9abd34d477df02800f20d4ed51f0457eda516d65
parent67add21188c70240b8966cdd707b03c02bd41a56 (diff)
downloadethos-u-core-platform-c078cedb6229e7aca6e9dc7e3cda1302eb3951f4.tar.gz
Remove address translation for buffer and carveout
Address translation for inference buffers and carveout areas have been removed because the Linux Kernel NPU driver now provides device addresses for them. Change-Id: I71a133ba5ecbb94aa2c225d259e75229b6dbce5b Signed-off-by: Mikael Olsson <mikael.olsson@arm.com>
-rw-r--r--applications/message_handler_openamp/main.cpp4
-rw-r--r--applications/message_handler_openamp/message_handler.cpp40
-rw-r--r--applications/message_handler_openamp/message_handler.hpp6
3 files changed, 6 insertions, 44 deletions
diff --git a/applications/message_handler_openamp/main.cpp b/applications/message_handler_openamp/main.cpp
index 62bdc97..c120610 100644
--- a/applications/message_handler_openamp/main.cpp
+++ b/applications/message_handler_openamp/main.cpp
@@ -179,14 +179,14 @@ int main() {
auto messageHandler = std::make_shared<MessageHandler>(*rproc, "ethos-u-0.0");
printf("TFLM arena. pa=%" PRIx32 ", da=%" PRIx32 ", len=%" PRIx32 "\n",
- resourceTable.carveout.da,
resourceTable.carveout.pa,
+ resourceTable.carveout.da,
resourceTable.carveout.len);
std::array<std::shared_ptr<InferenceRunner>, NUM_PARALLEL_TASKS> inferenceRunner;
for (size_t i = 0; i < NUM_PARALLEL_TASKS; i++) {
- auto tensorArena = static_cast<uint8_t *>(messageHandler->physicalToVirtual(resourceTable.carveout.pa));
+ auto tensorArena = reinterpret_cast<uint8_t *>(resourceTable.carveout.da);
inferenceRunner[i] = std::make_shared<InferenceRunner>(&tensorArena[arenaSize * i],
arenaSize,
diff --git a/applications/message_handler_openamp/message_handler.cpp b/applications/message_handler_openamp/message_handler.cpp
index 4bd611d..9694f39 100644
--- a/applications/message_handler_openamp/message_handler.cpp
+++ b/applications/message_handler_openamp/message_handler.cpp
@@ -1,6 +1,5 @@
/*
* SPDX-FileCopyrightText: Copyright 2022-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
@@ -308,7 +307,7 @@ void MessageHandler::sendNetworkInfoRsp(const uint32_t src,
rsp.ifm_count = 0;
rsp.ofm_count = 0;
- bool failed = networkToVirtual(network);
+ bool failed = getNetwork(network);
if (!failed) {
InferenceProcess::InferenceParser parser;
@@ -333,15 +332,7 @@ void MessageHandler::forwardInferenceReq(const uint32_t src,
req = inference;
- for (uint32_t i = 0; i < req.ifm_count; i++) {
- bufferToVirtual(req.ifm[i]);
- }
-
- for (uint32_t i = 0; i < req.ofm_count; i++) {
- bufferToVirtual(req.ofm[i]);
- }
-
- networkToVirtual(req.network);
+ getNetwork(req.network);
inferenceQueue.send(message);
}
@@ -368,35 +359,10 @@ void MessageHandler::sendCancelInferenceRsp(const uint32_t src,
responseQueue.send(message);
}
-bool MessageHandler::getNetwork(const EthosU::ethosu_core_network_buffer &buffer, void *&data, size_t &size) {
+bool MessageHandler::getNetwork(EthosU::ethosu_core_network_buffer &buffer) {
switch (buffer.type) {
case EthosU::ETHOSU_CORE_NETWORK_BUFFER:
- data = physicalToVirtual(buffer.buffer.ptr);
- size = buffer.buffer.size;
return false;
- case EthosU::ETHOSU_CORE_NETWORK_INDEX:
- return getIndexedNetwork(buffer.index, data, size);
- default:
- LOG_WARN("Unsupported network model type. type=%" PRIu32, buffer.type);
- return true;
- }
-}
-
-bool MessageHandler::bufferToVirtual(EthosU::ethosu_core_buffer &buffer) {
- void *ptr = physicalToVirtual(buffer.ptr);
- if (ptr == nullptr) {
- return true;
- }
-
- buffer.ptr = reinterpret_cast<uint32_t>(ptr);
-
- return false;
-}
-
-bool MessageHandler::networkToVirtual(EthosU::ethosu_core_network_buffer &buffer) {
- switch (buffer.type) {
- case EthosU::ETHOSU_CORE_NETWORK_BUFFER:
- return bufferToVirtual(buffer.buffer);
case EthosU::ETHOSU_CORE_NETWORK_INDEX: {
void *ptr;
size_t size;
diff --git a/applications/message_handler_openamp/message_handler.hpp b/applications/message_handler_openamp/message_handler.hpp
index 779b05f..86b7c4d 100644
--- a/applications/message_handler_openamp/message_handler.hpp
+++ b/applications/message_handler_openamp/message_handler.hpp
@@ -1,6 +1,5 @@
/*
* SPDX-FileCopyrightText: Copyright 2022-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
@@ -88,15 +87,12 @@ protected:
void sendCancelInferenceRsp(const uint32_t src, const uint64_t msgId, const EthosU::ethosu_core_status status);
EthosU::ethosu_core_msg_capabilities_rsp getCapabilities() const;
- bool getNetwork(const EthosU::ethosu_core_network_buffer &buffer, void *&data, size_t &size);
+ bool getNetwork(EthosU::ethosu_core_network_buffer &buffer);
// Tasks returning response messages
static void responseTask(void *param);
private:
- bool bufferToVirtual(EthosU::ethosu_core_buffer &buffer);
- bool networkToVirtual(EthosU::ethosu_core_network_buffer &buffer);
-
InferenceQueue inferenceQueue;
ResponseQueue responseQueue;
EthosU::ethosu_core_msg_capabilities_rsp capabilities;