In Android 10 werden mit der Neural Networks API (NNAPI) Funktionen eingeführt, mit denen Bibliotheken und Apps des Frameworks für maschinelles Lernen Informationen zu den verfügbaren Geräten abrufen und angeben können, auf welchen Geräten ein Modell ausgeführt werden soll. Wenn Sie Informationen zu den verfügbaren Geräten angeben, können Apps die genaue Version der auf dem Gerät gefundenen Treiber abrufen, um bekannte Inkompatibilitäten zu vermeiden. Wenn Apps angeben können, welche Geräte verschiedene Bereiche eines Modells ausführen sollen, können sie für das Produkt optimiert werden, auf dem sie bereitgestellt werden.
Für NN HAL 1.2-Implementierungen ist die Unterstützung der 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
in types.hal
angegeben.
OTHER
:Ein Gerät, das in keine der anderen Kategorien fällt, einschließlich einer heterogenen Schnittstelle, d. h. einer einzelnenIDevice
-Schnittstelle, über die mehrere Geräte verwaltet werden, möglicherweise verschiedener Typen. 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 Multi-Core-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).
Implementiere getVersionString
in IDevice.hal
, um den Versionsstring der Geräteimplementierung abzurufen.
Diese Methode muss einen für Menschen lesbaren String zurückgeben. Das Format des Strings ist anbieterspezifisch. Der Versionsstring muss für jede neue Version eines Treibers unterschiedlich sein.
Der Name der IDevice
-Benutzeroberfläche muss dem Format {VENDOR}-{DEVICE_NAME}
entsprechen.