Rockchip · AI & Linux Hub

KI-Inferenz

RKNN Runtime C API V2.5.0 — Operatortypen und Migration veralteter APIs

RKNN Runtime C API V2.5.0 — Operatortypen und Migration veralteter APIs | 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

6.4. Strukturen benutzerdefinierter Operatoren

rknn_gpu_op_context

rknn_gpu_op_context enthält den Kontext eines auf der angegebenen GPU ausgeführten benutzerdefinierten Operators. Die Strukturdefinition folgt in der Tabelle:

Feld Typ Bedeutung
cl_context void* OpenCL-Objekt cl_context; bei Verwendung explizit in cl_context umwandeln.
cl_command_queue void* OpenCL-Objekt cl_command_queue; bei Verwendung explizit in cl_command_queue umwandeln.
cl_kernel void* OpenCL-Objekt cl_kernel; bei Verwendung explizit in cl_kernel umwandeln.

rknn_custom_op_context

rknn_custom_op_context enthält die Kontextinformationen eines benutzerdefinierten Operators. Die Strukturdefinition folgt in der Tabelle:

Feld Typ Bedeutung
target rknn_target_type Ausführungsgerät benutzerdefinierter Operatoren: RKNN_TARGET_TYPE_CPU: CPU; RKNN_TARGET_TYPE_CPU: GPU. Die doppelte CPU-Konstante für GPU steht so in der Quelle und ist zu prüfen.
internal_ctx rknn_custom_op_interal_context Privater Kontext innerhalb des Operators.
gpu_ctx rknn_gpu_op_context OpenCL-Kontextinformationen des benutzerdefinierten Operators. Bei GPU-Ausführung erhält der Callback OpenCL-Objekte wie cl_context aus dieser Struktur.
priv_data void* Datenzeiger, deren Verwaltung dem Entwickler überlassen bleibt.

rknn_custom_op_tensor

rknn_custom_op_tensor beschreibt den Ein-/Ausgabetensor eines benutzerdefinierten Operators. Die Strukturdefinition folgt in der Tabelle:

Feld Typ Bedeutung
attr rknn_tensor_attr Name, Form, Größe und weitere Tensorinformationen.
mem rknn_tensor_mem Tensorspeicheradresse, fd, Offset gültiger Daten und weitere Informationen.

rknn_custom_op_attr

rknn_custom_op_attr beschreibt Parameter oder Attribute eines benutzerdefinierten Operators. Die Strukturdefinition folgt in der Tabelle:

Feld Typ Bedeutung
name char[] Parametername des benutzerdefinierten Operators.
dtype rknn_tensor_type Datentyp jedes Elements.
n_elems uint32_t Elementanzahl.
data void* Virtuelle Adresse des Parameterspeicherbereichs.

rknn_custom_op

rknn_custom_op enthält die Registrierungsinformationen eines benutzerdefinierten Operators. Die Strukturdefinition folgt in der Tabelle:

Feld Typ Bedeutung
version uint32_t Versionsnummer des benutzerdefinierten Operators.
target rknn_target_type Ausführungs-Backendtyp des Operators.
op_type char[] Typ des benutzerdefinierten Operators.
cl_kernel_name char[] Name der OpenCL-Kernelfunktion.
cl_kernel_source char* OpenCL-Ressource: bei cl_source_size=0 ein absoluter Dateipfad; bei cl_source_size>0 eine Zeichenfolge mit Kernelfunktionscode.
cl_source_size uint64_t Ist cl_kernel_source eine Zeichenfolge, deren Länge; bei einem Dateipfad 0.
cl_build_options char[] Kompilieroptionen des OpenCL-Kernels.
init int ()(rknn_custom_op_context op_ctx,
rknn_custom_op_tensor* inputs, uint32_t
n_inputs, rknn_custom_op_tensor*
outputs, uint32_t n_outputs);
Zeiger auf den Initialisierungs-Callback des Operators. Einmal bei Registrierung aufgerufen; bei Nichtbedarf NULL zulässig.
prepare int ()(rknn_custom_op_context op_ctx,
rknn_custom_op_tensor* inputs, uint32_t
n_inputs, rknn_custom_op_tensor*
outputs, uint32_t n_outputs);
Zeiger auf den Vorverarbeitungs-Callback. Einmal während rknn_run aufgerufen; bei Nichtbedarf NULL zulässig.
compute int ()(rknn_custom_op_context op_ctx,
rknn_custom_op_tensor* inputs, uint32_t
n_inputs, rknn_custom_op_tensor*
outputs, uint32_t n_outputs);
Zeiger auf den Berechnungs-Callback des benutzerdefinierten Operators. Einmal während rknn_run aufgerufen; NULL unzulässig.
compute_native int ()(rknn_custom_op_context op_ctx,
rknn_custom_op_tensor* inputs, uint32_t
n_inputs, rknn_custom_op_tensor*
outputs, uint32_t n_outputs);
Zeiger auf den leistungsoptimierten Berechnungs-Callback. Unterschied zu compute ist das Format der Ein-/Ausgabetensoren. Noch nicht unterstützt; auf NULL setzen.
destroy int ()(rknn_custom_op_context
op_ctx);
Zeiger auf den Callback zum Freigeben von Ressourcen. Einmal während rknn_destroy aufgerufen.

7. API-Änderungen, veraltete Schnittstellen und Migration

Versionsbezogene Ergänzungen, Änderungen und Abkündigungen stehen in der Versionshistorie des Originalhandbuchs.

In V2.5.0 sind folgende Schnittstellen veraltet. Die angegebenen Ersatzschnittstellen verwenden:

Veraltete Schnittstelle Ersatzschnittstelle
rknn_set_input_shape rknn_set_input_shapes
rknn_matmul_create_dyn_shape rknn_matmul_create_dynamic_shape

Details: rknn_set_input_shape (veraltet) in 5.3 „Inferenz ausführen“ und rknn_matmul_create_dyn_shape (veraltet) in 5.5 „Matrixmultiplikation“.

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 →