Rilevamento e assegnazione del dispositivo

In Android 10, la Neural Networks API (NNAPI) introduce funzioni che consentono alle librerie e alle app del framework di machine learning di ottenere informazioni sui dispositivi disponibili e specificare su quali dispositivi eseguire un modello. Fornire informazioni sui dispositivi disponibili consente alle app di ottenere la versione esatta dei driver trovati sul dispositivo per evitare incompatibilità note. Dando alle app la possibilità di specificare quali dispositivi devono eseguire diverse sezioni di un modello, le app possono essere ottimizzate per il prodotto su cui vengono distribuite.

Il supporto per il rilevamento e l'assegnazione dei dispositivi è richiesto per le implementazioni NN HAL 1.2.

Implementazione

Per supportare le funzionalità di rilevamento e assegnazione dei dispositivi in ​​NNAPI, implementa getType e getVersionString in IDevice.hal per consentire al framework di ottenere il tipo di dispositivo e la versione del driver.

Per ciascun dispositivo, specificare il tipo come una delle seguenti categorie come specificato in DeviceType in types.hal .

  • OTHER : Un dispositivo che non rientra in nessuna delle altre categorie, inclusa un'interfaccia eterogenea, ovvero un'unica interfaccia IDevice che gestisce più dispositivi, possibilmente di tipo diverso. Un driver con un'interfaccia eterogenea dovrebbe inoltre esporre interfacce IDevice separate che corrispondono ai singoli dispositivi per consentire a un'applicazione di scegliere tra tali dispositivi.
  • CPU : CPU single core o multicore.
  • GPU : una GPU in grado di eseguire modelli NNAPI e accelerare API grafiche come OpenGL ES e Vulkan.
  • ACCELERATOR : un'unità di elaborazione neurale (NPU) dedicata.

Implementa getVersionString in IDevice.hal per ottenere la stringa della versione dell'implementazione del dispositivo. Questo metodo deve restituire una stringa leggibile dall'uomo. Il formato della stringa è specifico del fornitore. La stringa della versione deve essere diversa per ogni nuova versione di un driver.

Il nome dell'interfaccia IDevice deve seguire il formato {VENDOR}-{DEVICE_NAME} .