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);