IVGCVSW-3636 Fix Graph and WorkloaData to support backend Import functionality
authorFerran Balaguer <ferran.balaguer@arm.com>
Wed, 14 Aug 2019 11:11:27 +0000 (12:11 +0100)
committerNarumol Prangnawarat <narumol.prangnawarat@arm.com>
Wed, 14 Aug 2019 13:09:48 +0000 (13:09 +0000)
Signed-off-by: Ferran Balaguer <ferran.balaguer@arm.com>
Change-Id: I634aa3b1d609ca33b196fd68ce7fb7881be73e6e

src/armnn/Graph.cpp
src/backends/backendsCommon/WorkloadData.cpp

index 6212c49..f0ef0e1 100644 (file)
@@ -344,17 +344,24 @@ void Graph::AddCompatibilityLayers(std::map<BackendId, std::unique_ptr<IBackendI
                             {
                                 auto srcPref = srcOutputSlot.GetTensorHandleFactoryId();
                                 auto srcFactory = registry.GetFactory(srcPref);
-                                bool canExportImport = (factory->GetImportFlags() & srcFactory->GetExportFlags()) != 0;
-                                if (factory->SupportsMapUnmap() || canExportImport)
+                                if (srcFactory)
                                 {
-                                    compOutputSlot.SetTensorHandleFactory(preference);
-                                    found = true;
-                                    break;
+                                    bool canExportImport =
+                                            (factory->GetImportFlags() & srcFactory->GetExportFlags()) != 0;
+                                    if (factory->SupportsMapUnmap() || canExportImport)
+                                    {
+                                        compOutputSlot.SetTensorHandleFactory(preference);
+                                        found = true;
+                                        break;
+                                    }
                                 }
                             }
                         }
 
-                        BOOST_ASSERT_MSG(found, "Could not find a valid TensorHandle for compatibilty layer");
+                        if (!found)
+                        {
+                            compOutputSlot.SetTensorHandleFactory(ITensorHandleFactory::LegacyFactoryId);
+                        }
                     }
                     else
                     {
index 1c607da..4b0b84a 100644 (file)
@@ -417,22 +417,6 @@ void MemSyncQueueDescriptor::Validate(const WorkloadInfo& workloadInfo) const
     ValidateNumInputs(workloadInfo, "MemSyncQueueDescriptor", 1);
     ValidateNumOutputs(workloadInfo, "MemSyncQueueDescriptor" , 1);
 
-    if (workloadInfo.m_InputTensorInfos.size() != 1)
-    {
-        throw InvalidArgumentException(boost::str(
-            boost::format("Number of input infos (%1%) is not 1.")
-            % workloadInfo.m_InputTensorInfos.size()));
-
-    }
-
-    if (workloadInfo.m_OutputTensorInfos.size() != 0)
-    {
-        throw InvalidArgumentException(boost::str(
-            boost::format("Number of output infos (%1%) is not 0.")
-            % workloadInfo.m_InputTensorInfos.size()));
-
-    }
-
     if (m_Inputs.size() != 1)
     {
         throw InvalidArgumentException(boost::str(