aboutsummaryrefslogtreecommitdiff
path: root/src/backends/gpuFsa/GpuFsaTensorHandle.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/backends/gpuFsa/GpuFsaTensorHandle.cpp')
-rw-r--r--src/backends/gpuFsa/GpuFsaTensorHandle.cpp176
1 files changed, 0 insertions, 176 deletions
diff --git a/src/backends/gpuFsa/GpuFsaTensorHandle.cpp b/src/backends/gpuFsa/GpuFsaTensorHandle.cpp
deleted file mode 100644
index e806be49bb..0000000000
--- a/src/backends/gpuFsa/GpuFsaTensorHandle.cpp
+++ /dev/null
@@ -1,176 +0,0 @@
-//
-// Copyright © 2022 Arm Ltd and Contributors. All rights reserved.
-// SPDX-License-Identifier: MIT
-//
-#include "GpuFsaTensorHandle.hpp"
-
-namespace armnn
-{
-GpuFsaTensorHandle::GpuFsaTensorHandle(const TensorInfo& tensorInfo,
- std::shared_ptr<GpuFsaMemoryManager>& memoryManager)
- : m_TensorInfo(tensorInfo)
- , m_MemoryManager(memoryManager)
- , m_Pool(nullptr)
- , m_UnmanagedMemory(nullptr)
- , m_ImportFlags(static_cast<MemorySourceFlags>(MemorySource::Undefined))
- , m_Imported(false)
- , m_IsImportEnabled(false)
-{}
-
-GpuFsaTensorHandle::GpuFsaTensorHandle(const TensorInfo& tensorInfo,
- MemorySourceFlags importFlags)
- : m_TensorInfo(tensorInfo)
- , m_Pool(nullptr)
- , m_UnmanagedMemory(nullptr)
- , m_ImportFlags(importFlags)
- , m_Imported(false)
- , m_IsImportEnabled(true)
-{}
-
-GpuFsaTensorHandle::~GpuFsaTensorHandle()
-{
- if (!m_Pool)
- {
- // unmanaged
- if (!m_Imported)
- {
- ::operator delete(m_UnmanagedMemory);
- }
- }
-}
-
-void GpuFsaTensorHandle::Manage()
-{
- if (!m_IsImportEnabled)
- {
- ARMNN_ASSERT_MSG(!m_Pool, "GpuFsaTensorHandle::Manage() called twice");
- ARMNN_ASSERT_MSG(!m_UnmanagedMemory, "GpuFsaTensorHandle::Manage() called after Allocate()");
-
- m_Pool = m_MemoryManager->Manage(m_TensorInfo.GetNumBytes());
- }
-}
-
-void GpuFsaTensorHandle::Allocate()
-{
- // If import is enabled, do not allocate the tensor
- if (!m_IsImportEnabled)
- {
-
- if (!m_UnmanagedMemory)
- {
- if (!m_Pool)
- {
- // unmanaged
- m_UnmanagedMemory = ::operator new(m_TensorInfo.GetNumBytes());
- }
- else
- {
- m_MemoryManager->Allocate(m_Pool);
- }
- }
- else
- {
- throw InvalidArgumentException("GpuFsaTensorHandle::Allocate Trying to allocate a GpuFsaTensorHandle"
- "that already has allocated memory.");
- }
- }
-}
-
-const void* GpuFsaTensorHandle::Map(bool /*unused*/) const
-{
- return GetPointer();
-}
-
-void* GpuFsaTensorHandle::GetPointer() const
-{
- if (m_UnmanagedMemory)
- {
- return m_UnmanagedMemory;
- }
- else if (m_Pool)
- {
- return m_MemoryManager->GetPointer(m_Pool);
- }
- else
- {
- throw NullPointerException("GpuFsaTensorHandle::GetPointer called on unmanaged, unallocated tensor handle");
- }
-}
-
-void GpuFsaTensorHandle::CopyOutTo(void* dest) const
-{
- const void *src = GetPointer();
- ARMNN_ASSERT(src);
- memcpy(dest, src, m_TensorInfo.GetNumBytes());
-}
-
-void GpuFsaTensorHandle::CopyInFrom(const void* src)
-{
- void *dest = GetPointer();
- ARMNN_ASSERT(dest);
- memcpy(dest, src, m_TensorInfo.GetNumBytes());
-}
-
-bool GpuFsaTensorHandle::Import(void* memory, MemorySource source)
-{
- if (m_ImportFlags & static_cast<MemorySourceFlags>(source))
- {
- if (m_IsImportEnabled && source == MemorySource::Malloc)
- {
- // Check memory alignment
- if(!CanBeImported(memory, source))
- {
- if (m_Imported)
- {
- m_Imported = false;
- m_UnmanagedMemory = nullptr;
- }
- return false;
- }
-
- // m_UnmanagedMemory not yet allocated.
- if (!m_Imported && !m_UnmanagedMemory)
- {
- m_UnmanagedMemory = memory;
- m_Imported = true;
- return true;
- }
-
- // m_UnmanagedMemory initially allocated with Allocate().
- if (!m_Imported && m_UnmanagedMemory)
- {
- return false;
- }
-
- // m_UnmanagedMemory previously imported.
- if (m_Imported)
- {
- m_UnmanagedMemory = memory;
- return true;
- }
- }
- }
-
- return false;
-}
-
-bool GpuFsaTensorHandle::CanBeImported(void* memory, MemorySource source)
-{
- if (m_ImportFlags & static_cast<MemorySourceFlags>(source))
- {
- if (m_IsImportEnabled && source == MemorySource::Malloc)
- {
- uintptr_t alignment = GetDataTypeSize(m_TensorInfo.GetDataType());
- if (reinterpret_cast<uintptr_t>(memory) % alignment)
- {
- return false;
- }
- return true;
- }
- }
- return false;
-}
-
-
-
-} \ No newline at end of file