Rockchip · AI & Linux Hub

AI-инференс

RKNN Runtime C API V2.5.0 — Платформы, заголовки и компоновка

RKNN Runtime C API V2.5.0 — Платформы, заголовки и компоновка | Полные параметры, примеры и ограничения платформ

· ArmSoM · 5 мин чтения

Платформа и источник

Статья подготовлена по PDF производителя RKNN V2.5.0 и относится только к перечисленным в нём чипам и интерфейсам. Для платы ArmSoM сначала проверьте SoC, драйвер NPU, Toolkit/Runtime, SDK/BSP и версию ядра. Проверки на оборудовании ArmSoM не проводились; примеры и измерения оригинала не являются тестами ArmSoM.

Навигация по серии

1. Обзор справочника

RKNN C API — интерфейсы языка C для RKNPU Runtime (библиотеки времени выполнения). Они позволяют использовать вычислительную мощность NPU для эффективного инференса моделей RKNN или матричного умножения. Здесь описаны функции, структуры данных и коды возврата RKNN C API.

1.1 Версия

Документ относится к RKNPU Runtime V2.5.0 (см. историю редакций оригинального PDF). Описанные интерфейсы основаны на V2.5.0.

1.2 Поддерживаемые платформы

Документ относится к следующим аппаратным платформам:

RV1103

RV1103B

RV1106

RV1106B

RV1126B

RK2118

RK3562

Серия RK3566

Серия RK3568

Серия RK3576

Серия RK3588

1.3 Заголовки и библиотека Runtime

По назначению RKNN C API делится на три части. Соответствие функций, определений структур данных и заголовочных файлов следующее:

  1. “rknn_api.h” определяет базовые интерфейсы и структуры данных для развёртывания модели RKNN.
  1. “rknn_matmul_api.h” определяет интерфейсы и структуры данных матричного умножения.
  1. “rknn_custom_op.h” определяет интерфейсы и структуры данных пользовательских операторов.

2. Компиляция и компоновка

При сборке приложения необходимо подключить заголовочный файл с функцией интерфейса и скомпоновать приложение с соответствующей библиотекой RKNPU Runtime для используемых аппаратной платформы и системы. Далее описаны заголовочные файлы RKNN C API и файлы библиотек времени выполнения.

2.1 Linux

  1. Для RK3562, серий RK3566/RK3568/RK3576/RK3588 и RV1126B библиотека RKNPU называется librknnrt.so и находится в <sdk_path>/rknpu2/runtime, где <sdk_path> — путь к комплекту разработки Rockchip NPU.
  1. Для RV1106/RV1103/RV1106B/RV1103B библиотека RKNPU — librknnmrt.so в <sdk_path>/rknpu2/runtime.

2.2 Android

На Android RKNN API можно вызывать двумя способами:

1) Приложение может непосредственно компоноваться с librknnrt.so.

2) На Android приложение компонуется с librknn_api_android.so, реализованной через HIDL.

Устройства Android, которые должны пройти CTS/VTS, должны использовать RKNN API на основе Android HIDL; librknn_api_android.so не включает матричное умножение и пользовательские операторы. Если CTS/VTS не требуется, рекомендуется напрямую использовать librknnrt.so, включающую обе эти функции: цепочка вызовов интерфейса короче и может обеспечивать лучшую производительность.

Код RKNN API через Android HIDL находится в vendor/rockchip/hardware/interfaces/neuralnetworks в Android SDK RK3562/RK3566/RK3568/RK3576/RK3588. После сборки системы создаются библиотеки RKNPU; приложению достаточно компоноваться с librknn_api_android.so, как показано ниже:

/vendor/lib/librknn_api_android.so
/vendor/lib/librknnhal_bridge.rockchip.so
/vendor/lib64/librknn_api_android.so
/vendor/lib64/librknnhal_bridge.rockchip.so
/vendor/lib64/rockchip.hardware.neuralnetworks@1.0.so
/vendor/lib64/rockchip.hardware.neuralnetworks@1.0-adapter-helper.so
/vendor/lib64/hw/rockchip.hardware.neuralnetworks@1.0-impl.so
/vendor/bin/hw/rockchip.hardware.neuralnetworks@1.0-service

Для отдельной повторной сборки этих библиотек также можно использовать следующую команду:

mmm vendor/rockchip/hardware/interfaces/neuralnetworks/ -j8

2.3 Платформа RK2118

Для RK2118 библиотека RKNPU находится в системном SDK RK2118. См. раздел «Prepare RK2118 SDK» документа «RKNN3_RK2118_Quick_Start.pdf».

Источник и редакционные примечания

Технические главы разделены по назначению. Код, идентификаторы и параметры сохранены. Китайская версия следует китайскому оригиналу; английская, русская и немецкая — английскому. В главы без иллюстраций вымышленные изображения не добавлены.

Оговорки оригинала: номера глав и примерные журналы сохранены; ранние версии SDK в журналах не являются версией этой статьи. Runtime переходит от главы 3 к 5 и повторяет номера запросов. Таблица rknn_init называет extend отключённым, но далее описывает user_key и общие веса. Текст о нативном динамическом выходе указывает RKNN_QUERY_CURRENT_OUTPUT_ATTR, пример — RKNN_QUERY_CURRENT_NATIVE_OUTPUT_ATTR. Некоторые описания native NHWC/NC1HWC2 смешивают вход и выход. Проверяйте фактические заголовки V2.5.0 и целевой SDK: поведение не подтверждено тестами. Ссылка RK2118 в оригинале называется RKNN3_RK2118_Quick_Start.pdf, а в текущем каталоге находится руководство RKNN2.

RKNN-Toolkit2 · ArmSoM documentation

Другие статьи по теме → · Учебные маршруты →