Skip to content

Commit 2e75c6e

Browse files
committed
consolidate OpenVINO-related patches into a single patch file. OpenVINOExecutionProviderSample confirmed working on linux x86-64 (via WSL)
1 parent 1dcbf37 commit 2e75c6e

7 files changed

Lines changed: 56 additions & 101 deletions

File tree

onnxruntime/cppbuild.sh

Lines changed: 3 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -121,9 +121,7 @@ sedinplace 's/MLAS_CPUIDINFO::GetCPUIDInfo().HasArmNeon_I8MM()/false/g' onnxrunt
121121

122122
# work around toolchain issues on Mac and Windows
123123
patch -p1 < ../../../onnxruntime.patch
124-
git apply --recount ../../../onnxruntime-openvino-no-format.patch
125-
git apply --recount ../../../onnxruntime-openvino-gcc11.patch
126-
git apply --recount ../../../onnxruntime-openvino-gcc13.patch
124+
git apply --recount ../../../onnxruntime-openvino.patch
127125
#patch -p1 < ../../../onnxruntime-cuda.patch # https://github.com/microsoft/onnxruntime/pull/22316
128126
#patch -p1 < ../../../onnxruntime-windows.patch # https://github.com/microsoft/onnxruntime/pull/7883
129127
sedinplace '/--Werror/d' cmake/CMakeLists.txt
@@ -135,6 +133,8 @@ sedinplace 's/-fvisibility=hidden//g' cmake/CMakeLists.txt cmake/adjust_global_c
135133
sedinplace 's:/Yucuda_pch.h /FIcuda_pch.h::g' cmake/onnxruntime_providers_cuda.cmake cmake/onnxruntime_providers.cmake
136134
sedinplace 's/${PROJECT_SOURCE_DIR}\/external\/cub//g' cmake/onnxruntime_providers_cuda.cmake cmake/onnxruntime_providers.cmake
137135
sedinplace 's/-Xcompiler \/Zc:__cplusplus/-Xcompiler \/Zc:__cplusplus -Xcompiler \/Zc:preprocessor/g' cmake/onnxruntime_providers_cuda.cmake cmake/onnxruntime_providers_cuda_plugin.cmake
136+
# CUDA 13 on Windows needs the ORT CUB wrapper to undefine MSVC SAL macros: https://github.com/microsoft/onnxruntime/pull/28309
137+
sedinplace 's|#include <cub/cub.cuh>|#include "core/providers/cuda/cu_inc/cub.cuh"|g' onnxruntime/contrib_ops/cuda/bert/gqa_unfused_attention.cu
138138
sedinplace '/CXX>:\/permissive/a\
139139
"$<$<COMPILE_LANGUAGE:CXX>:/Zc:preprocessor>"
140140
' cmake/onnxruntime_providers_cuda.cmake cmake/onnxruntime_providers_cuda_plugin.cmake
@@ -200,18 +200,6 @@ sedinplace 's/offsets = allocarray/offsets = (size_t*)allocarray/g' java/src/mai
200200
sedinplace 's/tempBuffer = realloc/tempBuffer = (char*)realloc/g' java/src/main/native/OrtJniUtil.cpp
201201
sedinplace 's/Throw(javaException)/Throw((jthrowable)javaException)/g' java/src/main/native/OrtJniUtil.cpp
202202
sedinplace '/jint JNI_OnLoad/,/}/d' java/src/main/native/OrtJniUtil.cpp
203-
sedinplace '/static synchronized void init() throws IOException {/a\
204-
loaded = org.bytedeco.javacpp.Loader.load(org.bytedeco.onnxruntime.presets.onnxruntime.class) != null;\
205-
ortApiHandle = initialiseAPIBase(ORT_API_VERSION_23);\
206-
if (ortApiHandle == 0L) {\
207-
throw new IllegalStateException("There is a mismatch between the ORT class files and the ORT native library, and the native library could not be loaded");\
208-
}\
209-
ortTrainingApiHandle = initialiseTrainingAPIBase(ortApiHandle, ORT_API_VERSION_23);\
210-
ortCompileApiHandle = initialiseCompileAPIBase(ortApiHandle);\
211-
trainingEnabled = ortTrainingApiHandle != 0L;\
212-
providers = initialiseProviders(ortApiHandle);\
213-
version = initialiseVersion();\
214-
' java/src/main/java/ai/onnxruntime/OnnxRuntime.java
215203
sedinplace 's/Names = malloc/Names = (const char**)malloc/g' java/src/main/native/ai_onnxruntime_OrtSession.cpp
216204
sedinplace 's/Strings = malloc/Strings = (jobject*)malloc/g' java/src/main/native/ai_onnxruntime_OrtSession.cpp
217205
sedinplace 's/inputValuePtrs = malloc/inputValuePtrs = (const OrtValue**)malloc/g' java/src/main/native/ai_onnxruntime_OrtSession.cpp

