Skip to content

Commit 222d090

Browse files
Update setup.py script to make it buildable again
Finall update of setup.py file
1 parent 659e519 commit 222d090

File tree

5 files changed

+71
-15
lines changed

5 files changed

+71
-15
lines changed

modules/nvidia_plugin/README.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ Afterwards plugin build procedure is as following:
4848

4949
1. Clone `openvino_contrib` repository:
5050
```bash
51-
git clone --recurse-submodules --single-branch --branch=2022.3.0 https://github.com/openvinotoolkit/openvino_contrib.git
51+
git clone --recurse-submodules --single-branch --branch=2024.1.0 https://github.com/openvinotoolkit/openvino_contrib.git
5252
```
5353
2. Go to plugin directory:
5454
```bash
@@ -60,7 +60,7 @@ mkdir build && cd build
6060
```
6161
4. Build plugin
6262

63-
First of all, switch OpenVINO™ to tag _2022.3.0_ and then build it according the instruction [How to build](https://github.com/openvinotoolkit/openvino/wiki#how-to-build)
63+
First of all, switch OpenVINO™ to tag _2024.1.0_ and then build it according the instruction [How to build](https://github.com/openvinotoolkit/openvino/wiki#how-to-build)
6464

6565
Then build CUDA Plugin with one of 2 options:
6666
- Using `build.sh`
@@ -97,7 +97,7 @@ If python available the CUDA Plugin could be compiled with setup.py script as fo
9797

9898
1. Clone `openvino_contrib` repository:
9999
```bash
100-
git clone --recurse-submodules --single-branch --branch=2022.3.0 https://github.com/openvinotoolkit/openvino_contrib.git
100+
git clone --recurse-submodules --single-branch --branch=2024.1.0 https://github.com/openvinotoolkit/openvino_contrib.git
101101
```
102102
2. Go to plugin directory:
103103
```bash

modules/nvidia_plugin/build.sh

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ fi
3939
cd "${OPENVINO_BUILD_PATH}"
4040
cmake "${OPENVINO_HOME}" \
4141
-DENABLE_NVIDIA=ON \
42+
-DENABLE_PLUGINS_XML=ON \
4243
-DENABLE_TESTS="${ENABLE_TESTS}" \
4344
-DBUILD_arm_plugin=OFF \
4445
-DBUILD_java_api=OFF \

modules/nvidia_plugin/wheel/openvino_nvidia/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,4 +36,4 @@ def _register_nvidia_plugin():
3636

3737
_register_nvidia_plugin()
3838

39-
__version__ = "2022.3.0"
39+
__version__ = "2024.1.0"
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
openvino==2022.3.0
1+
openvino==2024.1.0

modules/nvidia_plugin/wheel/setup.py

Lines changed: 65 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
import errno
1414
import multiprocessing
1515
import typing
16+
import sysconfig
1617
import defusedxml.ElementTree as ET
1718
from defusedxml import defuse_stdlib
1819

@@ -39,7 +40,7 @@
3940

4041
PACKAGE_NAME = config('WHEEL_PACKAGE_NAME', 'openvino-nvidia')
4142
OPENVINO_REPO_URI = config('OPENVINO_REPO_DOWNLOAD_URL', 'https://github.com/openvinotoolkit/openvino.git')
42-
WHEEL_VERSION = config('WHEEL_VERSION', '2022.3.0')
43+
WHEEL_VERSION = config('WHEEL_VERSION', "2024.1.0")
4344
OPENVINO_REPO_TAG = config('OPENVINO_REPO_TAG', WHEEL_VERSION)
4445
NVIDIA_PLUGIN_CMAKE_TARGET_NAME = 'openvino_nvidia_gpu_plugin'
4546
LIBS_RPATH = '$ORIGIN' if sys.platform == 'linux' else '@loader_path'
@@ -226,15 +227,23 @@ def run(self):
226227
if self.cmake_exec is None:
227228
raise FileNotFoundError("cmake path not located on path")
228229

229-
self.mkpath(self.deps_dir)
230230
self.clone_openvino_src()
231+
# TODO: Uncomment when issue with conan dependecies will be resolved.
232+
# When uncomment this line, got the following error during
233+
# cmake configuration step:
234+
# CMake Error at build/protobuf-Target-release.cmake:74 (set_property):
235+
# set_property can not be used on an ALIAS target.
236+
# ...
237+
# self.openvino_conan_install()
231238
self.configure_openvino_cmake()
232239
if self.force:
233240
self.build_openvino()
234241
self.build_nvidia_plugin()
235242
self.locate_built_lib()
236243

237244
def clone_openvino_src(self):
245+
self.mkpath(self.deps_dir)
246+
238247
if os.path.isdir(self.openvino_src_dir):
239248
return
240249
self.announce("Cloning the OpenVINO sources", level=3)
@@ -246,16 +255,41 @@ def clone_openvino_src(self):
246255
cwd=self.openvino_src_dir,
247256
on_fail_msg='Failed to update the OpenVINO git submodules')
248257

258+
def openvino_conan_install(self):
259+
if not os.path.isdir(self.openvino_build_dir):
260+
self.mkpath(self.openvino_build_dir)
261+
262+
run_command(["conan",
263+
"install",
264+
f'-of={self.openvino_build_dir}',
265+
'--build=missing',
266+
self.openvino_src_dir],
267+
cwd=self.openvino_build_dir,
268+
on_fail_msg='Failed to install conan dependecies for OpenVINO CMake Project')
269+
249270
def configure_openvino_cmake(self):
250271
if not os.path.isdir(self.openvino_build_dir):
251272
self.mkpath(self.openvino_build_dir)
252273

253-
configure_command = [self.cmake_exec, f'-S{self.openvino_src_dir}', f'-B{self.openvino_build_dir}',
254-
f'-DCMAKE_BUILD_TYPE={self.build_configuration_name}',
274+
python_include_dir = sysconfig.get_path("include")
275+
276+
configure_command = [self.cmake_exec,
277+
'-G', 'Unix Makefiles',
278+
f'-S{self.openvino_src_dir}',
279+
f'-B{self.openvino_build_dir}',
280+
'-DENABLE_PLUGINS_XML=ON',
281+
'-DCMAKE_VERBOSE_MAKEFILE=ON',
282+
'-DENABLE_NVIDIA=ON',
255283
'-DENABLE_PYTHON=ON',
284+
f'-DPython3_EXECUTABLE={sys.executable}',
285+
f'-DPython3_INCLUDE_DIR={python_include_dir}',
256286
f'-DPYTHON_EXECUTABLE={sys.executable}',
257-
f'-DWHEEL_VERSION={WHEEL_VERSION}',
258-
'-DENABLE_WHEEL=ON']
287+
f'-DPYTHON_INCLUDE_DIR={python_include_dir}',
288+
'-DNGRAPH_PYTHON_BUILD_ENABLE=ON',
289+
f'-DCMAKE_BUILD_TYPE={self.build_configuration_name}',
290+
f'-DOPENVINO_EXTRA_MODULES={self.openvino_contrib_src_dir}/modules/nvidia_plugin',
291+
'-DENABLE_WHEEL=ON',
292+
f'-DWHEEL_VERSION={WHEEL_VERSION}']
259293
self.announce("Configuring OpenVINO CMake Project", level=3)
260294
run_command(configure_command,
261295
cwd=self.openvino_build_dir,
@@ -333,11 +367,18 @@ def locate_built_lib(self):
333367
set_rpath(LIBS_RPATH, os.path.realpath(path))
334368

335369

336-
class InstallCMakeLib(install_lib):
370+
class InstallCMakeLib(install_lib, build_clib):
371+
def initialize_options(self):
372+
install_lib.initialize_options(self)
373+
build_clib.initialize_options(self)
374+
337375
def finalize_options(self):
338-
super().finalize_options()
376+
install_lib.finalize_options(self)
377+
build_clib.finalize_options(self)
378+
339379
self.git_exec = shutil.which("git")
340380
self.force = None
381+
self.deps_dir = os.path.abspath(os.path.join(self.build_temp, "deps"))
341382
self.set_undefined_options('install', ('force', 'force'))
342383

343384
def run(self):
@@ -373,6 +414,17 @@ def install_openvino_package_and_other_dependencies(self):
373414
run_command(requirements_py,
374415
on_fail_msg=f'Failed to install dependencies from {path_to_requirements_txt}')
375416

417+
def check_plugins_xml(self, dst_xml_file):
418+
if not os.path.exists(dst_xml_file):
419+
from glob import glob
420+
421+
plugins_xml_path = f"{self.deps_dir}/openvino/bin/**/*/plugins.xml"
422+
print(f"plugins_xml_path = {plugins_xml_path}")
423+
for src_xml_file in glob(f"{self.deps_dir}/openvino/bin/**/*/plugins.xml", recursive=True):
424+
print(f"src_xml_file = {src_xml_file}")
425+
shutil.copyfile(src_xml_file, dst_xml_file)
426+
break
427+
376428
def get_openvino_package_dir(self):
377429
import openvino
378430
openvino_package_dir = os.path.dirname(os.path.abspath(openvino.__file__))
@@ -386,6 +438,9 @@ def register_nvidia_plugin(self):
386438
f"libopenvino_nvidia_gpu_plugin.{platform_specifics.get_lib_file_extension()}")
387439

388440
xml_file = os.path.join(openvino_package_libs_dir, "plugins.xml")
441+
442+
self.check_plugins_xml(xml_file)
443+
389444
tree = ET.parse(xml_file).getroot()
390445
plugins = tree.find("plugins")
391446
if all(plugin.get('name') != 'NVIDIA' for plugin in plugins.iter('plugin')):
@@ -407,7 +462,7 @@ def unregister_nvidia_plugin(self):
407462
break
408463

409464
def test_nvidia_plugin(self):
410-
from openvino.runtime import Core
465+
import openvino as ov
411466
test_model_convert_fp32 = """
412467
<?xml version="1.0"?>
413468
<net name="Function_1208" version="10">
@@ -439,7 +494,7 @@ def test_nvidia_plugin(self):
439494
</edges>
440495
</net>
441496
""".encode('ascii')
442-
core = Core()
497+
core = ov.Core()
443498
model = core.read_model(model=test_model_convert_fp32)
444499
try:
445500
core.compile_model(model=model, device_name="NVIDIA")

0 commit comments

Comments
 (0)