In Android 10, the Neural Networks API (NNAPI) introduces functions that allow machine learning framework libraries and apps to get information about the devices available and specify which devices to execute a model on. Providing information about the available devices allows apps to get the exact version of the drivers found on the device to avoid known incompatibilities. By giving apps the ability to specify which devices are to execute different sections of a model, apps can be optimized for the product on which they are deployed.
Support for device discovery and assignment is required for NN HAL 1.2 implementations.
To support the device discovery and assignment features in NNAPI, implement
IDevice.hal to allow the framework to get the device type and driver
For each device, specify the type as one of the following categories as
OTHER: A device that doesn't fall into any of the other categories, including a heterogeneous interface, which is a single
IDeviceinterface that manages multiple devices, possibly of different types. A driver with a heterogeneous interface should also expose separate
IDeviceinterfaces that correspond to individual devices to allow an application to choose from those devices.
CPU: A single core or multicore CPU.
GPU: A GPU that can run NNAPI models and accelerate graphics APIs such as OpenGL ES and Vulkan.
ACCELERATOR: A dedicated neural processing unit (NPU).
IDevice.hal for getting the version string of the device implementation.
This method must return a string that is human readable. The format of the
string is vendor specific. The version string must be different for each new
version of a driver.
The name of the
IDevice interface must follow the