From 2e0d58148ab2fb02d1d5d4b496563c7eaec39af8 Mon Sep 17 00:00:00 2001 From: Arun Rangasamy Date: Wed, 17 Jan 2024 10:50:03 +0530 Subject: [PATCH] [RUNTIME][Memory] Implement support for non-zero offset in AllocNDArray for Hexagon --- src/runtime/memory/memory_manager.cc | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/runtime/memory/memory_manager.cc b/src/runtime/memory/memory_manager.cc index 71d5a7d034a7..49bf45f1a193 100644 --- a/src/runtime/memory/memory_manager.cc +++ b/src/runtime/memory/memory_manager.cc @@ -102,6 +102,14 @@ NDArray StorageObj::AllocNDArray(size_t offset, ShapeTuple shape, DLDataType dty // buffer intact. container->manager_ctx = reinterpret_cast(this); + if (this->buffer.device.device_type == kDLHexagon) { + // For Hexagon, non-zero offset support simply requires adjusting the + // beginning of data pointer + auto offset_ptr = reinterpret_cast(this->buffer.data) + offset; + container->dl_tensor.data = reinterpret_cast(offset_ptr); + container->dl_tensor.byte_offset = 0; + } + NDArray ret(GetObjectPtr(container)); // RAII in effect, now run the check.