Skip to content

Commit 5c2b9ac

Browse files
[NPU] Allow to use system level-zero (openvinotoolkit#27633)
### Details: - conda-forge/openvino-feedstock#110 (comment)
1 parent e6b4250 commit 5c2b9ac

File tree

7 files changed

+35
-21
lines changed

7 files changed

+35
-21
lines changed

CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -138,7 +138,7 @@ function(ov_developer_package_export_targets)
138138
endforeach()
139139
endif()
140140
else()
141-
message(FATAL_ERROR "Internal error: ${target_name} does not represent a cmake target")
141+
message(FATAL_ERROR "Internal error: '${EXPORT_TARGET}' does not represent a cmake target")
142142
endif()
143143

144144
list(REMOVE_DUPLICATES _OPENVINO_DEVELOPER_PACKAGE_TARGETS)

cmake/features.cmake

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -200,6 +200,9 @@ ov_dependent_option (ENABLE_SYSTEM_PROTOBUF "Enables use of system Protobuf" OFF
200200
# the option is turned off by default, because we don't want to have a dependency on libsnappy.so
201201
ov_dependent_option (ENABLE_SYSTEM_SNAPPY "Enables use of system version of Snappy" OFF
202202
"ENABLE_SNAPPY_COMPRESSION" OFF)
203+
# the option is turned off by default, because we are not sure that system version of ZE loader is fresh enough
204+
ov_dependent_option (ENABLE_SYSTEM_LEVEL_ZERO "Enables use of system version of Level Zero" OFF
205+
"ENABLE_INTEL_NPU" OFF)
203206

204207
ov_dependent_option(ENABLE_JS "Enables JS API building" ${ENABLE_JS_DEFAULT} "NOT ANDROID;NOT EMSCRIPTEN" OFF)
205208

src/cmake/ov_parallel.cmake

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,7 @@ macro(ov_find_package_tbb)
132132
IMPORTED_TARGET
133133
# we need to set GLOBAL in order to create ALIAS later
134134
# ALIAS creation for non-GLOBAL targets is available since cmake 3.18
135-
${OV_PkgConfig_VISILITY}
135+
${OV_PkgConfig_VISIBILITY}
136136
tbb)
137137
if(tbb_FOUND)
138138
# parse version

src/plugins/intel_npu/src/backend/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ target_link_libraries(${TARGET_NAME}
2525
PRIVATE
2626
openvino::npu_al
2727
openvino::npu_common
28-
ze_loader
28+
LevelZero::LevelZero
2929
)
3030

3131
#

src/plugins/intel_npu/src/compiler_adapter/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ target_link_libraries(${TARGET_NAME}
2525
PRIVATE
2626
openvino::npu_al
2727
openvino::npu_common
28-
ze_loader
28+
LevelZero::LevelZero
2929
)
3030

3131
#

src/plugins/intel_npu/src/utils/src/zero/CMakeLists.txt

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,7 @@ target_include_directories(${TARGET_NAME}
2121
$<TARGET_PROPERTY:LevelZero::NPUExt,INTERFACE_INCLUDE_DIRECTORIES>
2222
$<BUILD_INTERFACE:${NPU_UTILS_SOURCE_DIR}/include>)
2323

24-
25-
target_link_libraries(
26-
${TARGET_NAME}
27-
PUBLIC openvino::runtime openvino::runtime::dev)
24+
target_link_libraries(${TARGET_NAME} PUBLIC openvino::runtime::dev)
2825

2926
#
3027
# targets install
@@ -35,17 +32,19 @@ ov_developer_package_export_targets(TARGET openvino::npu_zero_utils
3532
INSTALL_INCLUDE_DIRECTORIES
3633
$<BUILD_INTERFACE:${NPU_UTILS_SOURCE_DIR}/include>)
3734

35+
ov_developer_package_export_targets(TARGET level-zero-ext)
36+
ov_install_static_lib(level-zero-ext ${NPU_PLUGIN_COMPONENT})
37+
3838
if(TARGET ze_loader)
3939
ov_developer_package_export_targets(TARGET ze_loader)
40-
ov_developer_package_export_targets(TARGET utils)
41-
ov_developer_package_export_targets(TARGET level-zero-ext)
42-
4340
ov_install_static_lib(ze_loader ${NPU_PLUGIN_COMPONENT})
41+
42+
# TODO: remove once https://github.com/oneapi-src/level-zero/pull/243 is merged
43+
ov_developer_package_export_targets(TARGET utils)
4444
ov_install_static_lib(utils ${NPU_PLUGIN_COMPONENT})
45-
ov_install_static_lib(level-zero-ext ${NPU_PLUGIN_COMPONENT})
4645

4746
# Support tests to run with ze_loader
4847
install(TARGETS ze_loader
49-
RUNTIME DESTINATION tests COMPONENT tests EXCLUDE_FROM_ALL
50-
LIBRARY DESTINATION tests COMPONENT tests EXCLUDE_FROM_ALL)
48+
RUNTIME DESTINATION tests COMPONENT tests EXCLUDE_FROM_ALL
49+
LIBRARY DESTINATION tests COMPONENT tests EXCLUDE_FROM_ALL)
5150
endif()

