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

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