In Android 10 führt die Neural Networks API (NNAPI) Funktionen ein, die es Framework-Bibliotheken und Apps für maschinelles Lernen ermöglichen, Informationen über die verfügbaren Geräte abzurufen und anzugeben, auf welchen Geräten ein Modell ausgeführt werden soll. Durch die Bereitstellung von Informationen zu den verfügbaren Geräten können Apps die genaue Version der auf dem Gerät gefundenen Treiber abrufen, um bekannte Inkompatibilitäten zu vermeiden. Indem Apps die Möglichkeit erhalten, anzugeben, welche Geräte verschiedene Abschnitte eines Modells ausführen sollen, können Apps für das Produkt optimiert werden, auf dem sie bereitgestellt werden.
Für NN HAL 1.2-Implementierungen ist Unterstützung für Geräteerkennung und -zuweisung erforderlich.
Implementierung
Um die Funktionen zur Geräteerkennung und -zuweisung in NNAPI zu unterstützen, implementieren Sie getType
und getVersionString
in IDevice.hal
, damit das Framework den Gerätetyp und die Treiberversion abrufen kann.
Geben Sie für jedes Gerät den Typ als eine der folgenden Kategorien an, wie in DeviceType
types.hal
angegeben.
-
OTHER
: Ein Gerät, das in keine der anderen Kategorien fällt, einschließlich einer heterogenen Schnittstelle, bei der es sich um eine einzelneIDevice
Schnittstelle handelt, die mehrere Geräte, möglicherweise unterschiedlichen Typs, verwaltet. Ein Treiber mit einer heterogenen Schnittstelle sollte auch separateIDevice
Schnittstellen bereitstellen, die einzelnen Geräten entsprechen, damit eine Anwendung aus diesen Geräten auswählen kann. -
CPU
: Eine Single-Core- oder Multicore-CPU. -
GPU
: Eine GPU, die NNAPI-Modelle ausführen und Grafik-APIs wie OpenGL ES und Vulkan beschleunigen kann. -
ACCELERATOR
: Eine dedizierte neuronale Verarbeitungseinheit (NPU).
Implementieren Sie getVersionString
in IDevice.hal
, um die Versionszeichenfolge der Geräteimplementierung abzurufen. Diese Methode muss eine Zeichenfolge zurückgeben, die für Menschen lesbar ist. Das Format der Zeichenfolge ist herstellerspezifisch. Die Versionszeichenfolge muss für jede neue Version eines Treibers unterschiedlich sein.
Der Name der IDevice
Schnittstelle muss dem Format {VENDOR}-{DEVICE_NAME}
folgen.