Geräteerkennung und -zuweisung

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 einzelne IDevice-Schnittstelle, über die mehrere Geräte verwaltet werden, möglicherweise unterschiedlicher Typen. Ein Treiber mit einer heterogenen Schnittstelle sollte auch separate IDevice-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.