Обнаружение и назначение устройств

В Android 10 API нейронных сетей (NNAPI) представляет функции, которые позволяют библиотекам и приложениям платформы машинного обучения получать информацию о доступных устройствах и указывать, на каких устройствах выполнять модель. Предоставление информации о доступных устройствах позволяет приложениям получать точную версию драйверов, найденных на устройстве, чтобы избежать известных несовместимостей. Предоставляя приложениям возможность указывать, какие устройства должны выполнять различные разделы модели, приложения можно оптимизировать для продукта, на котором они развернуты.

Для реализаций NN HAL 1.2 требуется поддержка обнаружения и назначения устройств.

Выполнение

Для поддержки функций обнаружения и назначения устройств в NNAPI реализуйте getType и getVersionString в IDevice.hal , чтобы позволить платформе получать тип устройства и версию драйвера.

Для каждого устройства укажите тип в одной из следующих категорий, как указано в DeviceType в types.hal .

  • OTHER : устройство, которое не попадает ни в одну из других категорий, включая гетерогенный интерфейс, который представляет собой единый интерфейс IDevice , который управляет несколькими устройствами, возможно, разных типов. Драйвер с гетерогенным интерфейсом также должен предоставлять отдельные интерфейсы IDevice , соответствующие отдельным устройствам, чтобы приложение могло выбирать одно из этих устройств.
  • CPU : одноядерный или многоядерный ЦП.
  • GPU : графический процессор, который может запускать модели NNAPI и ускорять графические API, такие как OpenGL ES и Vulkan.
  • ACCELERATOR : специальный нейронный процессор (NPU).

Реализуйте getVersionString в IDevice.hal для получения строки версии реализации устройства. Этот метод должен возвращать строку, удобочитаемую человеком. Формат строки зависит от поставщика. Строка версии должна быть разной для каждой новой версии драйвера.

Имя интерфейса IDevice должно соответствовать формату {VENDOR}-{DEVICE_NAME} .