API диспетчеризации LiteRT для интеграции с средой выполнения NPU

Когда следует внедрять API Dispatch?

API диспетчеризации LiteRT необходим, когда требуется интегрировать среду выполнения конкретного аппаратного ускорителя в фреймворк LiteRT. Он работает с плагином компилятора для выполнения скомпилированных подграфов, генерируемых плагином компилятора.

API диспетчеризации представляет собой набор реализованных поставщиком функций, которые LiteRT будет использовать для управления сессией с средой выполнения ускорителя. Эти функции охватывают сессии на устройстве, выполнение подграфов и перемещение буферов между хостом и устройством. Реализации API диспетчеризации в сочетании с плагином компилятора позволяют LiteRT в полной мере использовать возможности ускорителя для эффективного выполнения инференции.

Более подробную информацию о том, «когда» следует внедрять API диспетчеризации (и плагин компилятора), можно найти на странице плагина компилятора LiteRT .

Как работает API диспетчеризации?

API диспетчеризации используется CompiledModel с помощью NpuAccelerator . Внутри него создается DispatchDelegate , и именно этот DispatchDelegate использует API диспетчеризации для активации NPU, встроенного в работающее оборудование.

Типы данных API диспетчеризации

В API Dispatch для выполнения модели на NPU используются следующие типы данных.

  • DispatchDeviceContext

    Он используется для управления буферами, применяемыми в процессе вывода данных на NPU.

  • DispatchInvocationContext

    Это структура данных, используемая для выполнения модели. Она работает путем сопоставления фактической памяти ввода и вывода, зарегистрированной в DispatchDeviceContext , с сгенерированным DispatchGraph .

API диспетчеризации

Полное описание API диспетчеризации см. в файле vendors/c/litert_dispatch.h .