intel-npu
=========

User-space stack for the Intel Neural Processing Unit (NPU) integrated in
Core Ultra (Meteor Lake / Arrow Lake / Lunar Lake / Panther Lake / Wildcat
Lake) processors.

This single package combines two upstream projects:

  * oneapi-src/level-zero  v1.27.0 -> libze_loader.so (oneAPI Level Zero loader)
  * intel/linux-npu-driver v1.32.1 -> libze_intel_npu.so (NPU User-Mode Driver)
                                      libnpu_driver_compiler.so (NPU compiler)

The kernel-side driver (intel_vpu) and firmware (intel/vpu/*.bin) are NOT
shipped here -- they are already part of the kernel and kernel-firmware
packages on NimbleX.

Build strategy
--------------

  1. level-zero is built from source with cmake (small, no heavy deps).
  2. linux-npu-driver is repackaged from Intel's official Ubuntu 24.04
     binary release (.deb files inside the upstream tarball). Building
     the NPU compiler from source requires a full OpenVINO tree (multi-GB,
     long build) so we use Intel's pre-built libnpu_driver_compiler.so,
     which is the same approach OpenVINO/Ubuntu users get via apt.

After installing, verify with:

    ls /dev/accel/accel0
    ldconfig -p | grep -E 'libze_loader|libze_intel_npu|libnpu_driver_compiler'

To use the NPU, your user must be in the 'render' group:

    gpasswd -a <user> render

Notes
-----

  * On Lunar Lake the NPU sits behind the same DMAR as the integrated GPU,
    so this driver is currently usable only when the kernel is booted with
    intel_iommu=off (or intel_iommu=on iommu=pt). Bug is in drm/xe and
    iommu/intel paths, not in this package.

  * For an actual ML frontend, install OpenVINO (>= 2026.0) and select
    the 'NPU' device.
