在 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}
格式。