I’d like to request clarification on the spec. I have posted to AMD’s Stream SDK forums as well here: http://forums.amd.com/devforum/messagev … did=145374
What is the intended purpose of CL_DEVICE_VENDOR_ID? Is it to provide a unique ID to the device, as assigned by the vendor (the PCIe ID makes me think this), or is it to provide a unique ID to the vendor of the device? There seems to be no way provided by the specification to identify a device uniquely by independent processes.
Nobody has replied for a while so I’ll give my interpretation of the spec.
CL_DEVICE_VENDOR_ID identifies the vendor of the device. It does not uniquely identify the device itself, only what company built it.
There seems to be no way provided by the specification to identify a device uniquely by independent processes
That’s my understanding as well. Do you need to identify particular devices? Do you have a use case?
Consider independent processes that are attempting to load-balance in a multi-device configuration. There is no order of devices guaranteed so far as I know, so it is possible that multiple processes will attempt to share a device, when in reality they want to manage separate devices. Consider three processes, and devices A, B, C. It is possible that device A appears as device id 0,1,2 to processes 0,1,2 respectively, and in this scenario it is actually possible that all three processes manage a single device, rather than separate ones (if the call to get devices is non-deterministic). So load-balancing will fail here.
Thanks. That’s interesting. We don’t have a way to solve that nicely today :-/