From dd53358fd8e66db247fc2d2026ee29361d2adbee Mon Sep 17 00:00:00 2001 From: "Schulfer, Magdalena" Date: Tue, 30 Sep 2025 14:32:20 +0200 Subject: [PATCH 1/8] Update Level Zero to v1.24.2 Signed-off-by: Schulfer, Magdalena --- third_party/level-zero | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/third_party/level-zero b/third_party/level-zero index e3b6efd..ff8c99d 160000 --- a/third_party/level-zero +++ b/third_party/level-zero @@ -1 +1 @@ -Subproject commit e3b6efdd91d67bb03024b266094afabd39e213bf +Subproject commit ff8c99d4abda00fba6d92548a9cb2f721764d9d0 From 138aba14ddbc7d515643ba138afeac7822169dee Mon Sep 17 00:00:00 2001 From: "Schulfer, Magdalena" Date: Tue, 30 Sep 2025 14:35:20 +0200 Subject: [PATCH 2/8] Update vpux_elf submodule to ad07093 Signed-off-by: Schulfer, Magdalena --- third_party/vpux_elf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/third_party/vpux_elf b/third_party/vpux_elf index 4b0a4a0..ad07093 160000 --- a/third_party/vpux_elf +++ b/third_party/vpux_elf @@ -1 +1 @@ -Subproject commit 4b0a4a06ae09c0c3a973f8f18761c549ec2309eb +Subproject commit ad0709314e78449da87a6807665a615d469bac76 From ae4ad3fe52c364cc8d051a5da84115af264911da Mon Sep 17 00:00:00 2001 From: "Schulfer, Magdalena" Date: Tue, 30 Sep 2025 15:18:09 +0200 Subject: [PATCH 3/8] Compiler snapshot for npu-1.24.0 drop Signed-off-by: Schulfer, Magdalena --- compiler/CMakeLists.txt | 12 +- compiler/compiler_source.cmake | 28 ++-- compiler/npu_compiler.cmake | 11 +- compiler/npu_compiler_build.cmake | 127 +++++++++++------- compiler/openvino.cmake | 2 - compiler/openvino_build.cmake | 12 +- compiler/openvino_modules/gflags-config.cmake | 12 +- 7 files changed, 96 insertions(+), 108 deletions(-) diff --git a/compiler/CMakeLists.txt b/compiler/CMakeLists.txt index 639a87a..1311c73 100644 --- a/compiler/CMakeLists.txt +++ b/compiler/CMakeLists.txt @@ -1,14 +1,6 @@ -# Copyright 2022-2024 Intel Corporation. +# Copyright (C) 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 -# provided to you ("License"). Unless the License provides otherwise, you may -# not use, modify, copy, publish, distribute, disclose or transmit this -# software or the related documents without Intel's prior written permission. -# -# This software and the related documents are provided as is, with no express -# or implied warranties, other than those that are expressly stated in -# the License. +# SPDX-License-Identifier: MIT include(openvino.cmake) include(npu_compiler.cmake) diff --git a/compiler/compiler_source.cmake b/compiler/compiler_source.cmake index 109a9be..966f39b 100644 --- a/compiler/compiler_source.cmake +++ b/compiler/compiler_source.cmake @@ -1,14 +1,6 @@ -# Copyright 2022-2025 Intel Corporation. +# Copyright (C) 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 -# provided to you ("License"). Unless the License provides otherwise, you may -# not use, modify, copy, publish, distribute, disclose or transmit this -# software or the related documents without Intel's prior written permission. -# -# This software and the related documents are provided as is, with no express -# or implied warranties, other than those that are expressly stated in -# the License. +# SPDX-License-Identifier: MIT if(TARGET npu_compiler_source) return() @@ -23,16 +15,16 @@ endif() include(ExternalProject) set(OPENVINO_REPOSITORY https://github.com/openvinotoolkit/openvino.git) -set(OPENVINO_REVISION c01cd93e24d1cd78bfbb401eed51c08fb93e0816) -set(OPENCV_REVISION 4d6d6fb18fb859f176e5ce2ad3295097a42cd8af) -set(GENAI_REVISION 01f0fe1eded5934871fef866ed217a60fa2c6049) -set(ONNXRUNTIME_TAG microsoft:9001123f6813409bce2d8ec24888ac73e348c26e) -set(ONNXRUNTIME_REVISION 9001123f6813409bce2d8ec24888ac73e348c26e) +set(OPENVINO_REVISION 44526285f241251e9543276572676365fbe542a4) +set(OPENCV_REVISION 252403bbf2fc560007c2c9057db5a9a151e99dd7) +set(GENAI_REVISION 3c0e2d3e7e13fa5e1dd5ea9ef1df59ce9fa852b5) +set(ONNXRUNTIME_TAG microsoft:7a919c693692d50f7c222660b76fb5b0c9926738) +set(ONNXRUNTIME_REVISION 7a919c693692d50f7c222660b76fb5b0c9926738) -set(NPU_COMPILER_TAG npu_ud_2025_32_rc1) -set(NPU_COMPILER_REVISION df25c7815507db20f903ce585f3976ff927890d6) +set(NPU_COMPILER_TAG npu_ud_2025_38_rc1) +set(NPU_COMPILER_REVISION 5aa47b4f67f9eec535316adf449a6aca58c635b2) # Compiler might use different OpenVINO revision -set(NPU_COMPILER_OPENVINO_REVISION d97acfdce00ea5229e4c2d0ab03256ce0dff0a68) +set(NPU_COMPILER_OPENVINO_REVISION 7ced823330831da23d1985ee27e32b96ebfcf110) set(OPENVINO_SOURCE_DIR "${CMAKE_CURRENT_BINARY_DIR}/src/openvino") file(MAKE_DIRECTORY ${OPENVINO_SOURCE_DIR}) diff --git a/compiler/npu_compiler.cmake b/compiler/npu_compiler.cmake index d1f98d6..bbcf381 100644 --- a/compiler/npu_compiler.cmake +++ b/compiler/npu_compiler.cmake @@ -1,13 +1,6 @@ -# Copyright 2022-2025 Intel Corporation. +# Copyright (C) 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 -# provided to you ("License"). Unless the License provides otherwise, you may -# not use, modify, copy, publish, distribute, disclose or transmit this software -# or the related documents without Intel's prior written permission. -# -# This software and the related documents are provided as is, with no express or -# implied warranties, other than those that are expressly stated in the License. +# SPDX-License-Identifier: MIT add_library(npu_compiler INTERFACE) diff --git a/compiler/npu_compiler_build.cmake b/compiler/npu_compiler_build.cmake index 787838c..9904791 100644 --- a/compiler/npu_compiler_build.cmake +++ b/compiler/npu_compiler_build.cmake @@ -1,14 +1,6 @@ -# Copyright 2022-2025 Intel Corporation. +# Copyright (C) 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 -# provided to you ("License"). Unless the License provides otherwise, you may -# not use, modify, copy, publish, distribute, disclose or transmit this -# software or the related documents without Intel's prior written permission. -# -# This software and the related documents are provided as is, with no express -# or implied warranties, other than those that are expressly stated in -# the License. +# SPDX-License-Identifier: MIT include(compiler_source.cmake) @@ -25,54 +17,91 @@ set(NPU_COMPILER_PACKAGE_DIR ${NPU_COMPILER_INSTALL_PREFIX}/cid) include(ExternalProject) +list(APPEND NPU_COMPILER_CMAKE_ARGS "-D CMAKE_BUILD_TYPE=Release") +list(APPEND NPU_COMPILER_CMAKE_ARGS "-D CMAKE_MAKE_PROGRAM=${CMAKE_MAKE_PROGRAM}") +list(APPEND NPU_COMPILER_CMAKE_ARGS "-D BUILD_COMPILER_FOR_DRIVER=ON") +list(APPEND NPU_COMPILER_CMAKE_ARGS "-D BUILD_SHARED_LIBS=OFF") +# CLANG_FORMAT and NCC_STYLE is set to OFF to avoid LLVMDemangle doubled target issue +list(APPEND NPU_COMPILER_CMAKE_ARGS "-D ENABLE_CLANG_FORMAT=OFF") +list(APPEND NPU_COMPILER_CMAKE_ARGS "-D ENABLE_CLANG_TIDY=OFF") +list(APPEND NPU_COMPILER_CMAKE_ARGS "-D ENABLE_NCC_STYLE=OFF") +# Copied from "how_to_build_driver_compiler" document +list(APPEND NPU_COMPILER_CMAKE_ARGS "-D ENABLE_AUTO=OFF") +list(APPEND NPU_COMPILER_CMAKE_ARGS "-D ENABLE_AUTO_BATCH=OFF") +list(APPEND NPU_COMPILER_CMAKE_ARGS "-D ENABLE_BLOB_DUMP=OFF") +list(APPEND NPU_COMPILER_CMAKE_ARGS "-D ENABLE_FUNCTIONAL_TESTS=OFF") +list(APPEND NPU_COMPILER_CMAKE_ARGS "-D ENABLE_HETERO=OFF") +list(APPEND NPU_COMPILER_CMAKE_ARGS "-D ENABLE_INTEL_CPU=OFF") +list(APPEND NPU_COMPILER_CMAKE_ARGS "-D ENABLE_INTEL_GPU=OFF") +list(APPEND NPU_COMPILER_CMAKE_ARGS "-D ENABLE_JS=OFF") +list(APPEND NPU_COMPILER_CMAKE_ARGS "-D ENABLE_MULTI=OFF") +list(APPEND NPU_COMPILER_CMAKE_ARGS "-D ENABLE_INTEL_NPU=ON") +list(APPEND NPU_COMPILER_CMAKE_ARGS "-D ENABLE_INTEL_NPU_INTERNAL=OFF") +list(APPEND NPU_COMPILER_CMAKE_ARGS "-D ENABLE_INTEL_NPU_PROTOPIPE=OFF") +list(APPEND NPU_COMPILER_CMAKE_ARGS "-D ENABLE_OV_IR_FRONTEND=ON") +list(APPEND NPU_COMPILER_CMAKE_ARGS "-D ENABLE_OV_JAX_FRONTEND=OFF") +list(APPEND NPU_COMPILER_CMAKE_ARGS "-D ENABLE_OV_ONNX_FRONTEND=OFF") +list(APPEND NPU_COMPILER_CMAKE_ARGS "-D ENABLE_OV_PADDLE_FRONTEND=OFF") +list(APPEND NPU_COMPILER_CMAKE_ARGS "-D ENABLE_OV_PYTORCH_FRONTEND=OFF") +list(APPEND NPU_COMPILER_CMAKE_ARGS "-D ENABLE_OV_TF_FRONTEND=OFF") +list(APPEND NPU_COMPILER_CMAKE_ARGS "-D ENABLE_OV_TF_LITE_FRONTEND=OFF") +list(APPEND NPU_COMPILER_CMAKE_ARGS "-D ENABLE_PROXY=OFF") +list(APPEND NPU_COMPILER_CMAKE_ARGS "-D ENABLE_SAMPLES=OFF") +list(APPEND NPU_COMPILER_CMAKE_ARGS "-D ENABLE_TBBBIND_2_5=OFF") +list(APPEND NPU_COMPILER_CMAKE_ARGS "-D ENABLE_TEMPLATE=OFF") +list(APPEND NPU_COMPILER_CMAKE_ARGS "-D ENABLE_TESTS=OFF") +# WA in case libgflags is installed in system +list(APPEND NPU_COMPILER_CMAKE_ARGS "-D gflags_DIR=${CMAKE_CURRENT_SOURCE_DIR}/openvino_modules") +list(APPEND NPU_COMPILER_CMAKE_ARGS "-D OPENVINO_EXTRA_MODULES=${NPU_COMPILER_SOURCE_DIR}") +list(APPEND NPU_COMPILER_CMAKE_ARGS "-D OUTPUT_ROOT=${NPU_COMPILER_BINARY_DIR}") +list(APPEND NPU_COMPILER_CMAKE_ARGS "-D THREADING=${THREADING}") + +if (ANDROID) + # First build native tools required for NPU compiler + set(NPU_COMPILER_NATIVE_TOOLS_BUILD npu_compiler_native_tools_build) + set(NPU_COMPILER_NATIVE_TOOLS_BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}/build_npu_compiler_native_tools) + + ExternalProject_Add( + ${NPU_COMPILER_NATIVE_TOOLS_BUILD} + DOWNLOAD_COMMAND "" + DEPENDS npu_compiler_source ${NPU_COMPILER_BUILD_DEPENDS} + SOURCE_DIR ${NPU_COMPILER_OPENVINO_SOURCE_DIR} + BINARY_DIR ${NPU_COMPILER_NATIVE_TOOLS_BINARY_DIR} + CMAKE_ARGS + ${NPU_COMPILER_CMAKE_ARGS} + BUILD_COMMAND + ${CMAKE_COMMAND} + --build ${NPU_COMPILER_NATIVE_TOOLS_BINARY_DIR} + --target npureg-tblgen mlir-headers mlir-generic-headers mlir-linalg-ods-yaml-gen flatc + --parallel ${PARALLEL_PROCESSES} + INSTALL_COMMAND + mkdir -p ${NPU_COMPILER_BINARY_DIR}/build-modules/npu_compiler/thirdparty/llvm-project/llvm/NATIVE && + cp -r ${NPU_COMPILER_NATIVE_TOOLS_BINARY_DIR}/build-modules/npu_compiler/thirdparty/llvm-project/llvm/bin ${NPU_COMPILER_BINARY_DIR}/build-modules/npu_compiler/thirdparty/llvm-project/llvm/NATIVE/ + BYPRODUCTS + ${NPU_COMPILER_BINARY_DIR}/bin/intel64/Release/flatc + ${NPU_COMPILER_BINARY_DIR}/bin/intel64/Release/npureg-tblgen + ) + + # Android specific settings + list(APPEND NPU_COMPILER_CMAKE_ARGS "-D ANDROID_ABI=${ANDROID_ABI}") + list(APPEND NPU_COMPILER_CMAKE_ARGS "-D ANDROID_PLATFORM=${ANDROID_PLATFORM}") + list(APPEND NPU_COMPILER_CMAKE_ARGS "-D ANDROID_STL=${ANDROID_STL}") + list(APPEND NPU_COMPILER_CMAKE_ARGS "-D CMAKE_CXX_FLAGS_INIT='-frtti'") +endif() + +list(APPEND NPU_COMPILER_CMAKE_ARGS "-D CMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE}") + ExternalProject_Add( npu_compiler_build DOWNLOAD_COMMAND "" - DEPENDS npu_compiler_source ${NPU_COMPILER_BUILD_DEPENDS} + DEPENDS npu_compiler_source ${NPU_COMPILER_BUILD_DEPENDS} ${NPU_COMPILER_NATIVE_TOOLS_BUILD} SOURCE_DIR ${NPU_COMPILER_OPENVINO_SOURCE_DIR} BINARY_DIR ${NPU_COMPILER_BINARY_DIR} 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_CLANG_TIDY=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} + ${NPU_COMPILER_CMAKE_ARGS} BUILD_COMMAND ${CMAKE_COMMAND} --build ${NPU_COMPILER_BINARY_DIR} - --config Release --target compilerTest profilingTest vpuxCompilerL0Test loaderTest --parallel ${PARALLEL_PROCESSES} INSTALL_COMMAND diff --git a/compiler/openvino.cmake b/compiler/openvino.cmake index 6427783..bf75f09 100644 --- a/compiler/openvino.cmake +++ b/compiler/openvino.cmake @@ -1,8 +1,6 @@ -# # Copyright (C) 2024-2025 Intel Corporation # # SPDX-License-Identifier: MIT -# if (ENABLE_OPENVINO_PACKAGE) include(openvino_build.cmake) diff --git a/compiler/openvino_build.cmake b/compiler/openvino_build.cmake index 6bacd5e..aa29168 100644 --- a/compiler/openvino_build.cmake +++ b/compiler/openvino_build.cmake @@ -1,14 +1,6 @@ -# Copyright 2022-2025 Intel Corporation. +# Copyright (C) 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 -# provided to you ("License"). Unless the License provides otherwise, you may -# not use, modify, copy, publish, distribute, disclose or transmit this -# software or the related documents without Intel's prior written permission. -# -# This software and the related documents are provided as is, with no express -# or implied warranties, other than those that are expressly stated in -# the License. +# SPDX-License-Identifier: MIT if(NOT ENABLE_OPENVINO_PACKAGE) return() diff --git a/compiler/openvino_modules/gflags-config.cmake b/compiler/openvino_modules/gflags-config.cmake index 4920e0e..e9e20a4 100644 --- a/compiler/openvino_modules/gflags-config.cmake +++ b/compiler/openvino_modules/gflags-config.cmake @@ -1,13 +1,5 @@ -# Copyright 2022-2023 Intel Corporation. +# Copyright (C) 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 -# provided to you ("License"). Unless the License provides otherwise, you may -# not use, modify, copy, publish, distribute, disclose or transmit this -# software or the related documents without Intel's prior written permission. -# -# This software and the related documents are provided as is, with no express -# or implied warranties, other than those that are expressly stated in -# the License. +# SPDX-License-Identifier: MIT message(WARNING "Ignoring system gflags") From a45039dff2ffb0a06308362143b16b7dae97fe66 Mon Sep 17 00:00:00 2001 From: "Schulfer, Magdalena" Date: Tue, 30 Sep 2025 16:18:02 +0200 Subject: [PATCH 4/8] Firmware snapshot for npu-1.24.0 drop Signed-off-by: Schulfer, Magdalena --- firmware/bin/vpu_37xx_v1.bin | Bin 2432060 -> 2432248 bytes firmware/bin/vpu_40xx_v1.bin | Bin 1284376 -> 1282776 bytes firmware/include/api/vpu_jsm_api.h | 12 ++++-- firmware/include/api/vpu_nce_hw_40xx.h | 4 +- firmware/include/api/vpu_nnrt_api_40xx.h | 47 ++++++++++++++++++++--- firmware/include/api/vpu_nnrt_common.h | 3 +- firmware/include/api/vpu_nnrt_wlm.h | 2 +- 7 files changed, 56 insertions(+), 12 deletions(-) diff --git a/firmware/bin/vpu_37xx_v1.bin b/firmware/bin/vpu_37xx_v1.bin index 65a297f6295e5b9893e7905270d2032ea6eec414..b67f9844efe2767a6182f99a6c19756ec48612d5 100644 GIT binary patch delta 476811 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