Skip to content

Commit

Permalink
NPU Driver 1.13.0 release unified 2025WW04 (#70)
Browse files Browse the repository at this point in the history
Signed-off-by: Schulfer, Magdalena [email protected]
Signed-off-by: Wludzik, Jozef [email protected]
Co-authored-by: Pawlak, Jakub [email protected]
Co-authored-by: Pradzynski, Krystian [email protected]
Co-authored-by: Tabaka, Mateusz [email protected]
  • Loading branch information
mschulfe authored Jan 31, 2025
1 parent 93fb54b commit bd414f6
Show file tree
Hide file tree
Showing 173 changed files with 28,497 additions and 1,823 deletions.
3 changes: 3 additions & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
Expand Up @@ -13,3 +13,6 @@
[submodule "third_party/yaml-cpp"]
path = third_party/yaml-cpp
url = https://github.com/jbeder/yaml-cpp.git
[submodule "third_party/perfetto"]
path = third_party/perfetto
url = https://android.googlesource.com/platform/external/perfetto
4 changes: 3 additions & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ if (${CMAKE_VERSION} VERSION_GREATER_EQUAL "3.24")
cmake_policy(SET CMP0135 NEW)
endif()

set(STACK_VERSION 1.10.1 CACHE STRING "Main project version")
set(STACK_VERSION 1.13.0 CACHE STRING "Main project version")
project(npu-linux-driver VERSION ${STACK_VERSION})

set(BUILD_NUMBER "dev-0" CACHE STRING "Build number composed of name and unique number used as driver version")
Expand All @@ -36,9 +36,11 @@ set(CMAKE_EXPORT_COMPILE_COMMANDS ON)

option(ENABLE_OPENVINO_PACKAGE "Enable building the OpenVINO + NPU Plugin package" OFF)
option(ENABLE_NPU_COMPILER_BUILD "Enable building compiler in driver" OFF)
option(ENABLE_NPU_PERFETTO_BUILD "Enable building with Perfetto library" OFF)

message(STATUS "option ENABLE_OPENVINO_PACKAGE: ${ENABLE_OPENVINO_PACKAGE}")
message(STATUS "option ENABLE_NPU_COMPILER_BUILD: ${ENABLE_NPU_COMPILER_BUILD}")
message(STATUS "option ENABLE_NPU_PERFETTO_BUILD: ${ENABLE_NPU_PERFETTO_BUILD}")

include(GNUInstallDirs)

Expand Down
2 changes: 1 addition & 1 deletion cmake/packaging/generators/ebuild_package_script.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ foreach(COMPONENT IN LISTS CPACK_COMPONENTS_ALL)
"\n"
"src_install() {\n"
" mkdir -p \${D}\n"
" cp -r \${S}/* \${D}\n"
" cp -ra \${S}/* \${D}\n"
"}\n")

