Ab dem 27. März 2025 empfehlen wir, android-latest-release
anstelle von aosp-main
zu verwenden, um AOSP zu erstellen und Beiträge dazu zu leisten. Weitere Informationen finden Sie unter Änderungen am AOSP.
Geräteerkennung und -zuweisung
Mit Sammlungen den Überblick behalten
Sie können Inhalte basierend auf Ihren Einstellungen speichern und kategorisieren.
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
unter types.hal
angegeben.
OTHER
:Ein Gerät, das in keine der anderen Kategorien fällt, einschließlich einer heterogenen Schnittstelle, d. h. einer einzelnen IDevice
-Schnittstelle, über die mehrere Geräte verwaltet werden, möglicherweise verschiedener 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-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 spezielle 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.
Alle Inhalte und Codebeispiele auf dieser Seite unterliegen den Lizenzen wie im Abschnitt Inhaltslizenz beschrieben. Java und OpenJDK sind Marken oder eingetragene Marken von Oracle und/oder seinen Tochtergesellschaften.
Zuletzt aktualisiert: 2025-07-27 (UTC).
[[["Leicht verständlich","easyToUnderstand","thumb-up"],["Mein Problem wurde gelöst","solvedMyProblem","thumb-up"],["Sonstiges","otherUp","thumb-up"]],[["Benötigte Informationen nicht gefunden","missingTheInformationINeed","thumb-down"],["Zu umständlich/zu viele Schritte","tooComplicatedTooManySteps","thumb-down"],["Nicht mehr aktuell","outOfDate","thumb-down"],["Problem mit der Übersetzung","translationIssue","thumb-down"],["Problem mit Beispielen/Code","samplesCodeIssue","thumb-down"],["Sonstiges","otherDown","thumb-down"]],["Zuletzt aktualisiert: 2025-07-27 (UTC)."],[],[],null,["# Device discovery and assignment\n\n| **Deprecated:** Starting in Android 15, the\n| [NNAPI (NDK API)](https://developer.android.com/ndk/guides/neuralnetworks) is deprecated. The Neural Networks HAL interface\n| continues to be supported.\n|\n| For more information, see the\n| [NNAPI Migration Guide](https://developer.android.com/ndk/guides/neuralnetworks/migration-guide).\n\nIn Android 10, the\n[Neural Networks API (NNAPI)](/docs/core/interaction/neural-networks)\nintroduces functions that allow\nmachine learning framework\nlibraries and apps to get information about the devices available and\nspecify which devices to execute a model on. Providing information about the\navailable devices allows apps to get the exact version of the drivers\nfound on the device to avoid known incompatibilities. By giving apps the\nability to specify which devices are to execute different sections of a model,\napps can be optimized for the product on which they are deployed.\n\nSupport for device discovery and assignment is required for NN HAL 1.2\nimplementations.\n\nImplementation\n--------------\n\nTo support the device discovery and assignment features in NNAPI, implement\n[`getType`](https://android.googlesource.com/platform/hardware/interfaces/+/refs/heads/android16-release/neuralnetworks/1.2/IDevice.hal#76)\nand\n[`getVersionString`](https://android.googlesource.com/platform/hardware/interfaces/+/refs/heads/android16-release/neuralnetworks/1.2/IDevice.hal#56)\nin `IDevice.hal` to allow the framework to get the device type and driver\nversion.\n\nFor each device, specify the type as one of the following categories as\nspecified in\n[`DeviceType`](https://android.googlesource.com/platform/hardware/interfaces/+/refs/heads/android16-release/neuralnetworks/1.2/types.hal#4737)\nin\n[`types.hal`](https://android.googlesource.com/platform/hardware/interfaces/+/refs/heads/android16-release/neuralnetworks/1.2/types.hal).\n\n- **`OTHER`:** A device that doesn't fall into any of the other categories, including a heterogeneous interface, which is a single `IDevice` interface that manages multiple devices, possibly of different types. A driver with a heterogeneous interface should also expose separate `IDevice` interfaces that correspond to individual devices to allow an application to choose from those devices.\n- **`CPU`:** A single core or multicore CPU.\n- **`GPU`:** A GPU that can run NNAPI models and accelerate graphics APIs such as OpenGL ES and Vulkan.\n- **`ACCELERATOR`:** A dedicated neural processing unit (NPU).\n\nImplement\n[`getVersionString`](https://android.googlesource.com/platform/hardware/interfaces/+/refs/heads/android16-release/neuralnetworks/1.2/IDevice.hal#56)\nin `IDevice.hal` for getting the version string of the device implementation.\nThis method must return a string that is human readable. The format of the\nstring is vendor specific. The version string must be different for each new\nversion of a driver.\n\nThe name of the `IDevice` interface must follow the `{VENDOR}-{DEVICE_NAME}`\nformat."]]