Device Compute Dot Product Capability Extension#
Introduced in Level Zero version 1.16
API#
Enumerations
Structures
Extended Device Properties#
User may query support for compute capability support on the device using the compute dot product capability extension supported under device compute properties(ze_device_compute_properties_t).
Dot-product paths#
The extension exposes up to three independent dot-product / matrix-multiply paths on the device.
A path is advertised by one or more bits of dp_caps; the legal input and output data types for
that path are advertised by the corresponding *_input_types / *_output_types members.
A member value of 0 means “no supported data types for this path”; non-zero values are the
bitwise-OR of the supported data-type bits.
Path |
|
Member fields |
|---|---|---|
DP4A (non-systolic vector dot product) |
|
|
DPAS (systolic dot-product accumulate) |
|
|
BDPAS (block-scaled systolic dot-product) |
|
|
The DEVICE_SYSTOLIC_OUTPUT_MATRIX_ROWCOUNT_UPTO8 and DEVICE_SYSTOLIC_OUTPUT_MATRIX_ROWCOUNT_FIXED8 bits are
output-shape modifiers for the systolic path. They qualify the DPAS/BDPAS output row count, but do not, on their own,
advertise DPAS or BDPAS support — a driver must also set at least one of the DEVICE_SYSTOLIC_DPAS_* or
DEVICE_SYSTOLIC_BDPAS_* bits.
The dpv4_* members describe the modalities of DP4A instruction. The DEVICE_INPUT_DATA_SCALING_* bits only carry meaning when set in
bdpas_input_types.
The following pseudo-code demonstrates a sequence for obtaining extended information about the device compute dot product capability:
...
// Discover properties on device
//Driver handle ze_driver_handle_t Driverh obtained through previous call to zeInitDrivers
//Obtain Device handle ze_device_handle_t Deviceh
//zeDeviceGet(Driverh, 1, Deviceh);
ze_device_compute_properties_t devComputeProp{};
ze_device_compute_dotproduct_ext_properties_t* pDpDeviceCaps = allocate(sizeof(ze_device_compute_dotproduct_ext_properties_t));
pDpDeviceCaps.stype = ZE_STRUCTURE_TYPE_DEVICE_COMPUTE_DOTPRODUCT_EXT_PROPERTIES;
devComputeProp.stype = ZE_STRUCTURE_TYPE_DEVICE_COMPUTE_PROPERTIES;
devComputeProp.pNext = pDpDeviceCaps;
//obtain device extended compute properties
zeDeviceGetComputeProperties(Deviceh, &devComputeProp);
...