onnxruntime/onnxruntime-openvino-gcc11.patch

Lines changed: 0 additions & 14 deletions
This file was deleted.

onnxruntime/onnxruntime-openvino-gcc13.patch

Lines changed: 0 additions & 32 deletions
This file was deleted.

onnxruntime/onnxruntime-openvino-no-format.patch renamed to onnxruntime/onnxruntime-openvino.patch

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -152,3 +152,45 @@ index 5de7607a87..56ce53b986 100644
152152
}
153153

154154
const Node* node_ptr{nullptr};
155+
@@ -563,7 +576,9 @@ struct CustomGraph {
156+
if (!found) {
157+
// Connect the last valid node to the graph output
158+
- for (auto node : std::ranges::reverse_view(original_graph.Nodes())) {
159+
+ auto graph_nodes = original_graph.Nodes();
160+
+ for (auto node_it = graph_nodes.rbegin(); node_it != graph_nodes.rend(); ++node_it) {
161+
+ auto node = *node_it;
162+
if (!node->OutputDefs().empty()) {
163+
const auto& name = (*node->OutputDefs().begin())->Name();
164+
auto& node_arg = original_graph.GetOrCreateNodeArg(name, output->TypeAsProto());
165+
diff --git a/onnxruntime/core/providers/openvino/ov_versions/utils.cc b/onnxruntime/core/providers/openvino/ov_versions/utils.cc
166+
index dd43f856e0..6a34827b1a 100644
167+
--- a/onnxruntime/core/providers/openvino/ov_versions/utils.cc
168+
+++ b/onnxruntime/core/providers/openvino/ov_versions/utils.cc
169+
@@ -9,13 +9,11 @@
170+
#elif __GNUC__
171+
#pragma GCC diagnostic push
172+
#pragma GCC diagnostic ignored "-Wunused-parameter"
173+
-#endif
174+
-
175+
-#if defined(_MSC_VER)
176+
-#pragma warning(default : 4244 4245)
177+
-#elif __GNUC__
178+
-#pragma GCC diagnostic pop
179+
+#if __GNUC__ >= 13
180+
+#pragma GCC diagnostic ignored "-Wfree-nonheap-object"
181+
+#endif
182+
#endif
183+
184+
namespace onnxruntime {
185+
namespace openvino_ep {
186+
187+
@@ -1080,3 +1078,10 @@ void GetInputsOutputsOfCluster(const GraphViewer& graph_viewer, const std::vecto
188+
189+
} // namespace openvino_ep
190+
} // namespace onnxruntime
191+
+
192+
+#if defined(_MSC_VER)
193+
+#pragma warning(default : 4244 4245)
194+
+#elif __GNUC__
195+
+#pragma GCC diagnostic pop
196+
+#endif

onnxruntime/pom.xml

Lines changed: 5 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -16,19 +16,20 @@
1616

1717
<properties>
1818
<onnxruntime.path>${basedir}/cppbuild/${javacpp.platform}${javacpp.platform.extension}/onnxruntime</onnxruntime.path>
19-
<openvino.link.path>${basedir}/../openvino/cppbuild/${javacpp.platform}/runtime/lib/intel64/</openvino.link.path>
2019
</properties>
2120

2221
<dependencies>
2322
<dependency>
2423
<groupId>org.bytedeco</groupId>
2524
<artifactId>dnnl</artifactId>
2625
<version>3.11-${project.parent.version}</version>
26+
<optional>true</optional>
2727
</dependency>
2828
<dependency>
2929
<groupId>org.bytedeco</groupId>
3030
<artifactId>openvino</artifactId>
3131
<version>2026.1.0-${project.parent.version}</version>
32+
<optional>true</optional>
3233
</dependency>
3334
<dependency>
3435
<groupId>org.bytedeco</groupId>
@@ -89,7 +90,9 @@
8990
<linkPaths>
9091
<linkPath>${basedir}/../opencl/cppbuild/${javacpp.platform}/lib/</linkPath>
9192
<linkPath>${basedir}/../dnnl/cppbuild/${javacpp.platform}/lib/</linkPath>
92-
<linkPath>${openvino.link.path}</linkPath>
93+
<linkPath>${basedir}/../openvino/cppbuild/${javacpp.platform}/runtime/lib/intel64/</linkPath>
94+
<linkPath>${basedir}/../openvino/cppbuild/${javacpp.platform}/runtime/lib/intel64/Release/</linkPath>
95+
<linkPath>${basedir}/../openvino/cppbuild/${javacpp.platform}/runtime/lib/arm64/Release/</linkPath>
9396
<linkPath>${basedir}/cppbuild/${javacpp.platform}${javacpp.platform.extension}/lib/</linkPath>
9497
</linkPaths>
9598
<preloadPaths>
@@ -181,31 +184,4 @@
181184
</plugins>
182185
</build>
183186

184-
<profiles>
185-
<profile>
186-
<id>macosx-arm64</id>
187-
<activation>
188-
<property>
189-
<name>javacpp.platform</name>
190-
<value>macosx-arm64</value>
191-
</property>
192-
</activation>
193-
<properties>
194-
<openvino.link.path>${basedir}/../openvino/cppbuild/${javacpp.platform}/runtime/lib/arm64/Release/</openvino.link.path>
195-
</properties>
196-
</profile>
197-
<profile>
198-
<id>windows-x86_64</id>
199-
<activation>
200-
<property>
201-
<name>javacpp.platform</name>
202-
<value>windows-x86_64</value>
203-
</property>
204-
</activation>
205-
<properties>
206-
<openvino.link.path>${basedir}/../openvino/cppbuild/${javacpp.platform}/runtime/lib/intel64/Release/</openvino.link.path>
207-
</properties>
208-
</profile>
209-
</profiles>
210-
211187
</project>

onnxruntime/samples/OpenVINOExecutionProviderSample.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,9 @@
88
import java.util.Base64;
99

1010
import org.bytedeco.javacpp.BytePointer;
11+
import org.bytedeco.javacpp.FloatPointer;
1112
import org.bytedeco.javacpp.Loader;
13+
import org.bytedeco.javacpp.LongPointer;
1214
import org.bytedeco.javacpp.PointerPointer;
1315
import org.bytedeco.onnxruntime.Env;
1416
import org.bytedeco.onnxruntime.MemoryInfo;
@@ -50,9 +52,11 @@ public static void main(String[] args) throws Exception {
5052
Session session = new Session(env, modelData, modelBytes.length, sessionOptions);
5153

5254
float[] input = new float[] {1.25f, -2.5f, 3.75f};
55+
FloatPointer inputData = new FloatPointer(input);
5356
long[] shape = new long[] {3};
57+
LongPointer shapeData = new LongPointer(shape);
5458
MemoryInfo memoryInfo = MemoryInfo.CreateCpu(OrtArenaAllocator, OrtMemTypeDefault);
55-
Value inputTensor = Value.CreateTensorFloat(memoryInfo.asOrtMemoryInfo(), input, input.length, shape, shape.length);
59+
Value inputTensor = Value.CreateTensorFloat(memoryInfo.asOrtMemoryInfo(), inputData, input.length, shapeData, shape.length);
5660

5761
BytePointer inputName = new BytePointer("input");
5862
BytePointer outputName = new BytePointer("output");

onnxruntime/src/main/java/org/bytedeco/onnxruntime/presets/onnxruntime.java

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -68,16 +68,7 @@
6868
},
6969
exclude = {"CL/opencl.h", "CL/cl_version.h", "CL/cl_platform.h", "CL/cl.h"/*, "CL/cl_gl.h", "CL/cl_gl_ext.h", "CL/cl_ext.h"*/,
7070
"onnxruntime/core/session/onnxruntime_ep_c_api.h"},
71-
link = {"onnxruntime_providers_shared", "onnxruntime@.1", "onnxruntime_providers_dnnl"}
72-
),
73-
@Platform(
74-
value = {"linux-x86_64", "macosx-arm64", "windows-x86_64"},
75-
link = {"onnxruntime_providers_shared", "onnxruntime@.1", "onnxruntime_providers_dnnl", "onnxruntime_providers_openvino"}
76-
),
77-
@Platform(
78-
value = {"linux", "macosx", "windows"},
79-
extension = "-gpu",
80-
link = {"onnxruntime_providers_shared", "onnxruntime@.1", "onnxruntime_providers_dnnl", "onnxruntime_providers_cuda"}
71+
link = {"onnxruntime_providers_shared", "onnxruntime@.1", "onnxruntime_providers_dnnl", "onnxruntime_providers_openvino", "onnxruntime_providers_cuda"}
8172
),
8273
},
8374
target = "org.bytedeco.onnxruntime",

0 commit comments

Comments
 (0)