Loading neuralnetworks/1.0/vts/functional/GeneratedTestHarness.cpp +13 −12 Original line number Diff line number Diff line Loading @@ -42,10 +42,11 @@ using implementation::PreparedModelCallback; Model createModel(const TestModel& testModel) { // Model operands. hidl_vec<Operand> operands(testModel.operands.size()); CHECK_EQ(testModel.referenced.size(), 0u); // Not supported in 1.0. hidl_vec<Operand> operands(testModel.main.operands.size()); size_t constCopySize = 0, constRefSize = 0; for (uint32_t i = 0; i < testModel.operands.size(); i++) { const auto& op = testModel.operands[i]; for (uint32_t i = 0; i < testModel.main.operands.size(); i++) { const auto& op = testModel.main.operands[i]; DataLocation loc = {}; if (op.lifetime == TestOperandLifeTime::CONSTANT_COPY) { Loading @@ -70,9 +71,9 @@ Model createModel(const TestModel& testModel) { } // Model operations. hidl_vec<Operation> operations(testModel.operations.size()); std::transform(testModel.operations.begin(), testModel.operations.end(), operations.begin(), [](const TestOperation& op) -> Operation { hidl_vec<Operation> operations(testModel.main.operations.size()); std::transform(testModel.main.operations.begin(), testModel.main.operations.end(), operations.begin(), [](const TestOperation& op) -> Operation { return {.type = static_cast<OperationType>(op.type), .inputs = op.inputs, .outputs = op.outputs}; Loading @@ -80,8 +81,8 @@ Model createModel(const TestModel& testModel) { // Constant copies. hidl_vec<uint8_t> operandValues(constCopySize); for (uint32_t i = 0; i < testModel.operands.size(); i++) { const auto& op = testModel.operands[i]; for (uint32_t i = 0; i < testModel.main.operands.size(); i++) { const auto& op = testModel.main.operands[i]; if (op.lifetime == TestOperandLifeTime::CONSTANT_COPY) { const uint8_t* begin = op.data.get<uint8_t>(); const uint8_t* end = begin + op.data.size(); Loading @@ -102,8 +103,8 @@ Model createModel(const TestModel& testModel) { reinterpret_cast<uint8_t*>(static_cast<void*>(mappedMemory->getPointer())); CHECK(mappedPtr != nullptr); for (uint32_t i = 0; i < testModel.operands.size(); i++) { const auto& op = testModel.operands[i]; for (uint32_t i = 0; i < testModel.main.operands.size(); i++) { const auto& op = testModel.main.operands[i]; if (op.lifetime == TestOperandLifeTime::CONSTANT_REFERENCE) { const uint8_t* begin = op.data.get<uint8_t>(); const uint8_t* end = begin + op.data.size(); Loading @@ -114,8 +115,8 @@ Model createModel(const TestModel& testModel) { return {.operands = std::move(operands), .operations = std::move(operations), .inputIndexes = testModel.inputIndexes, .outputIndexes = testModel.outputIndexes, .inputIndexes = testModel.main.inputIndexes, .outputIndexes = testModel.main.outputIndexes, .operandValues = std::move(operandValues), .pools = std::move(pools)}; } Loading neuralnetworks/1.0/vts/functional/Utils.cpp +8 −8 Original line number Diff line number Diff line Loading @@ -42,10 +42,10 @@ constexpr uint32_t kOutputPoolIndex = 1; Request createRequest(const TestModel& testModel) { // Model inputs. hidl_vec<RequestArgument> inputs(testModel.inputIndexes.size()); hidl_vec<RequestArgument> inputs(testModel.main.inputIndexes.size()); size_t inputSize = 0; for (uint32_t i = 0; i < testModel.inputIndexes.size(); i++) { const auto& op = testModel.operands[testModel.inputIndexes[i]]; for (uint32_t i = 0; i < testModel.main.inputIndexes.size(); i++) { const auto& op = testModel.main.operands[testModel.main.inputIndexes[i]]; if (op.data.size() == 0) { // Omitted input. inputs[i] = {.hasNoValue = true}; Loading @@ -59,10 +59,10 @@ Request createRequest(const TestModel& testModel) { } // Model outputs. hidl_vec<RequestArgument> outputs(testModel.outputIndexes.size()); hidl_vec<RequestArgument> outputs(testModel.main.outputIndexes.size()); size_t outputSize = 0; for (uint32_t i = 0; i < testModel.outputIndexes.size(); i++) { const auto& op = testModel.operands[testModel.outputIndexes[i]]; for (uint32_t i = 0; i < testModel.main.outputIndexes.size(); i++) { const auto& op = testModel.main.operands[testModel.main.outputIndexes[i]]; // In the case of zero-sized output, we should at least provide a one-byte buffer. // This is because zero-sized tensors are only supported internally to the driver, or Loading Loading @@ -90,8 +90,8 @@ Request createRequest(const TestModel& testModel) { CHECK(inputPtr != nullptr); // Copy input data to the memory pool. for (uint32_t i = 0; i < testModel.inputIndexes.size(); i++) { const auto& op = testModel.operands[testModel.inputIndexes[i]]; for (uint32_t i = 0; i < testModel.main.inputIndexes.size(); i++) { const auto& op = testModel.main.operands[testModel.main.inputIndexes[i]]; if (op.data.size() > 0) { const uint8_t* begin = op.data.get<uint8_t>(); const uint8_t* end = begin + op.data.size(); Loading neuralnetworks/1.1/vts/functional/GeneratedTestHarness.cpp +13 −12 Original line number Diff line number Diff line Loading @@ -49,10 +49,11 @@ using V1_0::implementation::PreparedModelCallback; Model createModel(const TestModel& testModel) { // Model operands. hidl_vec<Operand> operands(testModel.operands.size()); CHECK_EQ(testModel.referenced.size(), 0u); // Not supported in 1.1. hidl_vec<Operand> operands(testModel.main.operands.size()); size_t constCopySize = 0, constRefSize = 0; for (uint32_t i = 0; i < testModel.operands.size(); i++) { const auto& op = testModel.operands[i]; for (uint32_t i = 0; i < testModel.main.operands.size(); i++) { const auto& op = testModel.main.operands[i]; DataLocation loc = {}; if (op.lifetime == TestOperandLifeTime::CONSTANT_COPY) { Loading @@ -77,9 +78,9 @@ Model createModel(const TestModel& testModel) { } // Model operations. hidl_vec<Operation> operations(testModel.operations.size()); std::transform(testModel.operations.begin(), testModel.operations.end(), operations.begin(), [](const TestOperation& op) -> Operation { hidl_vec<Operation> operations(testModel.main.operations.size()); std::transform(testModel.main.operations.begin(), testModel.main.operations.end(), operations.begin(), [](const TestOperation& op) -> Operation { return {.type = static_cast<OperationType>(op.type), .inputs = op.inputs, .outputs = op.outputs}; Loading @@ -87,8 +88,8 @@ Model createModel(const TestModel& testModel) { // Constant copies. hidl_vec<uint8_t> operandValues(constCopySize); for (uint32_t i = 0; i < testModel.operands.size(); i++) { const auto& op = testModel.operands[i]; for (uint32_t i = 0; i < testModel.main.operands.size(); i++) { const auto& op = testModel.main.operands[i]; if (op.lifetime == TestOperandLifeTime::CONSTANT_COPY) { const uint8_t* begin = op.data.get<uint8_t>(); const uint8_t* end = begin + op.data.size(); Loading @@ -109,8 +110,8 @@ Model createModel(const TestModel& testModel) { reinterpret_cast<uint8_t*>(static_cast<void*>(mappedMemory->getPointer())); CHECK(mappedPtr != nullptr); for (uint32_t i = 0; i < testModel.operands.size(); i++) { const auto& op = testModel.operands[i]; for (uint32_t i = 0; i < testModel.main.operands.size(); i++) { const auto& op = testModel.main.operands[i]; if (op.lifetime == TestOperandLifeTime::CONSTANT_REFERENCE) { const uint8_t* begin = op.data.get<uint8_t>(); const uint8_t* end = begin + op.data.size(); Loading @@ -121,8 +122,8 @@ Model createModel(const TestModel& testModel) { return {.operands = std::move(operands), .operations = std::move(operations), .inputIndexes = testModel.inputIndexes, .outputIndexes = testModel.outputIndexes, .inputIndexes = testModel.main.inputIndexes, .outputIndexes = testModel.main.outputIndexes, .operandValues = std::move(operandValues), .pools = std::move(pools), .relaxComputationFloat32toFloat16 = testModel.isRelaxed}; Loading neuralnetworks/1.2/vts/functional/CompilationCachingTests.cpp +4 −4 Original line number Diff line number Diff line Loading @@ -207,10 +207,10 @@ TestModel createLargeTestModelImpl(TestOperationType op, uint32_t len) { }; return { .operands = std::move(operands), .main = {.operands = std::move(operands), .operations = std::move(operations), .inputIndexes = {1}, .outputIndexes = {len * 2 + 1}, .outputIndexes = {len * 2 + 1}}, .isRelaxed = false, }; } Loading neuralnetworks/1.2/vts/functional/GeneratedTestHarness.cpp +18 −17 Original line number Diff line number Diff line Loading @@ -75,10 +75,11 @@ struct TestConfig { Model createModel(const TestModel& testModel) { // Model operands. hidl_vec<Operand> operands(testModel.operands.size()); CHECK_EQ(testModel.referenced.size(), 0u); // Not supported in 1.1. hidl_vec<Operand> operands(testModel.main.operands.size()); size_t constCopySize = 0, constRefSize = 0; for (uint32_t i = 0; i < testModel.operands.size(); i++) { const auto& op = testModel.operands[i]; for (uint32_t i = 0; i < testModel.main.operands.size(); i++) { const auto& op = testModel.main.operands[i]; DataLocation loc = {}; if (op.lifetime == TestOperandLifeTime::CONSTANT_COPY) { Loading Loading @@ -110,9 +111,9 @@ Model createModel(const TestModel& testModel) { } // Model operations. hidl_vec<Operation> operations(testModel.operations.size()); std::transform(testModel.operations.begin(), testModel.operations.end(), operations.begin(), [](const TestOperation& op) -> Operation { hidl_vec<Operation> operations(testModel.main.operations.size()); std::transform(testModel.main.operations.begin(), testModel.main.operations.end(), operations.begin(), [](const TestOperation& op) -> Operation { return {.type = static_cast<OperationType>(op.type), .inputs = op.inputs, .outputs = op.outputs}; Loading @@ -120,8 +121,8 @@ Model createModel(const TestModel& testModel) { // Constant copies. hidl_vec<uint8_t> operandValues(constCopySize); for (uint32_t i = 0; i < testModel.operands.size(); i++) { const auto& op = testModel.operands[i]; for (uint32_t i = 0; i < testModel.main.operands.size(); i++) { const auto& op = testModel.main.operands[i]; if (op.lifetime == TestOperandLifeTime::CONSTANT_COPY) { const uint8_t* begin = op.data.get<uint8_t>(); const uint8_t* end = begin + op.data.size(); Loading @@ -142,8 +143,8 @@ Model createModel(const TestModel& testModel) { reinterpret_cast<uint8_t*>(static_cast<void*>(mappedMemory->getPointer())); CHECK(mappedPtr != nullptr); for (uint32_t i = 0; i < testModel.operands.size(); i++) { const auto& op = testModel.operands[i]; for (uint32_t i = 0; i < testModel.main.operands.size(); i++) { const auto& op = testModel.main.operands[i]; if (op.lifetime == TestOperandLifeTime::CONSTANT_REFERENCE) { const uint8_t* begin = op.data.get<uint8_t>(); const uint8_t* end = begin + op.data.size(); Loading @@ -154,15 +155,15 @@ Model createModel(const TestModel& testModel) { return {.operands = std::move(operands), .operations = std::move(operations), .inputIndexes = testModel.inputIndexes, .outputIndexes = testModel.outputIndexes, .inputIndexes = testModel.main.inputIndexes, .outputIndexes = testModel.main.outputIndexes, .operandValues = std::move(operandValues), .pools = std::move(pools), .relaxComputationFloat32toFloat16 = testModel.isRelaxed}; } static bool isOutputSizeGreaterThanOne(const TestModel& testModel, uint32_t index) { const auto byteSize = testModel.operands[testModel.outputIndexes[index]].data.size(); const auto byteSize = testModel.main.operands[testModel.main.outputIndexes[index]].data.size(); return byteSize > 1u; } Loading Loading @@ -302,17 +303,17 @@ void EvaluatePreparedModel(const sp<IPreparedModel>& preparedModel, const TestMo // either empty, or have the same number of elements as the number of outputs. ASSERT_EQ(ErrorStatus::NONE, executionStatus); ASSERT_TRUE(outputShapes.size() == 0 || outputShapes.size() == testModel.outputIndexes.size()); outputShapes.size() == testModel.main.outputIndexes.size()); break; case OutputType::UNSPECIFIED: // If the model output operands are not fully specified, outputShapes must have // the same number of elements as the number of outputs. ASSERT_EQ(ErrorStatus::NONE, executionStatus); ASSERT_EQ(outputShapes.size(), testModel.outputIndexes.size()); ASSERT_EQ(outputShapes.size(), testModel.main.outputIndexes.size()); break; case OutputType::INSUFFICIENT: ASSERT_EQ(ErrorStatus::OUTPUT_INSUFFICIENT_SIZE, executionStatus); ASSERT_EQ(outputShapes.size(), testModel.outputIndexes.size()); ASSERT_EQ(outputShapes.size(), testModel.main.outputIndexes.size()); ASSERT_FALSE(outputShapes[0].isSufficient); return; } Loading @@ -320,7 +321,7 @@ void EvaluatePreparedModel(const sp<IPreparedModel>& preparedModel, const TestMo // Go through all outputs, check returned output shapes. for (uint32_t i = 0; i < outputShapes.size(); i++) { EXPECT_TRUE(outputShapes[i].isSufficient); const auto& expect = testModel.operands[testModel.outputIndexes[i]].dimensions; const auto& expect = testModel.main.operands[testModel.main.outputIndexes[i]].dimensions; const std::vector<uint32_t> actual = outputShapes[i].dimensions; EXPECT_EQ(expect, actual); } Loading Loading
neuralnetworks/1.0/vts/functional/GeneratedTestHarness.cpp +13 −12 Original line number Diff line number Diff line Loading @@ -42,10 +42,11 @@ using implementation::PreparedModelCallback; Model createModel(const TestModel& testModel) { // Model operands. hidl_vec<Operand> operands(testModel.operands.size()); CHECK_EQ(testModel.referenced.size(), 0u); // Not supported in 1.0. hidl_vec<Operand> operands(testModel.main.operands.size()); size_t constCopySize = 0, constRefSize = 0; for (uint32_t i = 0; i < testModel.operands.size(); i++) { const auto& op = testModel.operands[i]; for (uint32_t i = 0; i < testModel.main.operands.size(); i++) { const auto& op = testModel.main.operands[i]; DataLocation loc = {}; if (op.lifetime == TestOperandLifeTime::CONSTANT_COPY) { Loading @@ -70,9 +71,9 @@ Model createModel(const TestModel& testModel) { } // Model operations. hidl_vec<Operation> operations(testModel.operations.size()); std::transform(testModel.operations.begin(), testModel.operations.end(), operations.begin(), [](const TestOperation& op) -> Operation { hidl_vec<Operation> operations(testModel.main.operations.size()); std::transform(testModel.main.operations.begin(), testModel.main.operations.end(), operations.begin(), [](const TestOperation& op) -> Operation { return {.type = static_cast<OperationType>(op.type), .inputs = op.inputs, .outputs = op.outputs}; Loading @@ -80,8 +81,8 @@ Model createModel(const TestModel& testModel) { // Constant copies. hidl_vec<uint8_t> operandValues(constCopySize); for (uint32_t i = 0; i < testModel.operands.size(); i++) { const auto& op = testModel.operands[i]; for (uint32_t i = 0; i < testModel.main.operands.size(); i++) { const auto& op = testModel.main.operands[i]; if (op.lifetime == TestOperandLifeTime::CONSTANT_COPY) { const uint8_t* begin = op.data.get<uint8_t>(); const uint8_t* end = begin + op.data.size(); Loading @@ -102,8 +103,8 @@ Model createModel(const TestModel& testModel) { reinterpret_cast<uint8_t*>(static_cast<void*>(mappedMemory->getPointer())); CHECK(mappedPtr != nullptr); for (uint32_t i = 0; i < testModel.operands.size(); i++) { const auto& op = testModel.operands[i]; for (uint32_t i = 0; i < testModel.main.operands.size(); i++) { const auto& op = testModel.main.operands[i]; if (op.lifetime == TestOperandLifeTime::CONSTANT_REFERENCE) { const uint8_t* begin = op.data.get<uint8_t>(); const uint8_t* end = begin + op.data.size(); Loading @@ -114,8 +115,8 @@ Model createModel(const TestModel& testModel) { return {.operands = std::move(operands), .operations = std::move(operations), .inputIndexes = testModel.inputIndexes, .outputIndexes = testModel.outputIndexes, .inputIndexes = testModel.main.inputIndexes, .outputIndexes = testModel.main.outputIndexes, .operandValues = std::move(operandValues), .pools = std::move(pools)}; } Loading
neuralnetworks/1.0/vts/functional/Utils.cpp +8 −8 Original line number Diff line number Diff line Loading @@ -42,10 +42,10 @@ constexpr uint32_t kOutputPoolIndex = 1; Request createRequest(const TestModel& testModel) { // Model inputs. hidl_vec<RequestArgument> inputs(testModel.inputIndexes.size()); hidl_vec<RequestArgument> inputs(testModel.main.inputIndexes.size()); size_t inputSize = 0; for (uint32_t i = 0; i < testModel.inputIndexes.size(); i++) { const auto& op = testModel.operands[testModel.inputIndexes[i]]; for (uint32_t i = 0; i < testModel.main.inputIndexes.size(); i++) { const auto& op = testModel.main.operands[testModel.main.inputIndexes[i]]; if (op.data.size() == 0) { // Omitted input. inputs[i] = {.hasNoValue = true}; Loading @@ -59,10 +59,10 @@ Request createRequest(const TestModel& testModel) { } // Model outputs. hidl_vec<RequestArgument> outputs(testModel.outputIndexes.size()); hidl_vec<RequestArgument> outputs(testModel.main.outputIndexes.size()); size_t outputSize = 0; for (uint32_t i = 0; i < testModel.outputIndexes.size(); i++) { const auto& op = testModel.operands[testModel.outputIndexes[i]]; for (uint32_t i = 0; i < testModel.main.outputIndexes.size(); i++) { const auto& op = testModel.main.operands[testModel.main.outputIndexes[i]]; // In the case of zero-sized output, we should at least provide a one-byte buffer. // This is because zero-sized tensors are only supported internally to the driver, or Loading Loading @@ -90,8 +90,8 @@ Request createRequest(const TestModel& testModel) { CHECK(inputPtr != nullptr); // Copy input data to the memory pool. for (uint32_t i = 0; i < testModel.inputIndexes.size(); i++) { const auto& op = testModel.operands[testModel.inputIndexes[i]]; for (uint32_t i = 0; i < testModel.main.inputIndexes.size(); i++) { const auto& op = testModel.main.operands[testModel.main.inputIndexes[i]]; if (op.data.size() > 0) { const uint8_t* begin = op.data.get<uint8_t>(); const uint8_t* end = begin + op.data.size(); Loading
neuralnetworks/1.1/vts/functional/GeneratedTestHarness.cpp +13 −12 Original line number Diff line number Diff line Loading @@ -49,10 +49,11 @@ using V1_0::implementation::PreparedModelCallback; Model createModel(const TestModel& testModel) { // Model operands. hidl_vec<Operand> operands(testModel.operands.size()); CHECK_EQ(testModel.referenced.size(), 0u); // Not supported in 1.1. hidl_vec<Operand> operands(testModel.main.operands.size()); size_t constCopySize = 0, constRefSize = 0; for (uint32_t i = 0; i < testModel.operands.size(); i++) { const auto& op = testModel.operands[i]; for (uint32_t i = 0; i < testModel.main.operands.size(); i++) { const auto& op = testModel.main.operands[i]; DataLocation loc = {}; if (op.lifetime == TestOperandLifeTime::CONSTANT_COPY) { Loading @@ -77,9 +78,9 @@ Model createModel(const TestModel& testModel) { } // Model operations. hidl_vec<Operation> operations(testModel.operations.size()); std::transform(testModel.operations.begin(), testModel.operations.end(), operations.begin(), [](const TestOperation& op) -> Operation { hidl_vec<Operation> operations(testModel.main.operations.size()); std::transform(testModel.main.operations.begin(), testModel.main.operations.end(), operations.begin(), [](const TestOperation& op) -> Operation { return {.type = static_cast<OperationType>(op.type), .inputs = op.inputs, .outputs = op.outputs}; Loading @@ -87,8 +88,8 @@ Model createModel(const TestModel& testModel) { // Constant copies. hidl_vec<uint8_t> operandValues(constCopySize); for (uint32_t i = 0; i < testModel.operands.size(); i++) { const auto& op = testModel.operands[i]; for (uint32_t i = 0; i < testModel.main.operands.size(); i++) { const auto& op = testModel.main.operands[i]; if (op.lifetime == TestOperandLifeTime::CONSTANT_COPY) { const uint8_t* begin = op.data.get<uint8_t>(); const uint8_t* end = begin + op.data.size(); Loading @@ -109,8 +110,8 @@ Model createModel(const TestModel& testModel) { reinterpret_cast<uint8_t*>(static_cast<void*>(mappedMemory->getPointer())); CHECK(mappedPtr != nullptr); for (uint32_t i = 0; i < testModel.operands.size(); i++) { const auto& op = testModel.operands[i]; for (uint32_t i = 0; i < testModel.main.operands.size(); i++) { const auto& op = testModel.main.operands[i]; if (op.lifetime == TestOperandLifeTime::CONSTANT_REFERENCE) { const uint8_t* begin = op.data.get<uint8_t>(); const uint8_t* end = begin + op.data.size(); Loading @@ -121,8 +122,8 @@ Model createModel(const TestModel& testModel) { return {.operands = std::move(operands), .operations = std::move(operations), .inputIndexes = testModel.inputIndexes, .outputIndexes = testModel.outputIndexes, .inputIndexes = testModel.main.inputIndexes, .outputIndexes = testModel.main.outputIndexes, .operandValues = std::move(operandValues), .pools = std::move(pools), .relaxComputationFloat32toFloat16 = testModel.isRelaxed}; Loading
neuralnetworks/1.2/vts/functional/CompilationCachingTests.cpp +4 −4 Original line number Diff line number Diff line Loading @@ -207,10 +207,10 @@ TestModel createLargeTestModelImpl(TestOperationType op, uint32_t len) { }; return { .operands = std::move(operands), .main = {.operands = std::move(operands), .operations = std::move(operations), .inputIndexes = {1}, .outputIndexes = {len * 2 + 1}, .outputIndexes = {len * 2 + 1}}, .isRelaxed = false, }; } Loading
neuralnetworks/1.2/vts/functional/GeneratedTestHarness.cpp +18 −17 Original line number Diff line number Diff line Loading @@ -75,10 +75,11 @@ struct TestConfig { Model createModel(const TestModel& testModel) { // Model operands. hidl_vec<Operand> operands(testModel.operands.size()); CHECK_EQ(testModel.referenced.size(), 0u); // Not supported in 1.1. hidl_vec<Operand> operands(testModel.main.operands.size()); size_t constCopySize = 0, constRefSize = 0; for (uint32_t i = 0; i < testModel.operands.size(); i++) { const auto& op = testModel.operands[i]; for (uint32_t i = 0; i < testModel.main.operands.size(); i++) { const auto& op = testModel.main.operands[i]; DataLocation loc = {}; if (op.lifetime == TestOperandLifeTime::CONSTANT_COPY) { Loading Loading @@ -110,9 +111,9 @@ Model createModel(const TestModel& testModel) { } // Model operations. hidl_vec<Operation> operations(testModel.operations.size()); std::transform(testModel.operations.begin(), testModel.operations.end(), operations.begin(), [](const TestOperation& op) -> Operation { hidl_vec<Operation> operations(testModel.main.operations.size()); std::transform(testModel.main.operations.begin(), testModel.main.operations.end(), operations.begin(), [](const TestOperation& op) -> Operation { return {.type = static_cast<OperationType>(op.type), .inputs = op.inputs, .outputs = op.outputs}; Loading @@ -120,8 +121,8 @@ Model createModel(const TestModel& testModel) { // Constant copies. hidl_vec<uint8_t> operandValues(constCopySize); for (uint32_t i = 0; i < testModel.operands.size(); i++) { const auto& op = testModel.operands[i]; for (uint32_t i = 0; i < testModel.main.operands.size(); i++) { const auto& op = testModel.main.operands[i]; if (op.lifetime == TestOperandLifeTime::CONSTANT_COPY) { const uint8_t* begin = op.data.get<uint8_t>(); const uint8_t* end = begin + op.data.size(); Loading @@ -142,8 +143,8 @@ Model createModel(const TestModel& testModel) { reinterpret_cast<uint8_t*>(static_cast<void*>(mappedMemory->getPointer())); CHECK(mappedPtr != nullptr); for (uint32_t i = 0; i < testModel.operands.size(); i++) { const auto& op = testModel.operands[i]; for (uint32_t i = 0; i < testModel.main.operands.size(); i++) { const auto& op = testModel.main.operands[i]; if (op.lifetime == TestOperandLifeTime::CONSTANT_REFERENCE) { const uint8_t* begin = op.data.get<uint8_t>(); const uint8_t* end = begin + op.data.size(); Loading @@ -154,15 +155,15 @@ Model createModel(const TestModel& testModel) { return {.operands = std::move(operands), .operations = std::move(operations), .inputIndexes = testModel.inputIndexes, .outputIndexes = testModel.outputIndexes, .inputIndexes = testModel.main.inputIndexes, .outputIndexes = testModel.main.outputIndexes, .operandValues = std::move(operandValues), .pools = std::move(pools), .relaxComputationFloat32toFloat16 = testModel.isRelaxed}; } static bool isOutputSizeGreaterThanOne(const TestModel& testModel, uint32_t index) { const auto byteSize = testModel.operands[testModel.outputIndexes[index]].data.size(); const auto byteSize = testModel.main.operands[testModel.main.outputIndexes[index]].data.size(); return byteSize > 1u; } Loading Loading @@ -302,17 +303,17 @@ void EvaluatePreparedModel(const sp<IPreparedModel>& preparedModel, const TestMo // either empty, or have the same number of elements as the number of outputs. ASSERT_EQ(ErrorStatus::NONE, executionStatus); ASSERT_TRUE(outputShapes.size() == 0 || outputShapes.size() == testModel.outputIndexes.size()); outputShapes.size() == testModel.main.outputIndexes.size()); break; case OutputType::UNSPECIFIED: // If the model output operands are not fully specified, outputShapes must have // the same number of elements as the number of outputs. ASSERT_EQ(ErrorStatus::NONE, executionStatus); ASSERT_EQ(outputShapes.size(), testModel.outputIndexes.size()); ASSERT_EQ(outputShapes.size(), testModel.main.outputIndexes.size()); break; case OutputType::INSUFFICIENT: ASSERT_EQ(ErrorStatus::OUTPUT_INSUFFICIENT_SIZE, executionStatus); ASSERT_EQ(outputShapes.size(), testModel.outputIndexes.size()); ASSERT_EQ(outputShapes.size(), testModel.main.outputIndexes.size()); ASSERT_FALSE(outputShapes[0].isSufficient); return; } Loading @@ -320,7 +321,7 @@ void EvaluatePreparedModel(const sp<IPreparedModel>& preparedModel, const TestMo // Go through all outputs, check returned output shapes. for (uint32_t i = 0; i < outputShapes.size(); i++) { EXPECT_TRUE(outputShapes[i].isSufficient); const auto& expect = testModel.operands[testModel.outputIndexes[i]].dimensions; const auto& expect = testModel.main.operands[testModel.main.outputIndexes[i]].dimensions; const std::vector<uint32_t> actual = outputShapes[i].dimensions; EXPECT_EQ(expect, actual); } Loading