No Android 10, a API de redes neurais (NNAPI) introduz funções que permitem que bibliotecas e aplicativos de estrutura de aprendizado de máquina obtenham informações sobre os dispositivos disponíveis e especifiquem em quais dispositivos executar um modelo. Fornecer informações sobre os dispositivos disponíveis permite que os aplicativos obtenham a versão exata dos drivers encontrados no dispositivo para evitar incompatibilidades conhecidas. Ao dar aos aplicativos a capacidade de especificar quais dispositivos devem executar diferentes seções de um modelo, os aplicativos podem ser otimizados para o produto no qual estão implantados.
O suporte para descoberta e atribuição de dispositivos é necessário para implementações de NN HAL 1.2.
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 a estrutura obtenha o tipo de dispositivo e a versão do driver.
Para cada dispositivo, especifique o tipo como uma das seguintes categorias, 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 interfaceIDevice
única que gerencia vários dispositivos, possivelmente de tipos diferentes. Um driver com uma interface heterogênea também deve expor interfacesIDevice
separadas que correspondem a dispositivos individuais para permitir que um aplicativo escolha entre esses dispositivos. -
CPU
: Uma CPU de núcleo único ou multicore. -
GPU
: Uma GPU que pode executar modelos NNAPI e acelerar APIs gráficas como OpenGL ES e Vulkan. -
ACCELERATOR
: Uma unidade de processamento neural (NPU) dedicada.
Implemente getVersionString
em IDevice.hal
para obter a string de versão da implementação do dispositivo. Este método deve retornar uma string legível por humanos. O formato da string é específico do fornecedor. A string da versão deve ser diferente para cada nova versão de um driver.
O nome da interface IDevice
deve seguir o formato {VENDOR}-{DEVICE_NAME}
.