Windows onnxruntime编译openvino
理论上来说,可以直接访问 ONNXRuntime Releases 下载 dll
文件,然后从官方文档中下载缺少的头文件以直接调用,但我没有尝试过。
1. 下载 OpenVINO 包
从官网下载 OpenVINO 的安装包并放置在 C:\Program Files (x86)
路径下,例如:
C:\Program Files (x86)\Intel\openvino_2024.4.0
2. 克隆源码并编译
从 ONNXRuntime GitHub 仓库 克隆源码。需要注意以下事项:
- 编译器需要安装 VS2022。
- 必须通过
git clone
下载源码,因为需要递归克隆第三方库。
克隆命令
git clone --branch v1.20.1 --recursive https://github.com/Microsoft/onnxruntime
cd onnxruntime-1.20.1
pip install -r requirements-dev.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
3. 编译命令
参考官方文档,使用以下命令编译:
./build.bat --config RelWithDebInfo --use_openvino AUTO:GPU,CPU --build_shared_lib --build_wheel
常见问题及解决方法
-
报错:找不到
openvino_dir
设置环境变量,添加 OpenVINO 的安装路径。示例:
-
报错:部分包无法从 Git 拉取
配置代理解决网络问题。可通过以下命令设置代理,端口号需根据梯子的端口设置:git config --global http.https://github.com.proxy socks5://127.0.0.1:10808
-
报错:
Define device
失败
使用新版代码,因旧版代码的某些头文件存在 Bug。如果非要使用旧版代码,需要对报错的头文件进行更改,报错的原因是对一个const string变量进行修改,需要创建临时变量进行赋值。
4. 生成解决方案
编译完成后,打开 VS2022,直接生成解决方案。生成后的标准目录如下:
5. 调用代码问题
调用代码时可能会遇到以下错误:
FAIL: LoadLibrary failed with error 126 "" when trying to load "onnxruntime\capi\onnxruntime_providers_openvino.dll"
解决方法:在调用代码前,加载 C:\Program Files (x86)\Intel\openvino_2024.4.0
下的相关 DLL 文件。我选择编写代码,全部加载相关 DLL。