Removed operationTuple from Model in the HAL, as the data type was
redundant information.
Removed supportedOperationTuples from Capabilities, as real drivers need
more complex restrictions than this provided. For the OC-MR1, we'll just
rely on getSupportedNodes.
Also removed the unused cachesCompilation.
Bug:
63905942
Test: Compiled and ran tests.
Change-Id: I15f33d14634f2e1c8d726b1bd01d5b9e123b47ea
};
/**
- * A typed operation.
- */
-struct OperationTuple {
- /**
- * The type of operation.
- */
- OperationType operationType;
-
- /**
- * The input data type of operation.
- */
- OperandType operandType;
-};
-
-/**
* Performance information for the reference workload.
*
* Used by a driver to report its performance characteristics.
*/
struct Capabilities {
/**
- * A collection of typed operations supported by the driver.
- */
- vec<OperationTuple> supportedOperationTuples;
-
- /**
- * Indicates whether a driver caches its prepared model for reuse the next
- * time the application begins. This is useful because the model may have
- * been prepared in a previous run.
- *
- * True if caching is supported, false otherwise.
- */
- bool cachesCompilation;
-
- /**
* Driver performance when operating on float32 data.
*/
PerformanceInfo float32Performance;
*/
struct Operation {
/**
- * The tuple describing the operation type and input type.
+ * The operation type.
*/
- OperationTuple opTuple;
+ OperationType type;
/**
* Describes the table that contains the indexes of the inputs of the
};
const std::vector<Operation> operations = {{
- .opTuple = {OperationType::ADD, OperandType::TENSOR_FLOAT32},
- .inputs = {operand1, operand2, operand3},
- .outputs = {operand4},
+ .type = OperationType::ADD, .inputs = {operand1, operand2, operand3}, .outputs = {operand4},
}};
const std::vector<uint32_t> inputIndexes = {operand1};
// create first invalid model
Model createInvalidTestModel1() {
Model model = createValidTestModel();
- model.operations[0].opTuple = {static_cast<OperationType>(0xDEADBEEF) /* INVALID */,
- OperandType::TENSOR_FLOAT32};
+ model.operations[0].type = static_cast<OperationType>(0xDEADBEEF); /* INVALID */
return model;
}
Return<void> ret =
device->getCapabilities([](ErrorStatus status, const Capabilities& capabilities) {
EXPECT_EQ(ErrorStatus::NONE, status);
- EXPECT_NE(nullptr, capabilities.supportedOperationTuples.data());
- EXPECT_NE(0ull, capabilities.supportedOperationTuples.size());
- EXPECT_EQ(0u, static_cast<uint32_t>(capabilities.cachesCompilation) & ~0x1);
EXPECT_LT(0.0f, capabilities.float32Performance.execTime);
EXPECT_LT(0.0f, capabilities.float32Performance.powerUsage);
EXPECT_LT(0.0f, capabilities.quantized8Performance.execTime);