From 0acf18cd5af8bef3c6dfbba40048933a604f687e Mon Sep 17 00:00:00 2001 From: Xiaoran Weng Date: Wed, 10 Jan 2024 14:11:35 +0800 Subject: [PATCH] Add NBG runner python binding --- samples/nbg_runner_pybind/.clang-format | 4 + samples/nbg_runner_pybind/.clang-tidy | 69 ++ samples/nbg_runner_pybind/.gitignore | 15 + samples/nbg_runner_pybind/CMakeLists.txt | 23 + samples/nbg_runner_pybind/README.md | 84 ++ .../cmake/modules/FindPyBind11.cmake | 13 + .../cmake/modules/FindVivanteSDK.cmake | 14 + .../nbg_runner_pybind/examples/data/bird.jpg | Bin 0 -> 59844 bytes .../nbg_runner_pybind/examples/data/cat.jpg | Bin 0 -> 123126 bytes .../examples/data/imagenet1k_labels.txt | 1001 +++++++++++++++++ samples/nbg_runner_pybind/examples/demo.py | 39 + .../nbg_runner_pybind/examples/imagenet1k.py | 76 ++ .../models/conv2d_relu_maxpool2d_fp32.nbg | Bin 0 -> 9152 bytes .../python/nbg_runner/__init__.py | 6 + .../python/nbg_runner/_binding/__init__.py | 4 + .../python/nbg_runner/vx/__init__.py | 0 .../python/nbg_runner/vx/ovx_executor.py | 70 ++ samples/nbg_runner_pybind/src/CMakeLists.txt | 9 + .../src/nbg_runner_pybind.cpp | 129 +++ .../nbg_runner_pybind/src/vx/CMakeLists.txt | 8 + .../nbg_runner_pybind/src/vx/ovx_executor.cpp | 291 +++++ .../nbg_runner_pybind/src/vx/ovx_executor.hpp | 110 ++ samples/nbg_runner_pybind/src/vx/utils.hpp | 107 ++ 23 files changed, 2072 insertions(+) create mode 100644 samples/nbg_runner_pybind/.clang-format create mode 100644 samples/nbg_runner_pybind/.clang-tidy create mode 100644 samples/nbg_runner_pybind/.gitignore create mode 100644 samples/nbg_runner_pybind/CMakeLists.txt create mode 100644 samples/nbg_runner_pybind/README.md create mode 100644 samples/nbg_runner_pybind/cmake/modules/FindPyBind11.cmake create mode 100644 samples/nbg_runner_pybind/cmake/modules/FindVivanteSDK.cmake create mode 100644 samples/nbg_runner_pybind/examples/data/bird.jpg create mode 100644 samples/nbg_runner_pybind/examples/data/cat.jpg create mode 100644 samples/nbg_runner_pybind/examples/data/imagenet1k_labels.txt create mode 100644 samples/nbg_runner_pybind/examples/demo.py create mode 100644 samples/nbg_runner_pybind/examples/imagenet1k.py create mode 100644 samples/nbg_runner_pybind/examples/models/conv2d_relu_maxpool2d_fp32.nbg create mode 100644 samples/nbg_runner_pybind/python/nbg_runner/__init__.py create mode 100644 samples/nbg_runner_pybind/python/nbg_runner/_binding/__init__.py create mode 100644 samples/nbg_runner_pybind/python/nbg_runner/vx/__init__.py create mode 100644 samples/nbg_runner_pybind/python/nbg_runner/vx/ovx_executor.py create mode 100644 samples/nbg_runner_pybind/src/CMakeLists.txt create mode 100644 samples/nbg_runner_pybind/src/nbg_runner_pybind.cpp create mode 100644 samples/nbg_runner_pybind/src/vx/CMakeLists.txt create mode 100644 samples/nbg_runner_pybind/src/vx/ovx_executor.cpp create mode 100644 samples/nbg_runner_pybind/src/vx/ovx_executor.hpp create mode 100644 samples/nbg_runner_pybind/src/vx/utils.hpp diff --git a/samples/nbg_runner_pybind/.clang-format b/samples/nbg_runner_pybind/.clang-format new file mode 100644 index 000000000..4a6f71760 --- /dev/null +++ b/samples/nbg_runner_pybind/.clang-format @@ -0,0 +1,4 @@ +BasedOnStyle: Google +PointerAlignment: Left +DerivePointerAlignment: false +ColumnLimit: 80 \ No newline at end of file diff --git a/samples/nbg_runner_pybind/.clang-tidy b/samples/nbg_runner_pybind/.clang-tidy new file mode 100644 index 000000000..8e388cd5c --- /dev/null +++ b/samples/nbg_runner_pybind/.clang-tidy @@ -0,0 +1,69 @@ +Checks: > + -*, + bugprone-*, + -bugprone-easily-swappable-parameters, + performance-*, + portability-*, + readability-*, + modernize-*, + -modernize-loop-convert, + -modernize-use-trailing-return-type, + clang-analyzer-*, + misc-*, + google-*, + +HeaderFilterRegex: "(src/).*\\.(hpp|h)$" + +CheckOptions: + - key: readability-identifier-naming.NamespaceCase + value: snake_case + - key: readability-identifier-naming.ClassCase + value: CamelCase + - key: readability-identifier-naming.StructCase + value: CamelCase + - key: readability-identifier-naming.EnumCase + value: CamelCase + - key: readability-identifier-naming.TemplateParameterCase + value: CamelCase + - key: readability-identifier-naming.FunctionCase + value: lower_case + - key: readability-identifier-naming.VariableCase + value: lower_case + - key: readability-identifier-naming.ClassMemberCase + value: lower_case + - key: readability-identifier-naming.ClassMemberSuffix + value: _ + - key: readability-identifier-naming.PrivateMemberCase + value: lower_case + - key: readability-identifier-naming.PrivateMemberSuffix + value: _ + - key: readability-identifier-naming.ClassMethodCase + value: lower_case + - key: readability-identifier-naming.EnumConstantCase + value: CamelCase + - key: readability-identifier-naming.EnumConstantPrefix + value: k + - key: readability-identifier-naming.ConstexprVariableCase + value: CamelCase + - key: readability-identifier-naming.ConstexprVariablePrefix + value: k + - key: readability-identifier-naming.GlobalConstantCase + value: CamelCase + - key: readability-identifier-naming.GlobalConstantPrefix + value: k + - key: readability-identifier-naming.MemberConstantCase + value: CamelCase + - key: readability-identifier-naming.MemberConstantPrefix + value: k + - key: readability-identifier-naming.StaticConstantCase + value: CamelCase + - key: readability-identifier-naming.StaticConstantPrefix + value: k + - key: readability-identifier-length.IgnoredVariableNames + value: "^c|d|e|m|op|fd|it$" + - key: readability-identifier-length.IgnoredParameterNames + value: "^c|d|e|m|op|fd|it$" + - key: readability-function-cognitive-complexity.IgnoreMacros + value: true + +FormatStyle: file \ No newline at end of file diff --git a/samples/nbg_runner_pybind/.gitignore b/samples/nbg_runner_pybind/.gitignore new file mode 100644 index 000000000..b364b874e --- /dev/null +++ b/samples/nbg_runner_pybind/.gitignore @@ -0,0 +1,15 @@ +[Bb]uild/ +*_build/ +.vscode/ +.cache/ +__pycache__/ +*.pyc +temp/ +tmp/ +*.o +*.a +*.lib +*.dll +*.so +*.nb +.env \ No newline at end of file diff --git a/samples/nbg_runner_pybind/CMakeLists.txt b/samples/nbg_runner_pybind/CMakeLists.txt new file mode 100644 index 000000000..94c583f91 --- /dev/null +++ b/samples/nbg_runner_pybind/CMakeLists.txt @@ -0,0 +1,23 @@ +cmake_minimum_required(VERSION 3.18) +project(nbg_runner LANGUAGES C CXX) + +# Set C/C++ standard. +set(CMAKE_C_STANDARD 11) +set(CMAKE_C_STANDARD_REQUIRED ON) +set(CMAKE_C_EXTENSIONS OFF) + +set(CMAKE_CXX_STANDARD 17) +set(CMAKE_CXX_STANDARD_REQUIRED ON) +set(CMAKE_CXX_EXTENSIONS OFF) + +# Enable warnings as errors. +add_compile_options(-Wall -Werror) + +# Add custom CMake modules. +list(APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake/modules) + +# Find dependencies. +include(FindPyBind11) +include(FindVivanteSDK) + +add_subdirectory(src) \ No newline at end of file diff --git a/samples/nbg_runner_pybind/README.md b/samples/nbg_runner_pybind/README.md new file mode 100644 index 000000000..dd7c51061 --- /dev/null +++ b/samples/nbg_runner_pybind/README.md @@ -0,0 +1,84 @@ +# VSI NBG Runner Python Binding + +This project is a python package that wraps OpenVX API using pybind11. It provides simple python API to load, query and run model NBG. + +## Installation + +```cmake +cmake -B build -DVIVANTE_SDK_DIR=${VIV_SDK_INSTALL_PATH} +cmake --build build +``` + +The built python binding lib can be found at +`build/src/_nbg_runner.cpython-{python_version}-{platform}.so`. Place the lib into `python/nbg_runner/_binding/`. + +## Usage + +### Tensor Info + +| Field | Type | Value Sample | +|:-----------------:|:-----------------:|:-------------:| +| rank | int | 4 | +| shape | Tuple[int, ...] | (1,3,224,224) | +| dtype | str | "uint8" | +| qtype | str | "affine" | +| scale | float | 0.007874 | +| zero_point | int | 128 | +| fixed_point_pos | int | 0 | + +- `shape` is in C-style row major order, which is consistent with NumPy. + +### Set Environment Vars + +```shell +# Set HW target If the driver is compiled with vsimulator. +VSIMULATOR_CONFIG=VIP9000ULSI_PID0XBA +# Locate the OVX driver. +VIVANTE_SDK_DIR=${VIV_SDK_INSTALL_PATH} +LD_LIBRARY_PATH=${VIVANTE_SDK_DIR}/[lib|lib64|drivers] +# Set PYTHONPATH to the dir containing nbg_runner module. +PYTHONPATH=${workspaceFolder}/python +``` + +### Example + +See detailed examples in `examples/*.py` + +```python +from nbg_runner import OVXExecutor + +# Load a model NBG file. +executor = OVXExecutor("path/to/model.nbg") + +# Query model I/O tensors count. +num_inputs = executor.get_num_inputs() +num_outputs = executor.get_num_outputs() + +# Get I/O tensor info by index. +input_info = executor.get_input_info(0) +output_info = executor.get_output_info(0) + +# Or get all I/O tensors infos at once. +input_infos = executor.get_input_infos() +output_infos = executor.get_output_infos() + +# Prepare inputs. +input_tensors: List[NDArray] = ... + +# Set input tensor by index. +for i, input_tensor in enumerate(input_tensors): + executor.set_input(i, input_tensor) + +# Or set all input tensors at once. +executor.set_inputs(input_tensors) + +# Run inference. +executor.run() + +# Get output tensor by index. +for i in range(num_outputs): + output_tensor = executor.get_output(i) + +# Or get all output tensors at once. +output_tensors = executor.get_outputs() +``` diff --git a/samples/nbg_runner_pybind/cmake/modules/FindPyBind11.cmake b/samples/nbg_runner_pybind/cmake/modules/FindPyBind11.cmake new file mode 100644 index 000000000..c755fff67 --- /dev/null +++ b/samples/nbg_runner_pybind/cmake/modules/FindPyBind11.cmake @@ -0,0 +1,13 @@ +# Try to use installed pybind11 CMake module. +find_package(pybind11) + +if(NOT ${pybind11_FOUND}) + include(FetchContent) + + FetchContent_Declare( + pybind11 + GIT_REPOSITORY "https://github.com/pybind/pybind11.git" + GIT_TAG "v2.11.1" + ) + FetchContent_MakeAvailable(pybind11) +endif() \ No newline at end of file diff --git a/samples/nbg_runner_pybind/cmake/modules/FindVivanteSDK.cmake b/samples/nbg_runner_pybind/cmake/modules/FindVivanteSDK.cmake new file mode 100644 index 000000000..ded88850d --- /dev/null +++ b/samples/nbg_runner_pybind/cmake/modules/FindVivanteSDK.cmake @@ -0,0 +1,14 @@ +if(NOT VIVANTE_SDK_DIR) + message(FATAL_ERROR "VIVANTE_SDK_DIR is not set") +endif() + +find_library( + OPENVX_LIB + NAMES OpenVX + HINTS ${VIVANTE_SDK_DIR}/lib ${VIVANTE_SDK_DIR}/lib64 ${VIVANTE_SDK_DIR}/drivers + REQUIRED +) + +add_library(viv_sdk INTERFACE) +target_link_libraries(viv_sdk INTERFACE ${OPENVX_LIB}) +target_include_directories(viv_sdk INTERFACE ${VIVANTE_SDK_DIR}/include) diff --git a/samples/nbg_runner_pybind/examples/data/bird.jpg b/samples/nbg_runner_pybind/examples/data/bird.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a797a42b02a799c7b0260013bee0675cbb0136e5 GIT binary patch literal 59844 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 Any: + parser = ArgumentParser() + parser.add_argument( + "--nbg", "-m", + type=Path, + default="examples/models/conv2d_relu_maxpool2d_fp32.nbg", + help="Path to NBG file." + ) + return parser.parse_args() + + +if __name__ == "__main__": + args = get_args() + nbg_path: Path = args.nbg + + executor = OVXExecutor(nbg_path) + num_inputs = executor.get_num_inputs() + num_outputs = executor.get_num_outputs() + + input_info = executor.get_input_info(0) + output_info = executor.get_output_info(0) + + input_tensor = np.ones( + shape=input_info.shape, + dtype=input_info.dtype + ) + + executor.set_input(0, input_tensor) + executor.run() + output_tensor = executor.get_output(0) + print(output_tensor) diff --git a/samples/nbg_runner_pybind/examples/imagenet1k.py b/samples/nbg_runner_pybind/examples/imagenet1k.py new file mode 100644 index 000000000..c212db414 --- /dev/null +++ b/samples/nbg_runner_pybind/examples/imagenet1k.py @@ -0,0 +1,76 @@ +from typing import Any, List +from numpy.typing import NDArray +from argparse import ArgumentParser +from pathlib import Path +from nbg_runner import OVXExecutor +import cv2 as cv +import numpy as np + + +def get_args() -> Any: + parser = ArgumentParser() + parser.add_argument( + "--nbg", "-m", + type=Path, + required=True, + help="Path to NBG file." + ) + parser.add_argument( + "--image", "-i", + type=Path, + required=True, + help="Path to image file." + ) + parser.add_argument( + "--labels", "-l", + type=Path, + required=True, + help="Path to classification labels." + ) + return parser.parse_args() + + +if __name__ == "__main__": + args = get_args() + nbg_path: Path = args.nbg + img_path: Path = args.image + labels_path: Path = args.labels + + # Load NBG and query I/O params. + executor = OVXExecutor(nbg_path) + num_inputs = executor.get_num_inputs() + num_outputs = executor.get_num_outputs() + input_info = executor.get_input_info(index=0) + output_info = executor.get_output_info(index=0) + + input_size = input_info.shape[1:3] + num_cls = output_info.shape[1] + + # Load input image. + img_hwc: NDArray[np.uint8] = cv.imread(str(img_path), cv.IMREAD_COLOR) + hi, wi = input_size + img_hwc = cv.resize(img_hwc, dsize=(wi, hi)) + img_hwc = cv.cvtColor(img_hwc, cv.COLOR_BGR2RGB) + img_nhwc = np.expand_dims(img_hwc, axis=0) + + if input_info.dtype == "float32": + img_nhwc = img_nhwc.astype(np.float32) / np.iinfo(np.uint8).max + + # Load classification labels. + cls_labels: List[str] = [] + with open(labels_path, mode="r") as f: + for label in f: + cls_labels.append(label.strip()) + + # Run inference. + # executor.set_inputs([img_nhwc]) + executor.set_input(index=0, input_tensor=img_nhwc) + executor.run() + scores = executor.get_output(index=0) + # scores = executor.get_outputs()[0] + + cls = np.argmax(scores, axis=1) + cls = np.squeeze(cls, axis=0).item() + + cls_label = cls_labels[cls] + print(f"Classification result: {cls_label}") diff --git a/samples/nbg_runner_pybind/examples/models/conv2d_relu_maxpool2d_fp32.nbg b/samples/nbg_runner_pybind/examples/models/conv2d_relu_maxpool2d_fp32.nbg new file mode 100644 index 0000000000000000000000000000000000000000..33dba05847b18be9f5aa378d246268d6623a0ac1 GIT binary patch literal 9152 zcmd^EO>9*~6h3p`<^7OqZkZIut0 zj{w8zH=?WZoZVPYu7YqS`t>3jnED2h2y@bS0Rdo76}CPA`$DigK;H!Y6SM?MGqvrE z2Nw&Z3tKeEvGIvL(^F61`Rqb@dm~&kw4K{*XU*yH9itmZC#R=I@5GFyxBDk2_D=4a zo*JK=*s}e#oi8sPK?H6ywhlc%HNJQI`9rz=5^wAFnXocBxodplh4V2fv5CH`)#}}W zIX~9W+%sj)2F`QMjghBq^b_j?o0GXS;5>%9o1Y$cb30OUr-vbfMM^z3C*vBc&>0i7 z7o=g^MrE{CdcDxGsz$%j$LkQ#4ujWZLT{Vv^6c8d>xZ5@V>~u&J0Nkjx}g#TpP?t` z=MH$02_M<9R_Dikw1dZew6kB@$JWle?cj0UCfhV?@go8lduT_#<|Ob{E`nNUstPt5 zSpRb08l5z%E&E^EUj8fgN)qL$kM8%T-V4grCsD{3n@Pg#bXIwqd$kaoL@p` zARNP5)vUlmg{b!xjC-jdOq1LExY3PooccmHvSKjg${ZeRcaWf9x1| ziD>^%#K-zt&JIQ0B1d=!|D62A^W8Il|Hgi6 zk92XH7q;~`4F4Le38|}E2i=G=d4_S zkMlcF=b^^0Mz<}cKLd!GI~E%e`=r~lqO{aM%}#-5MmwlEvKkNA>uHFLteS!IK(mH%;_NB*4x9C~@8;*sdX87j|KWJO8M7Yrf$!wm z0Q$gpybAm*^2OlK!0XxIP>jFA;b&uf%d6m^LVTP3j2V3B6F;p_{6v36)*p%S#|(aa zK5qZW2Zel0osY#!&Ijug&+@28S-(`rbNO%TG2U~Jph){;tY1j+9+A#2#3#O3o>3@JjWwGDNlIBC*@Wj`D5z2%b&Yh&t7MIekB8@p1FL8<1;NEZXq9OAumC` z+*U^YH1*x)(+Afgzwsqk19%O(u^0JPp&a@7e`~9QS=7If^)KRm(_!ji)TceAdvrJI z59%N8zf`@+BEQXjO8qkHw~>Eo>JjQ2-XB69Q^a~$w)f|p{B7&ktkwU=@VFnbKG*v~ zuf%$tT~W?|2JwveqW?R)W^?dIxeC4rzQBASI$Bs#wpfdvi066GQ~2EwZP?J$ z{FaD@1kw2OD*6F%MW5q3{%w?E+lqONGndjGY_S95%u#kH<9J~4_kih5;jiMjz5gL{ ztysjk2FISt`C@2sFr041wGGBg4aV0u82=3COW@Ft>2;PCEL~&eYr)?Ry_I&{oof%| z-1j<+^X?`34Y|hZ-D>CI zy@BVQdD!aR0UBYchd{ZJN9_1kOCPiJNl@DPl%*qu;vLbBOmMM#pyH7B5ZuVzKgREb391< zCB|o*acsVR@wCdbCa(qskzN-U8Vo|ytry1~5zlGGR`IeHxSX>N^dJ1w;1)~Mada=_ z&En`D$Xy&Egf3bf!QYF<5$$glM|>Y-9Fa1PK=A+OY`$g_*Zr@Aab(BNKaQM#7@d)l z4LVh)jK{fp(vtWw(VWs}{KOHG=<=bZKhu8W_L}*P`Q!Y?=l?qYTltOh#qz&qf{X^o zbs&B+pXcv42jcvP#qp)abNOZNnI`^=Fdq(6PT%+sgWN-^;hs_E-sl1iA!wDKX@Bxw hZRStdoA~om)N}5qSspg>C#EI$F>{dJrsk6U`7cHgFyH_H literal 0 HcmV?d00001 diff --git a/samples/nbg_runner_pybind/python/nbg_runner/__init__.py b/samples/nbg_runner_pybind/python/nbg_runner/__init__.py new file mode 100644 index 000000000..c6374fbdc --- /dev/null +++ b/samples/nbg_runner_pybind/python/nbg_runner/__init__.py @@ -0,0 +1,6 @@ +""" VSI NBG runner python module""" + +__version__ = "0.0.1" +__author__ = "Verisilicon" + +from .vx.ovx_executor import OVXExecutor, OVXTensorInfo diff --git a/samples/nbg_runner_pybind/python/nbg_runner/_binding/__init__.py b/samples/nbg_runner_pybind/python/nbg_runner/_binding/__init__.py new file mode 100644 index 000000000..625d9c920 --- /dev/null +++ b/samples/nbg_runner_pybind/python/nbg_runner/_binding/__init__.py @@ -0,0 +1,4 @@ +from ._nbg_runner import ( + OVXExecutor, + OVXTensorInfo +) \ No newline at end of file diff --git a/samples/nbg_runner_pybind/python/nbg_runner/vx/__init__.py b/samples/nbg_runner_pybind/python/nbg_runner/vx/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/samples/nbg_runner_pybind/python/nbg_runner/vx/ovx_executor.py b/samples/nbg_runner_pybind/python/nbg_runner/vx/ovx_executor.py new file mode 100644 index 000000000..fff9d5f13 --- /dev/null +++ b/samples/nbg_runner_pybind/python/nbg_runner/vx/ovx_executor.py @@ -0,0 +1,70 @@ +from typing import List, Tuple, Sequence +from numpy.typing import NDArray +import numpy as np +from pathlib import Path +from nbg_runner import _binding + + +class OVXTensorInfo: + rank: int = ... + shape: Tuple[int, ...] = ... + dtype: str = ... + qtype: str = ... + scale: float = ... + zero_point: int = ... + fixed_point_pos: int = ... + + +class OVXExecutor: + def __init__(self, nbg_path: Path) -> None: + self._exec = _binding.OVXExecutor(nbg_path) + self._exec.init() + + def get_num_inputs(self) -> int: + return self._exec.get_num_inputs() + + def get_num_outputs(self) -> int: + return self._exec.get_num_outputs() + + def get_input_info(self, index: int) -> OVXTensorInfo: + return self._exec.get_input_info(index) + + def get_output_info(self, index: int) -> OVXTensorInfo: + return self._exec.get_output_info(index) + + def get_input_infos(self) -> List[OVXTensorInfo]: + input_infos: List[OVXTensorInfo] = [] + num_inputs = self.get_num_inputs() + for i in range(num_inputs): + input_infos.append(self.get_input_info(i)) + return input_infos + + def get_output_infos(self) -> List[OVXTensorInfo]: + output_infos: List[OVXTensorInfo] = [] + num_outputs = self.get_num_outputs() + for i in range(num_outputs): + output_infos.append(self.get_output_info(i)) + return output_infos + + def set_input(self, index: int, input_tensor: NDArray) -> None: + return self._exec.set_input(index, input_tensor) + + def get_output(self, index: int) -> NDArray: + output_tensor: NDArray = self._exec.get_output(index) + return output_tensor + + def set_inputs(self, input_tensors: Sequence[NDArray]) -> None: + for i, tensor in enumerate(input_tensors): + self.set_input(i, tensor) + + def get_outputs(self) -> List[NDArray]: + output_tensors: List[NDArray] = [] + num_outputs = self.get_num_outputs() + for i in range(num_outputs): + output_tensor = self.get_output(i) + output_tensors.append(output_tensor) + + return output_tensors + + def run(self) -> None: + self._exec.run() diff --git a/samples/nbg_runner_pybind/src/CMakeLists.txt b/samples/nbg_runner_pybind/src/CMakeLists.txt new file mode 100644 index 000000000..a747dc98d --- /dev/null +++ b/samples/nbg_runner_pybind/src/CMakeLists.txt @@ -0,0 +1,9 @@ +include_directories(${CMAKE_CURRENT_SOURCE_DIR}) + +pybind11_add_module(_nbg_runner ${CMAKE_CURRENT_SOURCE_DIR}/nbg_runner_pybind.cpp) + +add_subdirectory(vx) +target_link_libraries(_nbg_runner + PRIVATE + nbg_runner::vx +) diff --git a/samples/nbg_runner_pybind/src/nbg_runner_pybind.cpp b/samples/nbg_runner_pybind/src/nbg_runner_pybind.cpp new file mode 100644 index 000000000..bfd49565f --- /dev/null +++ b/samples/nbg_runner_pybind/src/nbg_runner_pybind.cpp @@ -0,0 +1,129 @@ +/**************************************************************************** +* +* Copyright (c) 2020-2024 Vivante Corporation +* +* Permission is hereby granted, free of charge, to any person obtaining a +* copy of this software and associated documentation files (the "Software"), +* to deal in the Software without restriction, including without limitation +* the rights to use, copy, modify, merge, publish, distribute, sublicense, +* and/or sell copies of the Software, and to permit persons to whom the +* Software is furnished to do so, subject to the following conditions: +* +* The above copyright notice and this permission notice shall be included in +* all copies or substantial portions of the Software. +* +* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +* DEALINGS IN THE SOFTWARE. +* +*****************************************************************************/ + +#include +#include +#include +#include + +#include +#include +#include + +#include "vx/ovx_executor.hpp" +#include "vx/utils.hpp" + +namespace vsi::nbg_runner::python { +namespace py = pybind11; +namespace fs = std::filesystem; + +PYBIND11_MODULE(_nbg_runner, m) { + using namespace vsi::nbg_runner::vx; + + // clang-format off + py::class_(m, "OVXExecutor") + .def(py::init()) + .def(py::init([](const py::buffer& nbg_buffer) { + auto buffer_info = nbg_buffer.request(false); + return std::make_unique(reinterpret_cast(buffer_info.ptr), buffer_info.size); + })) + .def("init", &OVXExecutor::init) + .def("get_num_inputs", &OVXExecutor::get_num_inputs) + .def("get_num_outputs", &OVXExecutor::get_num_outputs) + .def("get_input_info", &OVXExecutor::get_input_info) + .def("get_output_info", &OVXExecutor::get_output_info) + .def("set_input", [](OVXExecutor* executor, size_t index, const py::buffer& buffer) { + auto buffer_info = buffer.request(false); + std::array vx_shape = {0}; + std::array vx_strides = {0}; + std::reverse_copy(buffer_info.shape.cbegin(), buffer_info.shape.cend(), vx_shape.begin()); + std::reverse_copy(buffer_info.strides.cbegin(), buffer_info.strides.cend(), vx_strides.begin()); + executor->copy_to_input( + index, + buffer_info.ptr, + buffer_info.ndim, + vx_shape.data(), + vx_strides.data() + ); + }) + .def("get_output", [](OVXExecutor* executor, size_t index) -> py::array { + auto tensor_info = executor->get_output_info(index); + auto np_dtype = py::dtype(get_vx_dtype_str(tensor_info.data_type).data()); + auto np_shape = std::vector(tensor_info.rank); + std::reverse_copy(tensor_info.shape.data(), tensor_info.shape.data() + tensor_info.rank, np_shape.begin()); + + auto np_tensor = py::array(np_dtype, np_shape); + auto buffer_info = np_tensor.request(true); + + std::array vx_strides = {0}; + std::reverse_copy(buffer_info.strides.cbegin(), buffer_info.strides.cend(), vx_strides.begin()); + + executor->copy_from_output( + index, + buffer_info.ptr, + tensor_info.rank, + tensor_info.shape.data(), + vx_strides.data() + ); + return np_tensor; + }) + .def("run", &OVXExecutor::run) + ; + + py::class_(m, "OVXTensorInfo") + .def_readonly("rank", &OVXTensorInfo::rank) + .def_property_readonly("shape", [](OVXTensorInfo* tensor_info) -> py::tuple { + size_t rank = tensor_info->rank; + auto shape_tuple = py::tuple(rank); + for (size_t i = 0; i < rank; i++){ + shape_tuple[i] = tensor_info->shape[rank - i - 1]; + } + return shape_tuple; + }) + .def_property_readonly("dtype", [](OVXTensorInfo* tensor_info) -> std::string_view { + return get_vx_dtype_str(tensor_info->data_type); + }) + .def_property_readonly("qtype", [](OVXTensorInfo* tensor_info) -> std::string_view { + return get_vx_qtype_str(tensor_info->quant_type); + }) + .def_property_readonly("scale", [](OVXTensorInfo* tensor_info) -> float { + return tensor_info->quant_type == VX_QUANT_AFFINE_SCALE + ? tensor_info->quant_param.affine.scale + : 0.0F; + }) + .def_property_readonly("zero_point", [](OVXTensorInfo* tensor_info) -> int32_t { + return tensor_info->quant_type == VX_QUANT_AFFINE_SCALE + ? tensor_info->quant_param.affine.zeroPoint + : 0; + }) + .def_property_readonly("fixed_point_pos", [](OVXTensorInfo* tensor_info) -> int8_t { + return tensor_info->quant_type == VX_QUANT_DYNAMIC_FIXED_POINT + ? tensor_info->quant_param.dfp.fixed_point_pos + : static_cast(0); + }) + ; + // clang-format on +} + +} // namespace vsi::nbg_runner::python diff --git a/samples/nbg_runner_pybind/src/vx/CMakeLists.txt b/samples/nbg_runner_pybind/src/vx/CMakeLists.txt new file mode 100644 index 000000000..8e15b2dcd --- /dev/null +++ b/samples/nbg_runner_pybind/src/vx/CMakeLists.txt @@ -0,0 +1,8 @@ +add_library(nbg_runner_vx INTERFACE) +add_library(nbg_runner::vx ALIAS nbg_runner_vx) + +target_sources(nbg_runner_vx INTERFACE + ${CMAKE_CURRENT_SOURCE_DIR}/ovx_executor.cpp +) + +target_link_libraries(nbg_runner_vx INTERFACE viv_sdk) \ No newline at end of file diff --git a/samples/nbg_runner_pybind/src/vx/ovx_executor.cpp b/samples/nbg_runner_pybind/src/vx/ovx_executor.cpp new file mode 100644 index 000000000..7c503caa8 --- /dev/null +++ b/samples/nbg_runner_pybind/src/vx/ovx_executor.cpp @@ -0,0 +1,291 @@ +/**************************************************************************** +* +* Copyright (c) 2020-2024 Vivante Corporation +* +* Permission is hereby granted, free of charge, to any person obtaining a +* copy of this software and associated documentation files (the "Software"), +* to deal in the Software without restriction, including without limitation +* the rights to use, copy, modify, merge, publish, distribute, sublicense, +* and/or sell copies of the Software, and to permit persons to whom the +* Software is furnished to do so, subject to the following conditions: +* +* The above copyright notice and this permission notice shall be included in +* all copies or substantial portions of the Software. +* +* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +* DEALINGS IN THE SOFTWARE. +* +*****************************************************************************/ + +#include "ovx_executor.hpp" + +#include + +#include +#include +#include +#include + +#include "utils.hpp" + +namespace vsi::nbg_runner::vx { + +OVXExecutor::OVXExecutor(const char* nbg_data, size_t nbg_size) { + nbg_buffer_ = std::vector(nbg_data, nbg_data + nbg_size); +} + +OVXExecutor::OVXExecutor(const fs::path& nbg_path) { + size_t nbg_size = fs::file_size(nbg_path); + auto nbg_file = std::ifstream(nbg_path, std::ios::in | std::ios::binary); + + nbg_buffer_.resize(nbg_size); + nbg_file.read(nbg_buffer_.data(), static_cast(nbg_size)); +} + +OVXExecutor::~OVXExecutor() { + for (auto& tensor : input_tensors_) { + vxReleaseTensor(&tensor); + } + for (auto& tensor : output_tensors_) { + vxReleaseTensor(&tensor); + } + + vxReleaseNode(&nbg_node_); + vxReleaseKernel(&nbg_kernel_); + vxReleaseGraph(&graph_); + vxReleaseContext(&context_); +} + +int OVXExecutor::init() { + vx_status status = VX_SUCCESS; + + context_ = vxCreateContext(); + if (context_ == nullptr) { + throw std::runtime_error("Failed to create OpenVX context."); + } + + graph_ = vxCreateGraph(context_); + status = vxGetStatus(reinterpret_cast(graph_)); + if (status != VX_SUCCESS) { + throw std::runtime_error("Failed to create OpenVX graph."); + } + + nbg_kernel_ = vxImportKernelFromURL( + context_, VX_VIVANTE_IMPORT_KERNEL_FROM_POINTER, nbg_buffer_.data()); + status = vxGetStatus(reinterpret_cast(nbg_kernel_)); + if (status != VX_SUCCESS) { + throw std::runtime_error("Failed to import NBG kernel."); + } + + status = query_nbg_io_infos(); + if (status != VX_SUCCESS) { + throw std::runtime_error("Failed to query NBG I/O params."); + } + size_t num_inputs = input_tensors_infos_.size(); + size_t num_outputs = output_tensors_infos_.size(); + + nbg_node_ = vxCreateGenericNode(graph_, nbg_kernel_); + status = vxGetStatus(reinterpret_cast(nbg_node_)); + if (status != VX_SUCCESS) { + throw std::runtime_error("Failed to create NBG node."); + } + + // Create input tensors and bind to NBG node. + for (size_t i = 0; i < num_inputs; i++) { + const auto& tensor_info = input_tensors_infos_[i]; + std::array shape; + std::transform(tensor_info.shape.cbegin(), tensor_info.shape.cend(), + shape.begin(), + [](size_t s) { return static_cast(s); }); + + vx_tensor_create_params_t tensor_create_params = { + .num_of_dims = static_cast(tensor_info.rank), + .sizes = shape.data(), + .data_format = tensor_info.data_type, + .quant_format = tensor_info.quant_type, + .quant_data = tensor_info.quant_param, + }; + vx_tensor input_tensor = vxCreateTensor2(context_, &tensor_create_params, + sizeof(tensor_create_params)); + if (input_tensor == nullptr) { + throw std::runtime_error("Failed to create input vx tensor."); + } + + vxSetParameterByIndex(nbg_node_, i, + reinterpret_cast(input_tensor)); + input_tensors_.push_back(input_tensor); + } + + // Create output tensors and bind to NBG node. + for (size_t i = 0; i < num_outputs; i++) { + const auto& tensor_info = output_tensors_infos_[i]; + std::array shape; + std::transform(tensor_info.shape.cbegin(), tensor_info.shape.cend(), + shape.begin(), + [](size_t s) { return static_cast(s); }); + + vx_tensor_create_params_t tensor_create_params = { + .num_of_dims = static_cast(tensor_info.rank), + .sizes = shape.data(), + .data_format = tensor_info.data_type, + .quant_format = tensor_info.quant_type, + .quant_data = tensor_info.quant_param, + }; + vx_tensor output_tensor = vxCreateTensor2(context_, &tensor_create_params, + sizeof(tensor_create_params)); + if (output_tensor == nullptr) { + throw std::runtime_error("Failed to create output vx tensor."); + } + + vxSetParameterByIndex(nbg_node_, num_inputs + i, + reinterpret_cast(output_tensor)); + output_tensors_.push_back(output_tensor); + } + + status = vxVerifyGraph(graph_); + if (status != VX_SUCCESS) { + throw std::runtime_error("Failed to verify OpenVX graph."); + } + + return static_cast(status); +} + +int OVXExecutor::query_nbg_io_infos() { + uint32_t num_params; + vxQueryKernel(nbg_kernel_, VX_KERNEL_PARAMETERS, &num_params, + sizeof(num_params)); + + for (uint32_t i = 0; i < num_params; i++) { + vx_parameter param = vxGetKernelParameterByIndex(nbg_kernel_, i); + + vx_enum direction; + vxQueryParameter(param, VX_PARAMETER_DIRECTION, &direction, + sizeof(direction)); + + vx_meta_format meta; + vxQueryParameter(param, VX_PARAMETER_META_FORMAT, &meta, sizeof(meta)); + + OVXTensorInfo tensor_info; + vxQueryMetaFormatAttribute(meta, VX_TENSOR_NUMBER_OF_DIMS, + &tensor_info.rank, sizeof(tensor_info.rank)); + vxQueryMetaFormatAttribute(meta, VX_TENSOR_DIMS, tensor_info.shape.data(), + sizeof(tensor_info.shape)); + vxQueryMetaFormatAttribute(meta, VX_TENSOR_DATA_TYPE, + &tensor_info.data_type, + sizeof(tensor_info.data_type)); + vxQueryMetaFormatAttribute(meta, VX_TENSOR_QUANT_FORMAT, + &tensor_info.quant_type, + sizeof(tensor_info.quant_type)); + + switch (tensor_info.quant_type) { + case VX_QUANT_NONE: + break; + case VX_QUANT_AFFINE_SCALE: + vxQueryMetaFormatAttribute( + meta, VX_TENSOR_ZERO_POINT, + &tensor_info.quant_param.affine.zeroPoint, + sizeof(tensor_info.quant_param.affine.zeroPoint)); + vxQueryMetaFormatAttribute( + meta, VX_TENSOR_SCALE, &tensor_info.quant_param.affine.scale, + sizeof(tensor_info.quant_param.affine.scale)); + break; + case VX_QUANT_DYNAMIC_FIXED_POINT: + vxQueryMetaFormatAttribute( + meta, VX_TENSOR_SCALE, &tensor_info.quant_param.dfp.fixed_point_pos, + sizeof(tensor_info.quant_param.dfp.fixed_point_pos)); + break; + default: + vxReleaseParameter(¶m); + return VX_ERROR_NOT_SUPPORTED; + } + + if (direction == VX_INPUT) { + input_tensors_infos_.push_back(tensor_info); + } else if (direction == VX_OUTPUT) { + output_tensors_infos_.push_back(tensor_info); + } + + vxReleaseParameter(¶m); + } + + return VX_SUCCESS; +} + +int OVXExecutor::copy_to_input(size_t index, void* data, size_t rank, + const size_t* shape, const size_t* strides) { + if (index >= input_tensors_infos_.size()) { + throw std::out_of_range("Invalid input index."); + return VX_FAILURE; + } + + vx_tensor input_tensor = input_tensors_[index]; + auto tensor_info = input_tensors_infos_[index]; + + if (rank != tensor_info.rank) { + throw std::invalid_argument("Tensor rank mismatch."); + return VX_FAILURE; + } + + if (strides[0] != get_vx_dtype_bytes(tensor_info.data_type)) { + throw std::invalid_argument("Tensor element size mismatch."); + return VX_FAILURE; + } + + for (size_t i = 0; i < rank; i++) { + if (shape[i] != tensor_info.shape[i]) { + throw std::invalid_argument("Tensor shape mismatch."); + return VX_FAILURE; + } + } + + std::array view_start = {0}; + + vx_status status = + vxCopyTensorPatch(input_tensor, rank, view_start.data(), shape, strides, + data, VX_WRITE_ONLY, VX_MEMORY_TYPE_HOST); + if (status != VX_SUCCESS) { + throw std::runtime_error("Failed to copy input data."); + return status; + } + + return VX_SUCCESS; +} + +int OVXExecutor::copy_from_output(size_t index, void* data, size_t rank, + const size_t* shape, const size_t* strides) { + if (index >= output_tensors_infos_.size()) { + throw std::runtime_error("Invalid output index."); + return VX_FAILURE; + } + + vx_tensor output_tensor = output_tensors_[index]; + + std::array view_start = {0}; + vx_status status = + vxCopyTensorPatch(output_tensor, rank, view_start.data(), shape, strides, + data, VX_READ_ONLY, VX_MEMORY_TYPE_HOST); + if (status != VX_SUCCESS) { + throw std::runtime_error("Failed to copy output data."); + return status; + } + + return VX_SUCCESS; +} + +int OVXExecutor::run() { + vx_status status; + + status = vxProcessGraph(graph_); + if (status != VX_SUCCESS) { + throw std::runtime_error("Failed to run OpenVX graph."); + } + + return static_cast(status); +} + +} // namespace vsi::nbg_runner::vx diff --git a/samples/nbg_runner_pybind/src/vx/ovx_executor.hpp b/samples/nbg_runner_pybind/src/vx/ovx_executor.hpp new file mode 100644 index 000000000..a3746adae --- /dev/null +++ b/samples/nbg_runner_pybind/src/vx/ovx_executor.hpp @@ -0,0 +1,110 @@ +/**************************************************************************** +* +* Copyright (c) 2020-2024 Vivante Corporation +* +* Permission is hereby granted, free of charge, to any person obtaining a +* copy of this software and associated documentation files (the "Software"), +* to deal in the Software without restriction, including without limitation +* the rights to use, copy, modify, merge, publish, distribute, sublicense, +* and/or sell copies of the Software, and to permit persons to whom the +* Software is furnished to do so, subject to the following conditions: +* +* The above copyright notice and this permission notice shall be included in +* all copies or substantial portions of the Software. +* +* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +* DEALINGS IN THE SOFTWARE. +* +*****************************************************************************/ + +#ifndef VSI_NBG_RUNNER_VX_OVX_EXECUTOR_HPP_ +#define VSI_NBG_RUNNER_VX_OVX_EXECUTOR_HPP_ + +#include +#include +#include +#include + +#include +#include +#include + + +namespace vsi::nbg_runner::vx { + +namespace fs = std::filesystem; + +struct OVXTensorInfo { + static constexpr size_t kMaxRank = 6; + + size_t rank; + std::array shape; + vx_enum data_type; + vx_enum quant_type; + vx_tensor_quant_param quant_param; +}; + +class OVXExecutor { + public: + explicit OVXExecutor(const char* nbg_data, size_t nbg_size); + explicit OVXExecutor(const fs::path& nbg_path); + + ~OVXExecutor(); + + /** \brief Class initialization. */ + int init(); + + /** \brief I/O params query getters. */ + [[nodiscard]] size_t get_num_inputs() const { + return input_tensors_infos_.size(); + } + [[nodiscard]] size_t get_num_outputs() const { + return output_tensors_infos_.size(); + } + [[nodiscard]] OVXTensorInfo get_input_info(size_t index) const { + return input_tensors_infos_[index]; + } + [[nodiscard]] OVXTensorInfo get_output_info(size_t index) const { + return output_tensors_infos_[index]; + } + + /** \brief Copy I/O tensor data. */ + int copy_to_input(size_t index, void* data, size_t rank, const size_t* shape, + const size_t* strides); + int copy_from_output(size_t index, void* data, size_t rank, const size_t* shape, + const size_t* strides); + + int run(); + + private: + int query_nbg_io_infos(); + + /** \brief The OpenVX context for management of all OpenVX objects. */ + vx_context context_; + /** \brief The OpenVX graph for execution. */ + vx_graph graph_; + /** \brief The OpenVX NBG node. */ + vx_node nbg_node_; + /** \brief The OpenVX NBG kernel. */ + vx_kernel nbg_kernel_; + /** \brief The OpenVX input tensors params. */ + std::vector input_tensors_infos_; + /** \brief The OpenVX output tensors params. */ + std::vector output_tensors_infos_; + /** \brief The OpenVX input tensors. */ + std::vector input_tensors_; + /** \brief The OpenVX output tensors. */ + std::vector output_tensors_; + + /** \brief The NBG buffer. */ + std::vector nbg_buffer_; +}; + +} // namespace vsi::nbg_runner::vx + +#endif \ No newline at end of file diff --git a/samples/nbg_runner_pybind/src/vx/utils.hpp b/samples/nbg_runner_pybind/src/vx/utils.hpp new file mode 100644 index 000000000..97d21bebf --- /dev/null +++ b/samples/nbg_runner_pybind/src/vx/utils.hpp @@ -0,0 +1,107 @@ +/**************************************************************************** +* +* Copyright (c) 2020-2024 Vivante Corporation +* +* Permission is hereby granted, free of charge, to any person obtaining a +* copy of this software and associated documentation files (the "Software"), +* to deal in the Software without restriction, including without limitation +* the rights to use, copy, modify, merge, publish, distribute, sublicense, +* and/or sell copies of the Software, and to permit persons to whom the +* Software is furnished to do so, subject to the following conditions: +* +* The above copyright notice and this permission notice shall be included in +* all copies or substantial portions of the Software. +* +* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +* DEALINGS IN THE SOFTWARE. +* +*****************************************************************************/ + +#ifndef VSI_NBG_RUNNER_VX_UTILS_HPP_ +#define VSI_NBG_RUNNER_VX_UTILS_HPP_ + +#include + +#include + +namespace vsi::nbg_runner::vx { + +inline size_t get_vx_dtype_bytes(vx_enum data_type) { + switch (data_type) { + case VX_TYPE_INT8: + case VX_TYPE_UINT8: + case VX_TYPE_BOOL8: + case VX_TYPE_CHAR: + return 1; + case VX_TYPE_INT16: + case VX_TYPE_UINT16: + case VX_TYPE_FLOAT16: + case VX_TYPE_BFLOAT16: + return 2; + case VX_TYPE_INT32: + case VX_TYPE_UINT32: + case VX_TYPE_FLOAT32: + return 4; + case VX_TYPE_INT64: + case VX_TYPE_UINT64: + case VX_TYPE_FLOAT64: + return 8; + default: + return 0; + } +} + +inline std::string_view get_vx_dtype_str(vx_enum data_type) { + switch (data_type) { + case VX_TYPE_INT8: + return "int8"; + case VX_TYPE_UINT8: + return "uint8"; + case VX_TYPE_BOOL8: + return "bool"; + case VX_TYPE_INT16: + return "int16"; + case VX_TYPE_UINT16: + return "uint16"; + case VX_TYPE_FLOAT16: + return "float16"; + case VX_TYPE_BFLOAT16: + return "bfloat16"; + case VX_TYPE_INT32: + return "int32"; + case VX_TYPE_UINT32: + return "uint32"; + case VX_TYPE_FLOAT32: + return "float32"; + case VX_TYPE_INT64: + return "int64"; + case VX_TYPE_UINT64: + return "uint64"; + case VX_TYPE_FLOAT64: + return "float32"; + default: + return "unknown"; + } +} + +inline std::string_view get_vx_qtype_str(vx_enum quant_type) { + switch (quant_type) { + case VX_QUANT_DYNAMIC_FIXED_POINT: + return "dfp"; + case VX_QUANT_AFFINE_SCALE: + return "affine"; + case VX_QUANT_AFFINE_SCALE_PER_CHANNEL: + return "perchannel_affine"; + case VX_QUANT_NONE: + default: + return "none"; + } +} + +} // namespace vsi::nbg_runner::vx +#endif \ No newline at end of file