求助:使用Microsoft.ML.OnnxRuntime GPU时遇System.EntryPointNotFoundException错误
解决System.EntryPointNotFoundException: 找不到OrtSessionOptionsAppendExecutionProvider_DML入口点的问题
问题场景
启用GPU加速时,调用options.AppendExecutionProvider_DML()抛出如下错误:
System.EntryPointNotFoundException: "无法在DLL "onnxruntime" 中找到入口点 "OrtSessionOptionsAppendExecutionProvider_DML"。"
禁用GPU(useGpu=false)时,代码可在CPU上正常运行。
解决方案
匹配ONNX Runtime版本与DML支持
ONNX Runtime 1.10及以上版本才正式支持DirectML执行提供器。若使用旧版本,直接升级到最新稳定版:dotnet add package Microsoft.ML.OnnxRuntime --version <最新稳定版本号>安装DML专用NuGet包
部分新版本ONNX Runtime将DML支持拆分到独立包中,需替换基础包:- 卸载原有基础包:
dotnet remove package Microsoft.ML.OnnxRuntime - 安装DirectML专用包:
dotnet add package Microsoft.ML.OnnxRuntime.DirectML
代码中
options.AppendExecutionProvider_DML()的调用无需修改。- 卸载原有基础包:
验证运行时DLL完整性
检查项目输出目录(如bin/Debug/net6.0)下的onnxruntime.dll是否包含DML相关入口点:- 若DLL缺失或版本不对,卸载并重新安装对应NuGet包,确保部署完整。
确认系统与硬件兼容性
DirectML要求Windows 10 1903及以上版本,且显卡支持DirectX 12:- 升级Windows到符合要求的版本
- 更新显卡驱动至最新版
设置正确的项目平台目标
ONNX Runtime的DML支持仅提供x64版本,将项目平台目标设置为x64,避免Any CPU模式下的32位/64位不匹配问题。
内容的提问来源于stack exchange,提问作者user26637516
相关产品推荐
相关产品推荐

