OpenCL clGetDeviceInfo
函数在使用CL_DEVICE_VENDOR_ID
调用时返回设备供应商标识符。对于CL_DEVICE_VENDOR_ID
,OpenCL spec状态:“唯一的设备供应商标识符。唯一设备标识符的示例可以是PCIe ID”。
在这个系统上,Intel
和AMD
GPU都返回其PCIe ID(分别为0x8086和0x1002。因此,问题是:所有 OpenCL设备返回他们的PCIe ID是“唯一的设备供应商标识符”?如果是这样,PCIe供应商ID是否在某个头文件中列出?
答案 0 :(得分:1)
根据标准,不能保证它是PCIe设备ID,因此我不会指望它。我希望它来自硬件供应商的实现,但不是来自像PoCL这样的开源实现。即使目前所有的实现都没有,下一个实现也可能没有,并且您的代码将不再可移植。
在Linux环境中,您可以使用lspci
和lspci -n
查询计算机的设备,后者只显示ID而不是名称。根据联机帮助页/usr/share/hwdata/pci.ids
,数据似乎来自此文件。
希望有所帮助。
答案 1 :(得分:1)
所有OpenCL设备都返回其PCIe ID
答案是否定的。在x86上非常容易,你几乎可以保证拥有PCI总线,只有3个可能的供应商;但是在ARM世界中,很多(大多数?)根本没有PCI总线,并且没有官方的方式来获得任何类型的供应商ID(至少是AFAIK)。