Détection et attribution d'appareils

Dans Android 10, l'API Neural Networks (NNAPI) introduit des fonctions qui permettent aux bibliothèques et aux applications 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 d'obtenir la version exacte des pilotes présents sur l'appareil afin d'éviter les incompatibilités connues. En donnant aux applications la possibilité de spécifier les appareils qui doivent exécuter différentes sections d'un modèle, celles-ci 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étection 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, c'est-à-dire une interface IDevice unique qui gère plusieurs appareils, éventuellement de types différents. Un pilote avec une interface hétérogène doit également exposer des interfaces IDevice 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 de neurones (NPU, Neural Neural Unit) 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}.