if (${COMPONENT_UPPER}_POSTINST)
Expand Down
1 change: 1 addition & 0 deletions cmake/packaging/setup.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ file(WRITE ${CPACK_PROJECT_CONFIG_FILE}
get_cmake_property(CPACK_COMPONENTS_ALL COMPONENTS)
list(REMOVE_ITEM CPACK_COMPONENTS_ALL level-zero-devel)
list(REMOVE_ITEM CPACK_COMPONENTS_ALL openvino_standalone_package)
list(REMOVE_ITEM CPACK_COMPONENTS_ALL npu_compiler_package)

if (EXISTS "/etc/debian_version")
set(PACKAGE_TYPE "deb")
Expand Down
92 changes: 64 additions & 28 deletions compiler/compiler_source.cmake
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Copyright 2022-2024 Intel Corporation.
# Copyright 2022-2025 Intel Corporation.
#
# This software and the related documents are Intel copyrighted materials, and
# your use of them is governed by the express license under which they were
Expand All @@ -10,52 +10,88 @@
# or implied warranties, other than those that are expressly stated in
# the License.

if(TARGET npu_plugin_source)
if(TARGET npu_compiler_source)
return()
endif()

if(DEFINED ENV{TARGET_DISTRO})
set(TARGET_DISTRO $ENV{TARGET_DISTRO})
else()
set(TARGET_DISTRO ${CMAKE_SYSTEM_NAME})
endif()

include(ExternalProject)

# OpenVINO + NPU Plugin package options
set(OPENVINO_REVISION 0ebff040fd22daa37612a82fdf930ffce4ebb099)
set(VPUX_PLUGIN_REVISION 150e2025aaba8bcc0f0e3853a526ee2e1e2e32a7)
set(VPUX_PLUGIN_RELEASE npu_ud_2024_44_rc2)
set(OPENCV_REVISION 78195bc3dfe20b96e721ae8b32d0aa3491755e78)
set(OPENVINO_REPOSITORY https://github.com/openvinotoolkit/openvino.git)
set(OPENVINO_REVISION 99d7cd4bc4492b81a99bc41e2d2469da1a929491)
set(OPENCV_REVISION 3919f33e21fd0783f67901ad3429101f9b39c798)

# Directories
set(OPENVINO_PREFIX_DIR "${CMAKE_BINARY_DIR}/third_party/openvino")
set(OPENVINO_SOURCE_DIR "${OPENVINO_PREFIX_DIR}/src/openvino")
set(NPU_COMPILER_TAG npu_ud_2025_04_rc2)
set(NPU_COMPILER_REVISION 5fd0b93eed2f4a9b15e887cd22e1ed085b122170)
# Compiler might use different OpenVINO revision
set(NPU_COMPILER_OPENVINO_REVISION 99d7cd4bc4492b81a99bc41e2d2469da1a929491)

set(OPENVINO_SOURCE_DIR "${CMAKE_CURRENT_BINARY_DIR}/src/openvino")
file(MAKE_DIRECTORY ${OPENVINO_SOURCE_DIR})

set(NPU_PLUGIN_PREFIX_DIR "${CMAKE_BINARY_DIR}/third_party/npu_plugin")
set(NPU_PLUGIN_SOURCE_DIR "${NPU_PLUGIN_PREFIX_DIR}/src/npu_plugin")
file(MAKE_DIRECTORY ${NPU_PLUGIN_SOURCE_DIR})
list(APPEND DISABLE_GIT_LFS "filter.lfs.smudge=git-lfs smudge --skip -- %f")
list(APPEND DISABLE_GIT_LFS "filter.lfs.process=git-lfs filter-process --skip")

ExternalProject_Add(
openvino_source
GIT_REPOSITORY https://github.com/openvinotoolkit/openvino.git
GIT_REPOSITORY ${OPENVINO_REPOSITORY}
GIT_TAG ${OPENVINO_REVISION}
PREFIX ${OPENVINO_PREFIX_DIR}
GIT_CONFIG ${DISABLE_GIT_LFS}
SOURCE_DIR ${OPENVINO_SOURCE_DIR}
UPDATE_DISCONNECTED TRUE
PATCH_COMMAND ""
CONFIGURE_COMMAND ""
BUILD_COMMAND ""
INSTALL_COMMAND "")
INSTALL_COMMAND ""
# Only change the content of source dir in case revision or patch command change
UPDATE_DISCONNECTED TRUE)

set(NPU_COMPILER_SOURCE_DIR "${CMAKE_CURRENT_BINARY_DIR}/src/npu_compiler")
file(MAKE_DIRECTORY ${NPU_COMPILER_SOURCE_DIR})

if(NOT NPU_COMPILER_OPENVINO_REVISION EQUAL OPENVINO_REVISION)
set(NPU_COMPILER_OPENVINO_SOURCE_DIR ${CMAKE_CURRENT_BINARY_DIR}/src/npu_compiler_openvino)
file(MAKE_DIRECTORY ${NPU_COMPILER_OPENVINO_SOURCE_DIR})

set(NPU_COMPILER_BUILD_DEPENDS npu_compiler_openvino_source)

# Copy the local openvino_source and checkout for the compiler the required OpenVINO revision
ExternalProject_Add(
npu_compiler_openvino_source
DEPENDS openvino_source
GIT_REPOSITORY ${OPENVINO_SOURCE_DIR}
GIT_TAG ${NPU_COMPILER_OPENVINO_REVISION}
GIT_CONFIG ${DISABLE_GIT_LFS}
SOURCE_DIR ${NPU_COMPILER_OPENVINO_SOURCE_DIR}
PATCH_COMMAND ""
CONFIGURE_COMMAND ""
BUILD_COMMAND ""
INSTALL_COMMAND ""
# Only change the content of source dir in case revision or patch command change
UPDATE_DISCONNECTED TRUE)
else()
set(NPU_COMPILER_OPENVINO_SOURCE_DIR ${OPENVINO_SOURCE_DIR})
set(NPU_COMPILER_BUILD_DEPENDS openvino_source)
endif()

ExternalProject_Add(
npu_plugin_source
npu_compiler_source
GIT_REPOSITORY
https://github.com/openvinotoolkit/npu_compiler.git
GIT_TAG ${VPUX_PLUGIN_REVISION}
PREFIX ${NPU_PLUGIN_PREFIX_DIR}
SOURCE_DIR ${NPU_PLUGIN_SOURCE_DIR}
UPDATE_DISCONNECTED TRUE
https://github.com/openvinotoolkit/npu_plugin.git
GIT_TAG ${NPU_COMPILER_REVISION}
GIT_CONFIG ${DISABLE_GIT_LFS}
SOURCE_DIR ${NPU_COMPILER_SOURCE_DIR}
PATCH_COMMAND
git -C ${NPU_PLUGIN_SOURCE_DIR} lfs install &&
git -C ${NPU_PLUGIN_SOURCE_DIR} lfs pull &&
git -C ${NPU_PLUGIN_SOURCE_DIR}/thirdparty/vpucostmodel lfs install &&
git -C ${NPU_PLUGIN_SOURCE_DIR}/thirdparty/vpucostmodel lfs pull
git -C ${NPU_COMPILER_SOURCE_DIR} lfs install &&
git -C ${NPU_COMPILER_SOURCE_DIR} lfs pull &&
git -C ${NPU_COMPILER_SOURCE_DIR}/thirdparty/vpucostmodel lfs install &&
git -C ${NPU_COMPILER_SOURCE_DIR}/thirdparty/vpucostmodel lfs pull
CONFIGURE_COMMAND ""
BUILD_COMMAND ""
INSTALL_COMMAND "")
INSTALL_COMMAND ""
# Only change the content of source dir in case revision or patch command change
UPDATE_DISCONNECTED TRUE)
3 changes: 2 additions & 1 deletion compiler/include/npu_driver_compiler.h
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ extern "C" {
#endif

#define VCL_COMPILER_VERSION_MAJOR 6
#define VCL_COMPILER_VERSION_MINOR 1
#define VCL_COMPILER_VERSION_MINOR 3
#define VCL_PROFILING_VERSION_MAJOR 2
#define VCL_PROFILING_VERSION_MINOR 0

Expand Down Expand Up @@ -123,6 +123,7 @@ typedef enum __vcl_platform_t {
VCL_PLATFORM_VPU3700 = 0, ///< VPU3700
VCL_PLATFORM_VPU3720 = 1, ///< VPU3720
VCL_PLATFORM_VPU4000 = 2, ///< VPU4000

} vcl_platform_t;

///////////////////////////////////////////////////////////////////////////////
Expand Down
32 changes: 19 additions & 13 deletions compiler/npu_compiler.cmake
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Copyright 2022-2023 Intel Corporation.
# Copyright 2022-2024 Intel Corporation.
#
# This software and the related documents are Intel copyrighted materials, and
# your use of them is governed by the express license under which they were
Expand All @@ -11,17 +11,23 @@

add_library(npu_compiler INTERFACE)

if(ENABLE_NPU_COMPILER_BUILD)
include(npu_compiler_build.cmake)

add_dependencies(npu_compiler ${NPU_COMPILER_DEPENDENCY})
install(FILES ${NPU_COMPILER_LIBS}
TYPE LIB
COMPONENT driver-compiler-npu)
elseif(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/include/)
set(NPU_COMPILER_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/include)
else()
message(FATAL_ERROR "Missing NPU Driver Compiler headers in path ${CMAKE_CURRENT_SOURCE_DIR}/include/")
if(NOT NPU_COMPILER_PACKAGE_DIR)
if(ENABLE_NPU_COMPILER_BUILD)
include(npu_compiler_build.cmake)
else()
# TODO: Should be removed as driver should always be built with compiler
message(WARNING "No NPU compiler provided, fallback to only include local copy of compiler headers")
target_include_directories(npu_compiler INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}/include)
return()
endif()
endif()

