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

В 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} .