From a8e283305038c7891db437d0646a58fed52e6583 Mon Sep 17 00:00:00 2001 From: Hector Li Date: Sun, 23 Apr 2023 21:28:34 -0700 Subject: [PATCH] [QNN EP]Unblock Qnn EP for Csharp support (#15640) ### Description Unblock Qnn EP for Csharp support ### Motivation and Context Enable Csharp support for Qnn EP --- .../src/Microsoft.ML.OnnxRuntime/SessionOptions.shared.cs | 8 ++++---- .../InferenceTest.cs | 6 ++++++ 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/csharp/src/Microsoft.ML.OnnxRuntime/SessionOptions.shared.cs b/csharp/src/Microsoft.ML.OnnxRuntime/SessionOptions.shared.cs index 57e0942a3b..7590299000 100644 --- a/csharp/src/Microsoft.ML.OnnxRuntime/SessionOptions.shared.cs +++ b/csharp/src/Microsoft.ML.OnnxRuntime/SessionOptions.shared.cs @@ -369,16 +369,16 @@ namespace Microsoft.ML.OnnxRuntime /// - /// Append SNPE or XNNPACK execution provider + /// Append QNN, SNPE or XNNPACK execution provider /// - /// Execution provider to add. 'SNPE' or 'XNNPACK' are currently supported. + /// Execution provider to add. 'QNN', 'SNPE' or 'XNNPACK' are currently supported. /// Optional key/value pairs to specify execution provider options. public void AppendExecutionProvider(string providerName, Dictionary providerOptions = null) { - if (providerName != "SNPE" && providerName != "XNNPACK") + if (providerName != "SNPE" && providerName != "XNNPACK" && providerName != "QNN") { throw new NotSupportedException( - "Only SNPE and XNNPACK execution providers can be enabled by this method."); + "Only QNN, SNPE and XNNPACK execution providers can be enabled by this method."); } if (providerOptions == null) diff --git a/csharp/test/Microsoft.ML.OnnxRuntime.Tests.Common/InferenceTest.cs b/csharp/test/Microsoft.ML.OnnxRuntime.Tests.Common/InferenceTest.cs index 7d4e3df25f..61205b7412 100644 --- a/csharp/test/Microsoft.ML.OnnxRuntime.Tests.Common/InferenceTest.cs +++ b/csharp/test/Microsoft.ML.OnnxRuntime.Tests.Common/InferenceTest.cs @@ -148,6 +148,12 @@ namespace Microsoft.ML.OnnxRuntime.Tests ex = Assert.Throws(() => { opt.AppendExecutionProvider("SNPE"); }); Assert.Contains("SNPE execution provider is not supported in this build", ex.Message); #endif +#if USE_QNN + opt.AppendExecutionProvider("QNN"); +#else + ex = Assert.Throws(() => { opt.AppendExecutionProvider("QNN"); }); + Assert.Contains("QNN execution provider is not supported in this build", ex.Message); +#endif opt.AppendExecutionProvider_CPU(1); }