Dans Android 10, l'API Neural Networks (NNAPI) introduit des fonctions permettant aux applications et aux bibliothèques de framework de machine learning d'obtenir des informations sur les appareils disponibles et de spécifier les appareils sur lesquels exécuter un modèle. Fournir des informations sur les appareils disponibles permet aux applications de récupérer la version exacte des pilotes qui se trouvent sur un appareil afin d'éviter les incompatibilités connues. En donnant aux applications la possibilité de spécifier les appareils devant exécuter différentes sections d'un modèle, elles peuvent être optimisées pour le produit sur lequel elles sont déployées.
La compatibilité avec la détection et l'attribution d'appareils est requise pour les implémentations NN HAL 1.2.
Implémentation
Pour prendre en charge les fonctionnalités de découverte et d'attribution d'appareils dans NNAPI, implémentez getType
et getVersionString
dans IDevice.hal
pour permettre au framework d'obtenir le type d'appareil et la version du pilote.
Pour chaque appareil, spécifiez le type comme l'une des catégories suivantes, comme indiqué dans DeviceType
dans types.hal
.
OTHER
:appareil qui ne correspond à aucune des autres catégories, y compris une interface hétérogène, qui est une interfaceIDevice
unique qui gère plusieurs appareils, éventuellement de différents types. Un pilote doté d'une interface hétérogène doit également exposer des interfacesIDevice
distinctes correspondant à des appareils individuels pour permettre à une application de choisir parmi ces appareils.CPU
:processeur à cœur unique ou multicœur.GPU
:GPU pouvant exécuter des modèles NNAPI et accélérer les API graphiques telles qu'OpenGL ES et Vulkan.ACCELERATOR
:unité de traitement neuronal (NPU) dédiée.
Implémentez getVersionString
dans IDevice.hal
pour obtenir la chaîne de version de l'implémentation de l'appareil.
Cette méthode doit renvoyer une chaîne lisible. Le format de la chaîne est spécifique au fournisseur. La chaîne de version doit être différente pour chaque nouvelle version d'un pilote.
Le nom de l'interface IDevice
doit respecter le format {VENDOR}-{DEVICE_NAME}
.