在运行session->Run遇到的问题,没有发现哪里有错误,但是就是出现了错误。
先把问题记录下来,
这是在用VS2017,运行yolov10的onnx模型的C++代码,用到了onnxruntime库。
程序在运行到global_session->Run的时候会出现两种错误情况,
一、可以直接运行这个程序中的tflite模型,但onnx模型的错误直接跳过,在控制台的输出是下面的错误代码,但可以运行整个程序,除了onnx模型。无论更换onnxruntime库的版本,出现的都是这样的错误。
2024-12-06 13:33:02.5771754 [E:onnxruntime:, sequential_executor.cc:516 onnxruntime::ExecuteKernel] Non-zero status code returned while running Conv node. Name:'/model.0/conv/Conv_output_0_nchwc' Status Message: D:\a\_work\1\s\include\onnxruntime\core/common/logging/logging.h:367 onnxruntime::logging::LoggingManager::DefaultLogger Attempt to use DefaultLogger but none has been registered.
二、是运行到global_session->Run的时候,程序会中断
但是我检查一下global_session->Run的这一段代码,我觉得又没有什么问题。
output_tensors = global_session->Run(Ort::RunOptions{nullptr},
input_names.data(), // images
input_tensors.data(), // 1*3*640*640
input_tensors.size(), // 1
output_names.data(), // output0
output_names.size()); // 1
想解决问题,但是还没找到解决问题的办法。那就先准确的记录、描述问题,以待解决时机。
然后在Google上搜寻相关的解决办法,大概找到了下面几个,先贴上来,以防后面又找不到了
第一种问题的相似问题:
1、Non-zero status code returned while running DmlFusedNode_0_0 node #863
https://github.com/microsoft/onnxruntime-genai/issues/863
2、Non-zero status code returned while running Softmax node #15255
https://github.com/microsoft/onnxruntime/issues/15255
第2个相似问题的解决办法是,在程序的exe同文件夹下,放入1.8.0版本以下的directml.dll文件,但是我搜了一下,没找到1.8.0版本以下的directml.dll文件,就在这个路径下,下载了第一个directml.dll文件放在了程序exe的同文件夹下,这个时候,不报第一种错误了,报了第二种错误。
directml.dll free download | DLL‑files.com
第二种问题的相似问题:
1、Exception thrown: read access violation. this was 0xFFFFFFFFFFFFFFFF. #7570
Exception thrown: read access violation. this was 0xFFFFFFFFFFFFFFFF. · Issue #7570 · ultralytics/ultralytics · GitHub
不过这个帖子下面好像没有实质性的解决方案。
------------------------------------------------------------------------------
还有个20241205搜到的解决方案
这个方法大致是用cuda来运行,我现在是只在cpu上运行,也许我应该启动cuda试一下。
记录问题,分析问题的解决方向,尝试解决问题
20241206
--------------------------------------------------------------------------
有时候还会报出这个错误