target_include_directories(npu_compiler INTERFACE ${NPU_COMPILER_INCLUDE_DIR})
message(STATUS "NPU_COMPILER_PACKAGE_DIR: ${NPU_COMPILER_PACKAGE_DIR}")
target_include_directories(npu_compiler INTERFACE ${NPU_COMPILER_PACKAGE_DIR})

set(NPU_COMPILER_LIBS ${NPU_COMPILER_PACKAGE_DIR}/lib/libnpu_driver_compiler.so)
target_link_libraries(npu_compiler INTERFACE ${NPU_COMPILER_LIBS})

install(FILES ${NPU_COMPILER_LIBS}
TYPE LIB
COMPONENT driver-compiler-npu)
119 changes: 71 additions & 48 deletions compiler/npu_compiler_build.cmake
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Copyright 2022-2023 Intel Corporation.
# Copyright 2022-2025 Intel Corporation.
#
# This software and the related documents are Intel copyrighted materials, and
# your use of them is governed by the express license under which they were
Expand All @@ -15,65 +15,88 @@ include(compiler_source.cmake)
include(ProcessorCount)
ProcessorCount(PARALLEL_PROCESSES)

set(NPU_COMPILER_BINARY_DIR "${NPU_PLUGIN_PREFIX_DIR}/build-cid")
set(NPU_COMPILER_BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}/build_npu_compiler")
file(MAKE_DIRECTORY ${NPU_COMPILER_BINARY_DIR})

