Rockchip · AI & Linux Hub

KI-Inferenz

RKNN Runtime C API V2.5.0 — Plattformen, Header und Linken

RKNN Runtime C API V2.5.0 — Plattformen, Header und Linken | Vollständige Parameter, Beispiele und Plattformgrenzen

· ArmSoM · 5 Min. Lesezeit

Plattform und Quelle

Dieser Artikel basiert auf dem RKNN-V2.5.0-PDF des Herstellers und gilt nur für die dort genannten Chips und Schnittstellen. Bei ArmSoM-Boards zuerst SoC, NPU-Treiber, Toolkit/Runtime, SDK/BSP und Kernelversion prüfen. Eine ArmSoM-Hardwareprüfung wurde nicht durchgeführt; Beispiele und Messwerte stammen aus der Quelle, nicht aus ArmSoM-Tests.

Seriennavigation

1. Überblick

RKNN C API stellt C-Schnittstellen für RKNPU Runtime bereit. Damit lässt sich die Rechenleistung der NPU für effiziente RKNN-Modellinferenz oder Matrixmultiplikationen nutzen. Beschrieben werden die Funktionen, Datenstrukturen und Rückgabecodes der RKNN C API.

1.1 Gültige Version

Dieses Dokument gilt für RKNPU Runtime V2.5.0 (siehe Versionshistorie im Original-PDF). Die beschriebenen Schnittstellen basieren auf V2.5.0.

1.2 Unterstützte Plattformen

Das Dokument gilt für folgende Hardwareplattformen:

RV1103

RV1103B

RV1106

RV1106B

RV1126B

RK2118

RK3562

RK3566-Serie

RK3568-Serie

RK3576-Serie

RK3588-Serie

1.3 Header und Laufzeitbibliothek

Die RKNN C API gliedert sich nach Funktionen in drei Teile. Funktionen, Datenstrukturdefinitionen und Headerdateien sind wie folgt zugeordnet:

  1. “rknn_api.h” definiert die grundlegenden Schnittstellen und Datenstrukturen zur Bereitstellung von RKNN-Modellen.
  1. “rknn_matmul_api.h” definiert Schnittstellen und Datenstrukturen für Matrixmultiplikation.
  1. “rknn_custom_op.h” definiert Schnittstellen und Datenstrukturen benutzerdefinierter Operatoren.

2. Kompilieren und Linken

Beim Kompilieren einer Anwendung ist die Headerdatei der Schnittstellenfunktion einzubinden und die passende RKNPU-Runtime-Bibliothek für Hardwareplattform und Systemtyp zu linken. Nachfolgend werden die Headerdateien der RKNN C API und die Runtime-Bibliotheksdateien beschrieben.

2.1 Linux

  1. Für RK3562, die Serien RK3566/RK3568/RK3576/RK3588 und RV1126B heißt die RKNPU-Laufzeitbibliothek librknnrt.so und liegt in <sdk_path>/rknpu2/runtime. <sdk_path> bezeichnet das Rockchip-NPU-SDK.
  1. Für RV1106/RV1103/RV1106B/RV1103B ist die RKNPU-Laufzeitbibliothek librknnmrt.so in <sdk_path>/rknpu2/runtime.

2.2 Android

Unter Android lässt sich die RKNN API auf zwei Arten aufrufen:

1) Die Anwendung kann direkt mit librknnrt.so gelinkt werden.

2) Unter Android kann die Anwendung mit der HIDL-Implementierung librknn_api_android.so gelinkt werden.

Android-Geräte, die CTS/VTS bestehen müssen, benötigen die RKNN API auf Basis von Android HIDL; librknn_api_android.so enthält keine Matrixmultiplikation und keine benutzerdefinierten Operatoren. Ist CTS/VTS nicht erforderlich, wird die direkte Nutzung von librknnrt.so empfohlen, die beide Funktionen enthält. Der Aufrufweg jeder Schnittstelle ist kürzer und kann bessere Leistung bieten.

Der Quellcode der Android-HIDL-RKNN-API liegt im Verzeichnis vendor/rockchip/hardware/interfaces/neuralnetworks des Android-System-SDK für RK3562/RK3566/RK3568/RK3576/RK3588. Beim System-Build entstehen mehrere RKNPU-Bibliotheken; Anwendungen müssen nur librknn_api_android.so linken und verwenden, wie unten gezeigt:

/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

Alternativ können diese Bibliotheken mit folgendem Befehl separat neu gebaut werden:

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

2.3 RK2118-Plattform

Für RK2118 liegt die RKNPU-Laufzeitbibliothek im RK2118-System-SDK. Siehe „Prepare RK2118 SDK“ in „RKNN3_RK2118_Quick_Start.pdf“.

Quelle und redaktionelle Hinweise

Technische Kapitel sind nach Anwendung aufgeteilt. Code, Bezeichner und Parameter bleiben erhalten. Chinesisch folgt der chinesischen Quelle, Englisch, Russisch und Deutsch der englischen. Für Kapitel ohne Abbildungen wurden keine erfundenen Bilder hinzugefügt.

Hinweise zur Quelle: Kapitelnummern und Beispielausgaben bleiben erhalten; ältere SDK-Versionen in Protokollen sind nicht die aktuelle Dokumentversion. Die Runtime-Quelle springt von Kapitel 3 zu 5 und wiederholt Abfragenummern. Die rknn_init-Tabelle bezeichnet extend als deaktiviert, spätere Typen beschreiben jedoch user_key und gemeinsame Gewichte. Der Text zur nativen dynamischen Ausgabe nennt RKNN_QUERY_CURRENT_OUTPUT_ATTR, das Beispiel RKNN_QUERY_CURRENT_NATIVE_OUTPUT_ATTR. Einige native NHWC/NC1HWC2-Beschreibungen verwechseln Ein- und Ausgabe. Mit tatsächlichen V2.5.0-Headern und Ziel-SDK abgleichen; das Verhalten wurde nicht getestet. Der RK2118-Verweis heißt im Original RKNN3_RK2118_Quick_Start.pdf, im aktuellen Verzeichnis liegt eine RKNN2-Kurzanleitung.

RKNN-Toolkit2 · ArmSoM documentation

Dieses Thema entdecken → · Lernpfade →