diff options
author | Ferran Balaguer <ferran.balaguer@arm.com> | 2019-08-07 15:14:56 +0100 |
---|---|---|
committer | Ferran Balaguer Arm <ferran.balaguer@arm.com> | 2019-08-20 14:31:07 +0000 |
commit | bfeb2711da172b26931c58af7b15d434ef49e24e (patch) | |
tree | 3516b24857effe4c98737f48026dabf75d1f360a /src/backends/reference/test/RefTensorHandleTests.cpp | |
parent | aec942c3f258db46e0fb8054d39c0e7c3c411728 (diff) | |
download | armnn-bfeb2711da172b26931c58af7b15d434ef49e24e.tar.gz |
IVGCVSW-3606 Support memory import for Reference backend
Signed-off-by: Ferran Balaguer <ferran.balaguer@arm.com>
Change-Id: I94bd191f88e0911ad4e4727610e81cd7afa95512
Diffstat (limited to 'src/backends/reference/test/RefTensorHandleTests.cpp')
-rw-r--r-- | src/backends/reference/test/RefTensorHandleTests.cpp | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/src/backends/reference/test/RefTensorHandleTests.cpp b/src/backends/reference/test/RefTensorHandleTests.cpp index accf900975..19b669b42f 100644 --- a/src/backends/reference/test/RefTensorHandleTests.cpp +++ b/src/backends/reference/test/RefTensorHandleTests.cpp @@ -45,4 +45,56 @@ BOOST_AUTO_TEST_CASE(AcquireAndRelease) memoryManager->Release(); } +BOOST_AUTO_TEST_CASE(CheckSourceType) +{ + std::shared_ptr<RefMemoryManager> memoryManager = std::make_shared<RefMemoryManager>(); + + TensorInfo info({1}, DataType::Float32); + RefTensorHandle handle(info, memoryManager, static_cast<unsigned int>(MemorySource::Malloc)); + + // This pointer will be deleted in the handle destructor + int* testPtr = new int(4); + + // Not supported + BOOST_CHECK(!handle.Import(static_cast<void *>(testPtr), MemorySource::DmaBuf)); + + // Not supported + BOOST_CHECK(!handle.Import(static_cast<void *>(testPtr), MemorySource::DmaBufProtected)); + + // Supported + BOOST_CHECK(handle.Import(static_cast<void *>(testPtr), MemorySource::Malloc)); +} + +BOOST_AUTO_TEST_CASE(ReusePointer) +{ + std::shared_ptr<RefMemoryManager> memoryManager = std::make_shared<RefMemoryManager>(); + + TensorInfo info({1}, DataType::Float32); + RefTensorHandle handle(info, memoryManager, static_cast<unsigned int>(MemorySource::Malloc)); + + // This pointer will be deleted in the handle destructor + int* testPtr = new int(4); + + handle.Import(static_cast<void *>(testPtr), MemorySource::Malloc); + + // Reusing previously Imported pointer + BOOST_CHECK(handle.Import(static_cast<void *>(testPtr), MemorySource::Malloc)); +} + +BOOST_AUTO_TEST_CASE(MisalignedPointer) +{ + std::shared_ptr<RefMemoryManager> memoryManager = std::make_shared<RefMemoryManager>(); + + TensorInfo info({2}, DataType::Float32); + RefTensorHandle handle(info, memoryManager, static_cast<unsigned int>(MemorySource::Malloc)); + + // Allocates a 2 int array + int* testPtr = new int[2]; + int* misalignedPtr = testPtr + 1; + + BOOST_CHECK(!handle.Import(static_cast<void *>(misalignedPtr), MemorySource::Malloc)); + + delete[] testPtr; +} + BOOST_AUTO_TEST_SUITE_END()
\ No newline at end of file |