181 std::vector<uint8_t> inputVector = {166, 179, 50, 150};
183 boost::multi_array<uint8_t, 2> input = MakeTensor<uint8_t, 2>(inputDesc, inputVector);
185 std::vector<int16_t> cellStateInVector = {876, 1034, 955, -909, 761, 1029, 796, -1036};
187 boost::multi_array<int16_t, 2> cellStateIn = MakeTensor<int16_t, 2>(cellStateInDesc, cellStateInVector);
189 std::vector<uint8_t> outputStateInVector = {136, 150, 140, 115, 135, 152, 138, 112};
191 boost::multi_array<uint8_t, 2> outputStateIn = MakeTensor<uint8_t, 2>(outputStateInDesc, outputStateInVector);
193 std::vector<int16_t> cellStateOutVector = {1485, 1177, 1373, -1023, 1019, 1355, 1097, -1235};
195 boost::multi_array<int16_t, 2> cellStateOut = MakeTensor<int16_t, 2>(cellStateOutVectorDesc, cellStateOutVector);
197 std::vector<uint8_t> outputStateOutVector = {140, 151, 146, 112, 136, 156, 142, 112};
199 boost::multi_array<uint8_t, 2> outputStateOut = MakeTensor<uint8_t, 2>(outputDesc, outputStateOutVector);
204 BOOST_TEST_CHECKPOINT(
"create a network");
214 runtime->LoadNetwork(netId, std::move(optNet));
217 inputTensors.reserve(3);
220 inputTensors.push_back({0,
ConstTensor(runtime->GetInputTensorInfo(netId, 0), inputVector.data())});
221 inputTensors.push_back({1,
ConstTensor(runtime->GetInputTensorInfo(netId, 1), cellStateInVector.data())});
222 inputTensors.push_back({2,
ConstTensor(runtime->GetInputTensorInfo(netId, 2), outputStateInVector.data())});
225 outputTensors.reserve(2);
228 std::vector<int16_t > cellStateOutResult(cellStateOutVector.size());
229 std::vector<uint8_t > outputStateOutResult(outputStateOutVector.size());
230 outputTensors.push_back({0,
Tensor(runtime->GetOutputTensorInfo(netId, 0), cellStateOutResult.data())});
231 outputTensors.push_back({1,
Tensor(runtime->GetOutputTensorInfo(netId, 1), outputStateOutResult.data())});
234 runtime->EnqueueWorkload(netId, inputTensors, outputTensors);
237 constexpr int16_t toleranceInt16 = 2;
238 for (
unsigned int i = 0u; i < cellStateOutResult.size(); ++i)
240 BOOST_CHECK(IsCloseEnough(cellStateOutVector[i], cellStateOutResult[i], toleranceInt16));
243 constexpr uint8_t toleranceUint8 = 1;
244 for (
unsigned int i = 0u; i < outputStateOutResult.size(); ++i)
246 BOOST_TEST(IsCloseEnough(outputStateOutVector[i], outputStateOutResult[i], toleranceUint8));
std::unique_ptr< IRuntime, void(*)(IRuntime *runtime)> IRuntimePtr
std::vector< std::pair< LayerBindingId, class ConstTensor > > InputTensors
BOOST_CHECK(profilingService.GetCurrentState()==ProfilingState::WaitingForAck)
A tensor defined by a TensorInfo (shape and data type) and a mutable backing store.
IOptimizedNetworkPtr Optimize(const INetwork &network, const std::vector< BackendId > &backendPreferences, const IDeviceSpec &deviceSpec, const OptimizerOptions &options=OptimizerOptions(), Optional< std::vector< std::string > &> messages=EmptyOptional())
Create an optimized version of the network.
A tensor defined by a TensorInfo (shape and data type) and an immutable backing store.
std::vector< std::pair< LayerBindingId, class Tensor > > OutputTensors
std::unique_ptr< IOptimizedNetwork, void(*)(IOptimizedNetwork *network)> IOptimizedNetworkPtr
std::unique_ptr< INetwork, void(*)(INetwork *network)> INetworkPtr
armnn::Runtime::CreationOptions::ExternalProfilingOptions options