set(NPU_COMPILER_INCLUDE_DIR "${NPU_PLUGIN_SOURCE_DIR}/src/vpux_driver_compiler/include")
file(MAKE_DIRECTORY ${NPU_COMPILER_INCLUDE_DIR})

set(THREADING "TBB" CACHE STRING "Build NPU Compiler with specific THREADING option")

list(APPEND NPU_COMPILER_CMAKE_FLAGS -DCMAKE_TOOLCHAIN_FILE:FILEPATH=${CMAKE_TOOLCHAIN_FILE})
list(APPEND NPU_COMPILER_CMAKE_FLAGS -DCMAKE_MAKE_PROGRAM:FILEPATH=${CMAKE_MAKE_PROGRAM})
list(APPEND NPU_COMPILER_CMAKE_FLAGS -DBUILD_COMPILER_FOR_DRIVER=ON)
list(APPEND NPU_COMPILER_CMAKE_FLAGS -DBUILD_SHARED_LIBS=OFF)
list(APPEND NPU_COMPILER_CMAKE_FLAGS -DCMAKE_BUILD_TYPE=Release)
list(APPEND NPU_COMPILER_CMAKE_FLAGS -DENABLE_CLANG_FORMAT=OFF)
list(APPEND NPU_COMPILER_CMAKE_FLAGS -DENABLE_GAPI_PREPROCESSING=OFF)
list(APPEND NPU_COMPILER_CMAKE_FLAGS -DENABLE_HETERO=OFF)
list(APPEND NPU_COMPILER_CMAKE_FLAGS -DENABLE_INTEL_CPU=OFF)
list(APPEND NPU_COMPILER_CMAKE_FLAGS -DENABLE_INTEL_GNA=OFF)
list(APPEND NPU_COMPILER_CMAKE_FLAGS -DENABLE_INTEL_GPU=OFF)
list(APPEND NPU_COMPILER_CMAKE_FLAGS -DENABLE_IR_V7_READER=OFF)
list(APPEND NPU_COMPILER_CMAKE_FLAGS -DENABLE_MULTI=OFF)
list(APPEND NPU_COMPILER_CMAKE_FLAGS -DENABLE_OV_IR_FRONTEND=ON)
list(APPEND NPU_COMPILER_CMAKE_FLAGS -DENABLE_OV_ONNX_FRONTEND=OFF)
list(APPEND NPU_COMPILER_CMAKE_FLAGS -DENABLE_OV_PADDLE_FRONTEND=OFF)
list(APPEND NPU_COMPILER_CMAKE_FLAGS -DENABLE_OV_TF_FRONTEND=OFF)
list(APPEND NPU_COMPILER_CMAKE_FLAGS -DENABLE_OV_TF_LITE_FRONTEND=OFF)
list(APPEND NPU_COMPILER_CMAKE_FLAGS -DENABLE_PYTHON=OFF)
list(APPEND NPU_COMPILER_CMAKE_FLAGS -DENABLE_TEMPLATE=OFF)
list(APPEND NPU_COMPILER_CMAKE_FLAGS -DENABLE_TESTS=OFF)
list(APPEND NPU_COMPILER_CMAKE_FLAGS -DENABLE_WHEEL=OFF)
list(APPEND NPU_COMPILER_CMAKE_FLAGS -DENABLE_NCC_STYLE=OFF)
list(APPEND NPU_COMPILER_CMAKE_FLAGS -DTHREADING=${THREADING})
list(APPEND NPU_COMPILER_CMAKE_FLAGS -DOPENVINO_EXTRA_MODULES=${NPU_PLUGIN_SOURCE_DIR})
list(APPEND NPU_COMPILER_CMAKE_FLAGS -DOUTPUT_ROOT=${NPU_COMPILER_BINARY_DIR})