thirdparty/dependencies.cmake

Lines changed: 19 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ find_package(PkgConfig QUIET)
1818
# cmake older than 3.18 cannot create an alias for imported non-GLOBAL targets
1919
# so, we have to use 'IMPORTED_GLOBAL' property
2020
if(CMAKE_VERSION VERSION_LESS 3.18)
21-
set(OV_PkgConfig_VISILITY GLOBAL)
21+
set(OV_PkgConfig_VISIBILITY GLOBAL)
2222
endif()
2323

2424
if(SUGGEST_OVERRIDE_SUPPORTED)
@@ -69,9 +69,21 @@ endif()
6969
#
7070

7171
if(ENABLE_INTEL_NPU)
72-
add_subdirectory(thirdparty/level_zero EXCLUDE_FROM_ALL)
72+
if(ENABLE_SYSTEM_LEVEL_ZERO)
73+
pkg_search_module(level_zero QUIET
74+
IMPORTED_TARGET
75+
${OV_PkgConfig_VISIBILITY}
76+
level-zero)
77+
if(level_zero_FOUND)
78+
add_library(LevelZero::LevelZero ALIAS PkgConfig::level_zero)
79+
message(STATUS "${PKG_CONFIG_EXECUTABLE}: level_zero (${level_zero_VERSION}) is found at ${level_zero_PREFIX}")
80+
endif()
81+
endif()
7382

74-
add_library(LevelZero::LevelZero ALIAS ze_loader)
83+
if(NOT libze_loader_FOUND)
84+
add_subdirectory(thirdparty/level_zero EXCLUDE_FROM_ALL)
85+
add_library(LevelZero::LevelZero ALIAS ze_loader)
86+
endif()
7587
endif()
7688

7789
#
@@ -190,7 +202,7 @@ if(ENABLE_SYSTEM_PUGIXML)
190202
# Ubuntu 18.04 case when cmake interface is not available
191203
pkg_search_module(pugixml QUIET
192204
IMPORTED_TARGET
193-
${OV_PkgConfig_VISILITY}
205+
${OV_PkgConfig_VISIBILITY}
194206
pugixml)
195207
if(pugixml_FOUND)
196208
set(pugixml_target PkgConfig::pugixml)
@@ -249,7 +261,7 @@ if(ENABLE_SYSTEM_PUGIXML)
249261
message(FATAL_ERROR "Debian | RPM package build requires shared Pugixml library")
250262
endif()
251263

252-
if(OV_PkgConfig_VISILITY)
264+
if(OV_PkgConfig_VISIBILITY)
253265
# need to set GLOBAL visibility in order to create ALIAS for this target
254266
set_target_properties(${pugixml_target} PROPERTIES IMPORTED_GLOBAL ON)
255267
endif()
@@ -299,7 +311,7 @@ if(ENABLE_TESTS)
299311

300312
if(GTest_FOUND)
301313
foreach(gtest_target gtest gtest_main gmock gmock_main)
302-
if(OV_PkgConfig_VISILITY)
314+
if(OV_PkgConfig_VISIBILITY)
303315
# need to set GLOBAL visibility in order to create ALIAS for this target
304316
set_target_properties(GTest::${gtest_target} PROPERTIES IMPORTED_GLOBAL ON)
305317
endif()
@@ -448,7 +460,7 @@ if(ENABLE_SNAPPY_COMPRESSION)
448460
set(ov_snappy_lib Snappy::snappy-static)
449461
endif()
450462

451-
if(OV_PkgConfig_VISILITY)
463+
if(OV_PkgConfig_VISIBILITY)
452464
# need to set GLOBAL visibility in order to create ALIAS for this target
453465
set_target_properties(${ov_snappy_lib} PROPERTIES IMPORTED_GLOBAL ON)
454466
endif()

0 commit comments

Comments
 (0)