22 const std::vector<TensorInfo>& infos,
28 for (
const auto&
info : infos)
32 reasonIfUnsupported.
value() =
"TOSA does not have INT64 support for TOSARef backend";
42 reasonIfUnsupported.
value() =
"Must use a Quantize layer to/from unsigned INT for TOSARef backend";
51 std::vector<const TensorInfo*> inputInfos;
52 std::vector<const TensorInfo*> outputInfos;
67 inputInfos.push_back(&infos[0]);
68 inputInfos.push_back(&infos[1]);
69 outputInfos.push_back(&infos[2]);
72 for (
unsigned int i = 0; i < infos.size() - 1; ++i)
74 inputInfos.push_back(&infos[i]);
76 outputInfos.push_back(&infos.back());
79 outputInfos.push_back(&infos[0]);
83 inputInfos.push_back(&infos[0]);
84 outputInfos.push_back(&infos[1]);
85 inputInfos.push_back(&infos[2]);
88 if(conv2dDesc->m_BiasEnabled)
90 inputInfos.push_back(&infos[3]);
96 inputInfos.push_back(&infos[0]);
97 outputInfos.push_back(&infos[1]);
98 inputInfos.push_back(&infos[2]);
101 if(conv3dDesc->m_BiasEnabled)
103 inputInfos.push_back(&infos[3]);
109 inputInfos.push_back(&infos[0]);
110 outputInfos.push_back(&infos[1]);
111 inputInfos.push_back(&infos[2]);
114 if(conv2dDesc->m_BiasEnabled)
116 inputInfos.push_back(&infos[3]);
122 inputInfos.push_back(&infos[0]);
123 outputInfos.push_back(&infos[1]);
124 inputInfos.push_back(&infos[2]);
126 if(fullyConnectedDesc->m_BiasEnabled)
128 inputInfos.push_back(&infos[3]);
150 inputInfos.push_back(&infos[0]);
151 outputInfos.push_back(&infos[1]);
156 inputInfos.push_back(&infos[0]);
157 for (
unsigned int i = 1; i < infos.size(); ++i)
159 outputInfos.push_back(&infos[i]);
165 inputInfos.push_back(&infos[0]);
166 outputInfos.push_back(&infos[1]);
167 inputInfos.push_back(&infos[2]);
170 if(conv2dDesc->m_BiasEnabled)
172 inputInfos.push_back(&infos[3]);
179 for (
unsigned int i = 0; i < stackDesc->m_NumInputs; ++i)
181 inputInfos.emplace_back(&infos[i]);
183 outputInfos.emplace_back(&infos[stackDesc->m_NumInputs]);
191 auto mappings =
GetTosaMapping(
nullptr, type, inputInfos, outputInfos, descriptor);
192 if (mappings->GetName() ==
"")
198 TosaSerializationHandler handler;
201 auto* block =
new TosaSerializationBasicBlock(
"main",
203 mappings->GetOperators(),
204 mappings->GetTensors(),
205 mappings->GetInputs(),
206 mappings->GetOutputs());
208 std::vector<TosaSerializationBasicBlock*> blocks;
209 blocks.emplace_back(block);
212 auto* region =
new TosaSerializationRegion(
"main", blocks);
213 handler.GetRegions().emplace_back(region);
216 TosaReference::IModelRunner runner;
218#if !defined(TOSA_REFERENCE_MODEL_OUTPUT)
221 func_debug_t funcDebug;
223 FILE* file = fopen(
"/dev/null",
"w");
224 funcDebug.func_debug_file = (file ==
nullptr) ? stderr : file;
226 runner.setFuncDebug(funcDebug);
230 status = runner.initialize(handler);
232#if !defined(TOSA_REFERENCE_MODEL_OUTPUT)
234 funcDebug.func_debug_file = stderr;
235 runner.setFuncDebug(funcDebug);
238 if(status == GraphStatus::TOSA_ERROR || status == GraphStatus::TOSA_UNPREDICTABLE)
bool IsLayerSupported(const LayerType &type, const std::vector< TensorInfo > &infos, const BaseDescriptor &descriptor, const Optional< LstmInputParamsInfo > &lstmParamsInfo, const Optional< QuantizedLstmInputParamsInfo > &, Optional< std::string & > reasonIfUnsupported) const override
Default implementation of the ILayerSupport interface, Backends should implement this as a switch sta...