A partir de 27 de março de 2025, recomendamos usar android-latest-release
em vez de aosp-main
para criar e contribuir com o AOSP. Para mais informações, consulte Mudanças no AOSP.
Descoberta e atribuição de dispositivos
Mantenha tudo organizado com as coleções
Salve e categorize o conteúdo com base nas suas preferências.
No Android 10, a
API Neural Networks (NNAPI)
apresenta funções que permitem que
bibliotecas e apps do framework de aprendizado de máquina
recebam informações sobre os dispositivos disponíveis e
especifiquem em quais dispositivos executar um modelo. A disponibilização de informações sobre os
dispositivos disponíveis permite que os apps saibam a versão exata dos drivers
encontrados no dispositivo para evitar incompatibilidades conhecidas. Ao conceder aos apps a
capacidade de especificar quais dispositivos precisam executar seções diferentes de um modelo,
os apps podem ser otimizados para o produto em que são implantados.
O suporte à descoberta e atribuição de dispositivos é necessário para implementações
da HAL 1.2 de NN.
Implementação
Para oferecer suporte aos recursos de descoberta e atribuição de dispositivos na NNAPI, implemente
getType
e
getVersionString
em IDevice.hal
para permitir que o framework receba o tipo de dispositivo e a versão
do driver.
Para cada dispositivo, especifique o tipo como uma das categorias a seguir, conforme
especificado em
DeviceType
em
types.hal
.
OTHER
:um dispositivo que não se enquadra em nenhuma das outras
categorias, incluindo uma interface heterogênea, que é uma única interface IDevice
que gerencia vários dispositivos, possivelmente de tipos diferentes. Um
driver com uma interface heterogênea também precisa expor
interfaces IDevice
separadas que correspondem a dispositivos individuais para
permitir que um aplicativo escolha entre esses dispositivos.
CPU
:uma CPU single ou multicore.
GPU
:uma GPU que pode executar modelos da NNAPI e acelerar APIs gráficas, como
o OpenGL ES e o Vulkan.
ACCELERATOR
:uma unidade de processamento neural (NPU) dedicada.
Implemente
getVersionString
em IDevice.hal
para receber a string de versão da implementação do dispositivo.
Esse método precisa retornar uma string legível por humanos. O formato da
string é específico do fornecedor. A string de versão precisa ser diferente para cada nova
versão de um driver.
O nome da interface IDevice
precisa seguir o formato
{VENDOR}-{DEVICE_NAME}
.
O conteúdo e os exemplos de código nesta página estão sujeitos às licenças descritas na Licença de conteúdo. Java e OpenJDK são marcas registradas da Oracle e/ou suas afiliadas.
Última atualização 2025-07-27 UTC.
[[["Fácil de entender","easyToUnderstand","thumb-up"],["Meu problema foi resolvido","solvedMyProblem","thumb-up"],["Outro","otherUp","thumb-up"]],[["Não contém as informações de que eu preciso","missingTheInformationINeed","thumb-down"],["Muito complicado / etapas demais","tooComplicatedTooManySteps","thumb-down"],["Desatualizado","outOfDate","thumb-down"],["Problema na tradução","translationIssue","thumb-down"],["Problema com as amostras / o código","samplesCodeIssue","thumb-down"],["Outro","otherDown","thumb-down"]],["Última atualização 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."]]