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 du cadre d'apprentissage automatique d'obtenir des informations sur les appareils disponibles et de spécifier sur quels appareils exécuter un modèle. Fournir des informations sur les appareils disponibles permet aux applications d'obtenir la version exacte des pilotes trouvés sur l'appareil afin d'éviter les incompatibilités connues. En donnant aux applications la possibilité de spécifier quels appareils doivent exécuter différentes sections d'un modèle, les applications peuvent être optimisées pour le produit sur lequel elles sont déployées.

La prise en charge de la découverte et de l'affectation des appareils est requise pour les implémentations de NN HAL 1.2.

Mise en œuvre

Pour prendre en charge les fonctionnalités de découverte et d'attribution de périphériques dans NNAPI, implémentez getType et getVersionString dans IDevice.hal pour permettre à l'infrastructure d'obtenir le type de périphérique et la version du pilote.

Pour chaque appareil, spécifiez le type dans l'une des catégories suivantes, comme spécifié dans DeviceType dans types.hal .

  • OTHER : Un appareil qui n'entre dans 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 types différents. 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 : Un processeur monocœur ou multicœur.
  • GPU : Un GPU capable d'exécuter des modèles NNAPI et d'accélérer les API graphiques telles que OpenGL ES et Vulkan.
  • ACCELERATOR : Une unité de traitement neuronal dédiée (NPU).

Implémentez getVersionString dans IDevice.hal pour obtenir la chaîne de version de l'implémentation du périphérique. Cette méthode doit renvoyer une chaîne lisible par l’homme. Le format de la chaîne dépend du fournisseur. La chaîne de version doit être différente pour chaque nouvelle version d'un pilote.

Le nom de l'interface IDevice doit suivre le format {VENDOR}-{DEVICE_NAME} .