PCI Properties Extension¶
API¶
Functions
Enumerations
Structures
PCI Properties¶
Accelerator devices connected to the host CPU over a PCI root complex can be located in the PCI switch fabric using a bus:device:function (BDF) address. This is useful, e.g., to determine which PCI devices are located close to each other in the PCI switch fabric. The ze_pci_address_ext_t struct returned via ze_pci_ext_properties_t by the call to zeDevicePciGetPropertiesExt contains the BDF address of the device.
The choice of the optimal algorithm to use for a given computation may be dependent on the access speed, i.e., bandwidth at which data can be transferred over PCI to the device. The ze_pci_speed_ext_t struct returned via ze_pci_ext_properties_t by the call to zeDevicePciGetPropertiesExt contains the theoretical PCI BW for accessing the device.
The following psuedo-code demonstrates a sequence for obtaining the BDF address & PCI BW of a device:
...
// Create a PCI address struct
{x}_pci_address_ext_t devAddr = {
0, // domain
0, // bus
0, // device
0 // function
};
// Create a PCI speed struct
ze_pci_speed_ext_t devSpeed = {
0, // gen
0, // width
0 // maxBandwidth
};
// Create a PCI Properties struct
ze_pci_ext_properties_t devPCIProps = {
ZE_STRUCTURE_TYPE_PCI_EXT_PROPERTIES,
nullptr,
devAddr,
devSpeed
};
// Get the PCI Address & Speed
ze_result_t result = zeDevicePciGetPropertiesExt(dev, &devPCIProps);