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.