Geräteerkennung und -zuweisung

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 einzelne IDevice Schnittstelle handelt, die mehrere Geräte, möglicherweise unterschiedlichen Typs, verwaltet. Ein Treiber mit einer heterogenen Schnittstelle sollte auch separate IDevice 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.