Détection et attribution d'appareils

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 l'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 prise en charge de la détection et de 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 dans 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 interface IDevice unique qui gère plusieurs appareils, éventuellement de différents types. Un pilote avec une interface hétérogène doit également exposer des interfaces IDevice distinctes qui correspondent à des appareils individuels pour permettre à une application de choisir parmi ces appareils.
  • CPU:processeur à cœur unique ou multicœur.
  • GPU:GPU capable d'exécuter des modèles NNAPI et d'accélérer des API graphiques telles qu'OpenGL ES et Vulkan.
  • ACCELERATOR:unité de traitement neuronale (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}.