Geräteerkennung und -zuweisung

In Android 10 werden von der Neural Networks API (NNAPI) Funktionen eingeführt, mit denen Framework-Bibliotheken und -Apps für maschinelles Lernen Informationen zu verfügbaren Geräten abrufen und angeben können, auf welchen Geräten ein Modell ausgeführt werden soll. Durch die Angabe von Informationen zu den verfügbaren Geräten können Apps die genaue Version der Treiber abrufen, die auf dem Gerät gefunden wurden, um bekannte Inkompatibilitäten zu vermeiden. Indem Sie Anwendungen die Möglichkeit geben, festzulegen, welche Geräte die verschiedenen Abschnitte eines Modells ausführen sollen, lassen sich Anwendungen für das Produkt optimieren, auf dem sie bereitgestellt werden.

Für NN HAL 1.2-Implementierungen ist Unterstützung für die Geräteerkennung und ‐zuweisung erforderlich.

Implementierung

Damit die Funktionen zur Geräteerkennung und -zuweisung in NNAPI unterstützt werden, 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, bei der es sich um eine einzelne IDevice-Schnittstelle handelt, die mehrere Geräte verwaltet, möglicherweise unterschiedlicher Typen. 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- 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).

Implementiere getVersionString in IDevice.hal, um den Versionsstring der Geräteimplementierung abzurufen. Diese Methode muss einen String zurückgeben, der für Menschen lesbar ist. 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.