在Android 10中,神經網絡API(NNAPI)引入了一些功能,這些功能允許機器學習框架庫和應用獲取有關可用設備的信息,並指定要在哪個設備上執行模型。提供有關可用設備的信息可讓應用獲取在設備上找到的驅動程序的確切版本,以避免已知的不兼容性。通過使應用程序能夠指定哪些設備將執行模型的不同部分,可以針對其所部署的產品優化應用程序。
NN HAL 1.2實施需要設備發現和分配支持。
實作
為了支持設備發現和分配特徵NNAPI,實現getType
和getVersionString
在IDevice.hal
允許的框架來獲得設備類型和驅動程序版本。
對於每個設備,將類型指定為以下類別之一,如在types.hal
中的DeviceType
中所指定。
-
OTHER
:不屬於任何其他類別的設備,包括異構接口,該接口是管理多個設備(可能是不同類型)的單個IDevice
接口。具有異構接口的驅動程序還應公開與各個設備相對應的單獨的IDevice
接口,以允許應用程序從那些設備中進行選擇。 -
CPU
:單核或多核CPU。 -
GPU
:可以運行NNAPI模型並加速圖形API(例如OpenGL ES和Vulkan)的GPU。 -
ACCELERATOR
:專用的神經處理單元(NPU)。
在IDevice.hal
實現getVersionString
以獲取設備實現的版本字符串。此方法必須返回人類可讀的字符串。字符串的格式是特定於供應商的。每個新版本的驅動程序的版本字符串都必須不同。
IDevice
接口的名稱必須遵循{VENDOR}-{DEVICE_NAME}
格式。