Skip to content

Commit 44dee44

Browse files
lohika-denis-kotovredradist
authored andcommitted
Update setup.py script to make it buildable again
Finall update of setup.py file
1 parent e6eb43a commit 44dee44

File tree

5 files changed

+77
-21
lines changed

5 files changed

+77
-21
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: 71 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,11 @@
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

20+
from textwrap import dedent
1921
from pathlib import Path
2022
from setuptools import setup
2123
from setuptools.command.build_clib import build_clib
@@ -39,7 +41,7 @@
3941

4042
PACKAGE_NAME = config('WHEEL_PACKAGE_NAME', 'openvino-nvidia')
4143
OPENVINO_REPO_URI = config('OPENVINO_REPO_DOWNLOAD_URL', 'https://github.com/openvinotoolkit/openvino.git')
42-
WHEEL_VERSION = config('WHEEL_VERSION', '2022.3.0')
44+
WHEEL_VERSION = config('WHEEL_VERSION', "2024.1.0")
4345
OPENVINO_REPO_TAG = config('OPENVINO_REPO_TAG', WHEEL_VERSION)
4446
NVIDIA_PLUGIN_CMAKE_TARGET_NAME = 'openvino_nvidia_gpu_plugin'
4547
LIBS_RPATH = '$ORIGIN' if sys.platform == 'linux' else '@loader_path'
@@ -226,15 +228,23 @@ def run(self):
226228
if self.cmake_exec is None:
227229
raise FileNotFoundError("cmake path not located on path")
228230

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

237245
def clone_openvino_src(self):
246+
self.mkpath(self.deps_dir)
247+
238248
if os.path.isdir(self.openvino_src_dir):
239249
return
240250
self.announce("Cloning the OpenVINO sources", level=3)
@@ -246,16 +256,40 @@ def clone_openvino_src(self):
246256
cwd=self.openvino_src_dir,
247257
on_fail_msg='Failed to update the OpenVINO git submodules')
248258

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

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}',
275+
python_include_dir = sysconfig.get_path("include")
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,24 @@ 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 update_plugins_xml(self, xml_file, openvino_nvidia_gpu_library):
418+
if not os.path.exists(xml_file):
419+
plugins_xml_src = dedent('''\
420+
<ie>
421+
<plugins>
422+
</plugins>
423+
</ie>
424+
''')
425+
tree = ET.fromstring(plugins_xml_src)
426+
else:
427+
tree = ET.parse(xml_file).getroot()
428+
429+
plugins = tree.find("plugins")
430+
if all(plugin.get('name') != 'NVIDIA' for plugin in plugins.iter('plugin')):
431+
plugins.append(Element('plugin', {'name': 'NVIDIA', 'location': openvino_nvidia_gpu_library}))
432+
with open(xml_file, "w") as f:
433+
f.write(ET.tostring(tree).decode('utf8'))
434+
376435
def get_openvino_package_dir(self):
377436
import openvino
378437
openvino_package_dir = os.path.dirname(os.path.abspath(openvino.__file__))
@@ -386,12 +445,8 @@ def register_nvidia_plugin(self):
386445
f"libopenvino_nvidia_gpu_plugin.{platform_specifics.get_lib_file_extension()}")
387446

388447
xml_file = os.path.join(openvino_package_libs_dir, "plugins.xml")
389-
tree = ET.parse(xml_file).getroot()
390-
plugins = tree.find("plugins")
391-
if all(plugin.get('name') != 'NVIDIA' for plugin in plugins.iter('plugin')):
392-
plugins.append(Element('plugin', {'name': 'NVIDIA', 'location': openvino_nvidia_gpu_library}))
393-
with open(xml_file, "w") as f:
394-
f.write(ET.tostring(tree).decode('utf8'))
448+
449+
self.update_plugins_xml(xml_file, openvino_nvidia_gpu_library)
395450

396451
def unregister_nvidia_plugin(self):
397452
openvino_package_libs_dir = self.get_openvino_package_dir()
@@ -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)