您好!
我正在使用 edgeai-tidl-tools 使用 ONNX 文件为 TDA4编译 TIDL 伪影。 自从迁移到 RTOS SDK 8.6 (以及 edgeai 8.6)之后、我在尝试编译时会抛出 SIGBUS 和 SIGSEV。
下面是我的脚本的简短版本:
import onnxruntime as rt import onnx # ... onnx.shape_inference.infer_shapes_path(onnx_model_path, onnx_model_path) compile_options = { 'tidl_tools_path': os.environ['TIDL_TOOLS_PATH'], 'artifacts_folder': artifacts_folder, 'tensor_bits': 16, 'accuracy_level': 0, 'advanced_options:calibration_frames': 1, 'advanced_options:calibration_iterations': 1, 'advanced_options:quantization_scale_type': 1, 'debug_level': 1, "platform": "J7" } delegate_options = {} delegate_options.update(compile_options) so = rt.SessionOptions() EP_list = ['TIDLCompilationProvider', 'CPUExecutionProvider'] sess = rt.InferenceSession(onnx_model_path, providers=EP_list, provider_options=[delegate_options, {}], sess_options=so) # ... output = sess.run(None, {...})
具体而言、 当我调用 sess.run (...)时、python 脚本会停止并显示"Bus error (core pose)"。 下面是使用 gdb python3运行脚本时的回溯:
Thread 1 "python3" received signal SIGBUS, Bus error. 0x00007ffff7b70ded in ?? () from /lib/x86_64-linux-gnu/libc.so.6 (gdb) backtrace #0 0x00007ffff7b70ded in ?? () from /lib/x86_64-linux-gnu/libc.so.6 #1 0x00007fff40f09f06 in vxCreateUserDataObject () from /devel/edgeai-tidl-tools/tidl_tools/libvx_tidl_rt.so #2 0x00007fff40f0214c in TIDLRT_create () from /devel/edgeai-tidl-tools/tidl_tools/libvx_tidl_rt.so #3 0x00007fff4cc65cab in TIDL_subgraphRtCreate () from /devel/edgeai-tidl-tools/tidl_tools/tidl_model_import_onnx.so #4 0x00007fff4cc43dc6 in TIDL_computeImportFunc () from /devel/edgeai-tidl-tools/tidl_tools/tidl_model_import_onnx.so
如果我注释掉 sess.run (...)、则脚本会停止并显示"Segmentation fault (core disposed)"。 下面是它的回溯:
Thread 1 "python3" received signal SIGSEGV, Segmentation fault. 0x00007fff40f1707c in ownReleaseReferenceInt () from /devel/edgeai-tidl-tools/tidl_tools/libvx_tidl_rt.so (gdb) backtrace #0 0x00007fff40f1707c in ownReleaseReferenceInt () from /devel/edgeai-tidl-tools/tidl_tools/libvx_tidl_rt.so #1 0x00007fff40f02ba7 in TIDLRT_delete () from /devel/edgeai-tidl-tools/tidl_tools/libvx_tidl_rt.so #2 0x00007fff4cc660bf in TIDL_subgraphRtDelete () from /devel/edgeai-tidl-tools/tidl_tools/tidl_model_import_onnx.so
我已经测试删除"TIDLCompilationProvider"仅保留"CPUExecutionProvider"、然后我可以编译我的工件并在我的 TDA4上使用它们。 我认为这证明 ONNX 或我的脚本没有问题。
# echo $LD_LIBRARY_PATH :/devel/edgeai-tidl-tools/tidl_tools:/devel/edgeai-tidl-tools/tidl_tools/osrt_deps # echo $ARM64_GCC_PATH /devel/edgeai-tidl-tools/gcc-arm-9.2-2019.12-x86_64-aarch64-none-linux-gnu # echo $TIDL_TOOLS_PATH /devel/edgeai-tidl-tools/tidl_tools # echo $SOC am68pa