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