28 for (
const auto& info : infos)
33 reasonIfUnsupported.
value() =
"TOSA does not have INT64 or unsigned INT support for TOSARef backend";
42 std::vector<const TensorInfo*> inputInfos;
43 std::vector<const TensorInfo*> outputInfos;
57 inputInfos.push_back(&infos[0]);
58 inputInfos.push_back(&infos[1]);
59 outputInfos.push_back(&infos[2]);
62 for (
unsigned int i = 0; i < infos.size() - 1; ++i)
64 inputInfos.push_back(&infos[i]);
66 outputInfos.push_back(&infos.back());
69 outputInfos.push_back(&infos[0]);
73 inputInfos.push_back(&infos[0]);
74 outputInfos.push_back(&infos[1]);
75 inputInfos.push_back(&infos[2]);
77 auto conv2dDesc = PolymorphicDowncast<const Convolution2dDescriptor*>(&descriptor);
78 if(conv2dDesc->m_BiasEnabled)
80 inputInfos.push_back(&infos[3]);
86 inputInfos.push_back(&infos[0]);
87 outputInfos.push_back(&infos[1]);
88 inputInfos.push_back(&infos[2]);
90 auto conv3dDesc = PolymorphicDowncast<const Convolution3dDescriptor*>(&descriptor);
91 if(conv3dDesc->m_BiasEnabled)
93 inputInfos.push_back(&infos[3]);
99 inputInfos.push_back(&infos[0]);
100 outputInfos.push_back(&infos[1]);
101 inputInfos.push_back(&infos[2]);
103 auto conv2dDesc = PolymorphicDowncast<const DepthwiseConvolution2dDescriptor*>(&descriptor);
104 if(conv2dDesc->m_BiasEnabled)
106 inputInfos.push_back(&infos[3]);
112 inputInfos.push_back(&infos[0]);
113 outputInfos.push_back(&infos[1]);
114 inputInfos.push_back(&infos[2]);
115 auto fullyConnectedDesc = PolymorphicDowncast<const FullyConnectedDescriptor*>(&descriptor);
116 if(fullyConnectedDesc->m_BiasEnabled)
118 inputInfos.push_back(&infos[3]);
138 inputInfos.push_back(&infos[0]);
139 outputInfos.push_back(&infos[1]);
144 inputInfos.push_back(&infos[0]);
145 for (
unsigned int i = 1; i < infos.size(); ++i)
147 outputInfos.push_back(&infos[i]);
153 inputInfos.push_back(&infos[0]);
154 outputInfos.push_back(&infos[1]);
155 inputInfos.push_back(&infos[2]);
157 auto conv2dDesc = PolymorphicDowncast<const TransposeConvolution2dDescriptor*>(&descriptor);
158 if(conv2dDesc->m_BiasEnabled)
160 inputInfos.push_back(&infos[3]);
166 auto stackDesc = PolymorphicDowncast<const StackDescriptor*>(&descriptor);
167 for (
unsigned int i = 0; i < stackDesc->m_NumInputs; ++i)
169 inputInfos.emplace_back(&infos[i]);
171 outputInfos.emplace_back(&infos[stackDesc->m_NumInputs]);
179 auto mappings =
GetTosaMapping(
nullptr, type, inputInfos, outputInfos, descriptor);
180 if (mappings->GetName() ==
"")
186 TosaSerializationHandler handler;
189 auto* block =
new TosaSerializationBasicBlock(
"main",
191 mappings->GetOperators(),
192 mappings->GetTensors(),
193 mappings->GetInputs(),
194 mappings->GetOutputs());
196 std::vector<TosaSerializationBasicBlock*> blocks;
197 blocks.emplace_back(block);
200 auto* region =
new TosaSerializationRegion(
"main", blocks);
201 handler.GetRegions().emplace_back(region);
204 TosaReference::IModelRunner runner;
206 #if !defined(TOSA_REFERENCE_MODEL_OUTPUT)
209 func_debug_t funcDebug;
211 FILE* file = fopen(
"/dev/null",
"w");
212 funcDebug.func_debug_file = (file ==
nullptr) ? stderr : file;
214 runner.setFuncDebug(funcDebug);
218 status = runner.initialize(handler);
220 #if !defined(TOSA_REFERENCE_MODEL_OUTPUT)
222 funcDebug.func_debug_file = stderr;
223 runner.setFuncDebug(funcDebug);
226 if(status == GraphStatus::TOSA_ERROR || status == GraphStatus::TOSA_UNPREDICTABLE)
TosaSerializationBasicBlock * GetTosaMapping(const Layer *layer, const LayerType type, const std::vector< const TensorInfo * > &inputs, const std::vector< const TensorInfo * > &outputs, const BaseDescriptor &descriptor)
void IgnoreUnused(Ts &&...)