Когда следует внедрять 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 .