A partire dal 27 marzo 2025, ti consigliamo di utilizzare android-latest-release
anziché aosp-main
per compilare e contribuire ad AOSP. Per ulteriori informazioni, vedi Modifiche ad AOSP.
Rilevamento e assegnazione dei dispositivi
Mantieni tutto organizzato con le raccolte
Salva e classifica i contenuti in base alle tue preferenze.
In Android 10, l'API Neural Networks (NNAPI) introduce funzioni che consentono alle librerie e alle app del framework di machine learning di ottenere informazioni sui dispositivi disponibili e di specificare su quali dispositivi eseguire un modello. Fornendo informazioni sui dispositivi disponibili, le app possono ottenere la versione esatta dei driver trovati sul dispositivo per evitare incompatibilità note. Se le app hanno la possibilità di specificare su quali dispositivi eseguire sezioni diverse di un modello, possono essere ottimizzate per il prodotto su cui vengono implementate.
Il supporto per il rilevamento e l'assegnazione dei dispositivi è obbligatorio per le implementazioni di NN HAL 1.2.
Implementazione
Per supportare le funzionalità di rilevamento e assegnazione dei dispositivi in NNAPI, implementa
getType
e
getVersionString
in IDevice.hal
per consentire al framework di ottenere il tipo di dispositivo e la versione del driver.
Per ogni dispositivo, specifica il tipo come una delle seguenti categorie, come indicato in DeviceType
in types.hal
.
OTHER
: un dispositivo che non rientra in nessuna delle altre categorie, inclusa un'interfaccia eterogenea, ovvero un'unica interfaccia IDevice
che gestisce più dispositivi, eventualmente di tipi diversi. Un driver con un'interfaccia eterogenea deve anche esporre interfacce IDevice
separate che corrispondono ai singoli dispositivi per consentire a un'applicazione di scegliere tra questi dispositivi.
CPU
: una CPU single core o multicore.
GPU
: una GPU in grado di eseguire modelli NNAPI e accelerare API di grafica come OpenGL ES e Vulkan.
ACCELERATOR
: un'unità di elaborazione neurale (NPU) dedicata.
Implementa
getVersionString
in IDevice.hal
per ottenere la stringa della versione dell'implementazione del dispositivo.
Questo metodo deve restituire una stringa leggibile. Il formato della stringa è specifico del fornitore. La stringa di versione deve essere diversa per ogni nuova versione di un driver.
Il nome dell'interfaccia IDevice
deve seguire il formato {VENDOR}-{DEVICE_NAME}
.
I campioni di contenuti e codice in questa pagina sono soggetti alle licenze descritte nella Licenza per i contenuti. Java e OpenJDK sono marchi o marchi registrati di Oracle e/o delle sue società consociate.
Ultimo aggiornamento 2025-07-27 UTC.
[[["Facile da capire","easyToUnderstand","thumb-up"],["Il problema è stato risolto","solvedMyProblem","thumb-up"],["Altra","otherUp","thumb-up"]],[["Mancano le informazioni di cui ho bisogno","missingTheInformationINeed","thumb-down"],["Troppo complicato/troppi passaggi","tooComplicatedTooManySteps","thumb-down"],["Obsoleti","outOfDate","thumb-down"],["Problema di traduzione","translationIssue","thumb-down"],["Problema relativo a esempi/codice","samplesCodeIssue","thumb-down"],["Altra","otherDown","thumb-down"]],["Ultimo aggiornamento 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."]]