summaryrefslogtreecommitdiff
path: root/neuralnetworks/1.0/utils/test/PreparedModelTest.cpp
AgeCommit message (Collapse)Author
2022-01-20HAL interface for compilation and execution hintsMiao Wang
The following AIDL types are added: - TokenValuePair - PrepareModelConfig - ExecutionConfig The following AIDL methods are added: - IDevice::prepareModelWithConfig - IPreparedModel::executeSynchronouslyWithConfig - IPreparedModel::executeFencedWithConfig - IBurst::executeSynchronouslyWithConfig The compilation and execution hints are being stored as a list of token-value pairs as part of the PrepareModelConfig / ExecutionConfig. And the PrepareModelConfig / ExecutionConfig parcelables are created in order to make future extensions to the execution related interfaces easier. It is the drivers responsibility to verify the hints, and it is allowed for the driver to ignore them. Bug: 203248587 Test: neuralnetworks_utils_hal_aidl_test Change-Id: I98240fd75089fc85cdfcaa0be28aab8a6f0dfca5
2021-05-06Introduce reusable execution to canonical interface -- HAL.Xusong Wang
This CL modifies the canonical interface for reusable executions: - Add new interface: IExecution with compute and computeFenced methods - Add new method IPreparedModel::createExecution In NNAPI runtime, the new interface IExecution is used to memoize request-specific execution resources (e.g. converted HAL request). The expected usage is that, IPreparedModel::createExecution will be invoked in the first computation of a reusable NDK ANNExecution object, and IExecution::compute* will be invoked repeatedly. The IPreparedModel::execute* methods are preserved to avoid redundant object creation and memoization overhead for a single-time (non-reusable) execution. For a vendor implementing the canonical interfaces, only the IPreparedModel::execute* methods will be called because there is currently no reusable execution at HAL interface. A DefaultExecution implementation is provided to reduce the work needed on the vendor side. Bug: 184073769 Test: NNT_static Test: neuralnetworks_utils_hal_1_0_test Test: neuralnetworks_utils_hal_1_1_test Test: neuralnetworks_utils_hal_1_2_test Test: neuralnetworks_utils_hal_1_3_test Test: neuralnetworks_utils_hal_common_test Test: neuralnetworks_utils_hal_aidl_test Change-Id: I91790bb5ccf5ae648687fe603f88ffda2c9fd2b2
2021-04-02Add additional parameters for NN Burst -- HALMichael Butler
Adds deadline and loopTimeoutDuration to nn::IBurst::execute. This CL additionally adds a test case for IPreparedModel::configureExecutionBurst and adds the suffix "_H" to the header guards that were missing "_H". Bug: 180492058 Bug: 177267324 Test: mma Test: NeuralNetworksTest_static Change-Id: Ic9ba2fb9b4dee4e40d99ae91bb9555a58d0508d2 Merged-In: Ic9ba2fb9b4dee4e40d99ae91bb9555a58d0508d2 (cherry picked from commit bbbdb0d5f118efa8159c3cc98304208fd7631609)
2021-01-08Create unit tests for NN interface utility codeMichael Butler
This CL introduces unit tests to validate the V1_X::utils::Device, *PreparedModel, and *Buffer adapter classes. It does so by mocking the underlying HIDL interface in order to simulate a driver returning bad data, HIDL transport failures, and service crashes. Note that the purpose of these new tests is to validate the adapter classes themselves, not the HIDL interfaces they use. For example, because nn::IPreparedModel does not currently define a method for configuring a burst execution, V1_[23]::utils::PreparedModel similarly does not use hardware::neuralnetworks::V1_[23]::IPreparedModel's configureExecutionBurst method. This CL also introduces unit tests to validate the utils::Resilient* adapter classes, and mocks DEAD_OBJECT failures to ensure that the underyling object can be recovered appropriately. Bug: 163801800 Test: mma Test: atest neuralnetworks_utils_hal_common_test Test: atest neuralnetworks_utils_hal_1_[0-3]_test Change-Id: I2c79865bf666d3f4bf53061ff5090746403583e9 Merged-In: I2c79865bf666d3f4bf53061ff5090746403583e9 (cherry picked from commit afc4d7cfe753669b08562eba8f58cbceefed334f)