NPU Device Properties Extension

NPU Device Properties Extension#

Introduced in Level Zero version 1.18

API#

NPU Device Properties#

ze_device_npu_properties_ext_t exposes NPU-native device properties with no clean analogue in the GPU-oriented ze_device_properties_t base struct. It is returned via the pNext member of ze_device_properties_t from zeDeviceGetProperties, and applies only when ze_device_properties_t.type is ZE_DEVICE_TYPE_VPU.

The base ze_device_properties_t fields remain populated for backward compatibility. New consumers should prefer the NPU-native fields in this extension.

int8x8MacsPerTile reports MACs per tile at INT8×INT8 baseline precision. Throughput at other precisions: 2× for INT8×INT4, 0.5× for FP16×FP16, 0.5× for INT16×INT8, 1× for INT16×INT4.

timestampFreqHz gives the device timestamp counter frequency in Hz, used to convert raw device tick counts from zeDeviceGetGlobalTimestamps and zeCommandListAppendWriteGlobalTimestamp into time durations.

compilerVersion is packed with ZE_MAKE_VERSION. Use ZE_MAJOR_VERSION and ZE_MINOR_VERSION to extract its components.

The following pseudo-code demonstrates querying NPU device properties:

ze_device_npu_properties_ext_t npuProps = {};
npuProps.stype = ZE_STRUCTURE_TYPE_DEVICE_NPU_PROPERTIES_EXT;
npuProps.pNext = nullptr;

ze_device_properties_t devProps = {};
devProps.stype = ZE_STRUCTURE_TYPE_DEVICE_PROPERTIES;
devProps.pNext = &npuProps;

zeDeviceGetProperties(hDevice, &devProps);

// NPU-native fields are now populated in npuProps