Is there a way to get OpenCL to give me a list of all unique physical devices which have an OpenCL implementation available? I know how to iterate through the platform/device list but for instance, in my case, I have one Intel-provided platform which gives me an efficient device implementation for my CPU, and the APP platform which provides a fast implementation for my GPU but a terrible implementation for my CPU.
Is there a way to work out that the two CPU devices are in fact the same physical device, so that I can choose the most efficient one and work with that, instead of using both and having them contend with each other for compute time on the single physical device?
I have looked at CL_DEVICE_VENDOR_ID
and CL_DEVICE_NAME
but they don't solve my issues, the CL_DEVICE_NAME
will be the same for two separate physical devices of the same model (dual GPU's) and CL_DEVICE_VENDOR_ID
gives me a different ID for my CPU depending on the platform.
An ideal solution would be some sort of unique physical device ID, but I'd be happy with manually altering the OpenCL configuration to rearrange the devices myself (if such a thing is possible).