# TODO: Temporary WA for building LLVM from plugin source
list(APPEND NPU_COMPILER_CMAKE_FLAGS -DLLVM_ENABLE_ZLIB=OFF)
set(NPU_COMPILER_INSTALL_PREFIX ${CMAKE_CURRENT_BINARY_DIR}/npu_compiler)
set(NPU_COMPILER_PACKAGE_DIR ${NPU_COMPILER_INSTALL_PREFIX}/cid)

# TODO: Temporary WA for buidling NPU tools that tries to find gflags dependency in system
list(APPEND NPU_COMPILER_CMAKE_FLAGS -Dgflags_DIR=${CMAKE_CURRENT_SOURCE_DIR}/openvino_modules)
include(ExternalProject)

ExternalProject_Add(
npu_compiler_build
DOWNLOAD_COMMAND ""
DEPENDS npu_plugin_source openvino_source
PREFIX ${OPENVINO_PREFIX_DIR}
SOURCE_DIR ${OPENVINO_SOURCE_DIR}
DEPENDS npu_compiler_source ${NPU_COMPILER_BUILD_DEPENDS}
SOURCE_DIR ${NPU_COMPILER_OPENVINO_SOURCE_DIR}
BINARY_DIR ${NPU_COMPILER_BINARY_DIR}
CMAKE_ARGS ${NPU_COMPILER_CMAKE_FLAGS}
CMAKE_ARGS
-D CMAKE_BUILD_TYPE=Release
-D CMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE}
-D CMAKE_MAKE_PROGRAM=${CMAKE_MAKE_PROGRAM}
-D BUILD_COMPILER_FOR_DRIVER=ON
-D BUILD_SHARED_LIBS=OFF
# CLANG_FORMAT and NCC_STYLE is set to OFF to avoid LLVMDemangle doubled target issue
-D ENABLE_CLANG_FORMAT=OFF
-D ENABLE_NCC_STYLE=OFF
# Copied from "how_to_build_driver_compiler" document
-D ENABLE_AUTO=OFF
-D ENABLE_AUTO_BATCH=OFF
-D ENABLE_BLOB_DUMP=OFF
-D ENABLE_FUNCTIONAL_TESTS=OFF
-D ENABLE_HETERO=OFF
-D ENABLE_INTEL_CPU=OFF
-D ENABLE_INTEL_GPU=OFF
-D ENABLE_JS=OFF
-D ENABLE_MULTI=OFF
-D ENABLE_INTEL_NPU_PROTOPIPE=OFF
-D ENABLE_OV_IR_FRONTEND=ON
-D ENABLE_OV_JAX_FRONTEND=OFF
-D ENABLE_OV_ONNX_FRONTEND=OFF
-D ENABLE_OV_PADDLE_FRONTEND=OFF
-D ENABLE_OV_PYTORCH_FRONTEND=OFF
-D ENABLE_OV_TF_FRONTEND=OFF
-D ENABLE_OV_TF_LITE_FRONTEND=OFF
-D ENABLE_PROXY=OFF
-D ENABLE_SAMPLES=OFF
-D ENABLE_TBBBIND_2_5=OFF
-D ENABLE_TEMPLATE=OFF
-D ENABLE_TESTS=OFF
# WA in case libgflags is installed in system
-D gflags_DIR=${CMAKE_CURRENT_SOURCE_DIR}/openvino_modules
-D OPENVINO_EXTRA_MODULES=${NPU_COMPILER_SOURCE_DIR}
-D OUTPUT_ROOT=${NPU_COMPILER_BINARY_DIR}
-D THREADING=${THREADING}
BUILD_COMMAND
${CMAKE_COMMAND}
${CMAKE_COMMAND}
--build ${NPU_COMPILER_BINARY_DIR}
--target npu_driver_compiler
--config Release
--target compilerTest profilingTest vpuxCompilerL0Test loaderTest
--parallel ${PARALLEL_PROCESSES}
INSTALL_COMMAND
cp ${NPU_COMPILER_BINARY_DIR}/bin/intel64/Release/libnpu_driver_compiler.so
${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/
BUILD_BYPRODUCTS
${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/libnpu_driver_compiler.so)
${CMAKE_COMMAND}
--install ${NPU_COMPILER_BINARY_DIR}
--prefix ${NPU_COMPILER_INSTALL_PREFIX}
--component CiD
BYPRODUCTS
${NPU_COMPILER_PACKAGE_DIR}/lib/libnpu_driver_compiler.so
${NPU_COMPILER_PACKAGE_DIR}/vpux_elf/lib/Release/libnpu_elf.a
)

add_dependencies(npu_compiler npu_compiler_build)

# Extra command to prepare a standalone package with NPU compiler
set(NPU_COMPILER_PACKAGE_NAME "npu-drv-compiler-${TARGET_DISTRO}-${NPU_COMPILER_TAG}-${BUILD_NUMBER}")

add_custom_target(npu_compiler_package
COMMAND
tar -C ${NPU_COMPILER_INSTALL_PREFIX} -czf ${CMAKE_BINARY_DIR}/${NPU_COMPILER_PACKAGE_NAME}.tar.gz --transform='s,/cid,/npu_compiler,' ./cid/
DEPENDS npu_compiler_build
BYPRODUCTS ${CMAKE_BINARY_DIR}/${NPU_COMPILER_PACKAGE_NAME}.tar.gz)

set(NPU_COMPILER_DEPENDENCY npu_compiler_build)
list(APPEND NPU_COMPILER_LIBS ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/libnpu_driver_compiler.so)
install(
FILES ${CMAKE_BINARY_DIR}/${NPU_COMPILER_PACKAGE_NAME}.tar.gz
DESTINATION .
COMPONENT npu_compiler_package
EXCLUDE_FROM_ALL)
Loading

0 comments on commit bd414f6

Please sign in to comment.