A partir del 27 de marzo de 2025, te recomendamos que uses android-latest-release
en lugar de aosp-main
para compilar y contribuir a AOSP. Para obtener más información, consulta Cambios en AOSP.
Cómo detectar y asignar dispositivos
Organiza tus páginas con colecciones
Guarda y categoriza el contenido según tus preferencias.
En Android 10, la API de Neural Networks (NNAPI) presenta funciones que permiten que las apps y las bibliotecas del framework de aprendizaje automático obtengan información sobre los dispositivos disponibles y especifiquen en qué dispositivos ejecutar un modelo. Proporcionar información sobre los dispositivos disponibles permite a las apps obtener la versión exacta de los controladores que se encuentran en el dispositivo para evitar incompatibilidades conocidas. Al otorgar a las apps la capacidad de especificar cuáles dispositivos ejecutarán diferentes secciones de un modelo, las apps se pueden optimizar para el producto en el que se implementan.
Se requiere compatibilidad con la detección y asignación de dispositivos para las implementaciones de NN HAL 1.2.
Implementación
Para admitir las funciones de descubrimiento y asignación de dispositivos en NNAPI, implementa getType
y getVersionString
en IDevice.hal
para permitir que el framework obtenga el tipo de dispositivo y la versión del controlador.
Para cada dispositivo, especifica el tipo como una de las siguientes categorías, como se especifica en DeviceType
en types.hal
.
OTHER
: Un dispositivo que no pertenece a ninguna de las otras categorías, incluida una interfaz heterogénea, que es una sola interfaz IDevice
que administra varios dispositivos, posiblemente de diferentes tipos. Un controlador con una interfaz heterogénea también debe exponer interfaces IDevice
separadas que correspondan a dispositivos individuales para permitir que una aplicación elija entre esos dispositivos.
CPU
: Es una CPU de un solo núcleo o multinúcleo.
GPU
: Es una GPU que puede ejecutar modelos de NNAPI y acelerar APIs de gráficos, como OpenGL ES y Vulkan.
ACCELERATOR
: Es una unidad de procesamiento neuronal (NPU) dedicada.
Implementa
getVersionString
en IDevice.hal
para obtener la cadena de versión de la implementación del dispositivo.
Este método debe mostrar una cadena legible por humanos. El formato de la cadena es específico del proveedor. La cadena de versión debe ser diferente para cada versión nueva de un controlador.
El nombre de la interfaz IDevice
debe seguir el formato {VENDOR}-{DEVICE_NAME}
.
El contenido y las muestras de código que aparecen en esta página están sujetas a las licencias que se describen en la Licencia de Contenido. Java y OpenJDK son marcas registradas de Oracle o sus afiliados.
Última actualización: 2025-07-27 (UTC)
[[["Fácil de comprender","easyToUnderstand","thumb-up"],["Resolvió mi problema","solvedMyProblem","thumb-up"],["Otro","otherUp","thumb-up"]],[["Falta la información que necesito","missingTheInformationINeed","thumb-down"],["Muy complicado o demasiados pasos","tooComplicatedTooManySteps","thumb-down"],["Desactualizado","outOfDate","thumb-down"],["Problema de traducción","translationIssue","thumb-down"],["Problema con las muestras o los códigos","samplesCodeIssue","thumb-down"],["Otro","otherDown","thumb-down"]],["Última actualización: 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."]]