In Android 10 werden mit der Neural Networks API (NNAPI) Funktionen eingeführt, mit denen Bibliotheken und Apps für Machine-Learning-Frameworks Informationen zu den verfügbaren Geräten abrufen und angeben können, 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. Wenn Apps angeben können, auf welchen Geräten verschiedene Abschnitte eines Modells ausgeführt werden sollen, können sie für das Produkt optimiert werden, auf dem sie bereitgestellt werden.
Die Unterstützung für die Geräteerkennung und ‑zuweisung ist für NN HAL 1.2-Implementierungen erforderlich.
Implementierung
Zur Unterstützung der Funktionen zur Geräteerkennung und ‑zuweisung in NNAPI müssen Sie getType
und getVersionString
in IDevice.hal
implementieren, 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. Das ist eine einzelneIDevice
-Schnittstelle, über die mehrere Geräte verwaltet werden, möglicherweise unterschiedlicher Typen. Ein Treiber mit einer heterogenen Schnittstelle sollte auch separateIDevice
-Schnittstellen für die einzelnen Geräte bereitstellen, damit eine Anwendung zwischen diesen Geräten auswählen kann.CPU
:Eine Single-Core- oder Multicore-CPU.GPU
:Eine GPU, auf der NNAPI-Modelle ausgeführt und Grafik-APIs wie OpenGL ES und Vulkan beschleunigt werden können.ACCELERATOR
:Eine spezielle Neural Processing Unit (NPU).
Implementieren Sie getVersionString
in IDevice.hal
, um den Versionsstring der Geräteimplementierung abzurufen.
Diese Methode muss einen für Nutzer 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
-Schnittstelle muss dem Format {VENDOR}-{DEVICE_NAME}
entsprechen.