Hello everybody !
In the stardards, the following is said concerning the return value of clCreateSubDevices, when applied to my HD5850 graphic card.
"CL_INVALID_VALUE if values specified in properties
are not valid or if values specified in properties
are valid but not supported by the device. "
This is what my program returns when I try to partition my HD5850.
I tried several partition schemes but all ended up on that same return value... Creating a list with one device of 10 compute unit does not work eit
Replacing in my code CL_DEVICE_TYPE_GPU by CL_DEVICE_TYPE_CPU, I can partition my CPU accross all the possible schemes.
Therefore, I was wondering if the HD5850 was partitionable or if i was more likely to have a buf in my implementation ( which would be surprising, considering it works fine for the CPU.)
Thanks !
Solved! Go to Solution.
As far as I know the device fission extension is not implemented for any GPUs at this time. This is currently only available for CPUs and IBM cell BE. For a particular device you can query whether the device_fission extension is supported with something like this (from http://developer.amd.com/zones/OpenCLZone/Events/assets/devicefissionwebinar.pdf)
if (devices[0].getInfo<CL_DEVICE_EXTENSIONS>().find("cl_ext_device_fission") == std::string::npos) {
// handle case when fission not supported, e.g. fall back to sequential version
}
This uses the C++ bindings but you can do a very similar test using the plain C bindings.
Cheers,
Dominic
In AMD APP2.7, there is an example called DeviceFission, in case you haven't tried it...
As far as I know the device fission extension is not implemented for any GPUs at this time. This is currently only available for CPUs and IBM cell BE. For a particular device you can query whether the device_fission extension is supported with something like this (from http://developer.amd.com/zones/OpenCLZone/Events/assets/devicefissionwebinar.pdf)
if (devices[0].getInfo<CL_DEVICE_EXTENSIONS>().find("cl_ext_device_fission") == std::string::npos) {
// handle case when fission not supported, e.g. fall back to sequential version
}
This uses the C++ bindings but you can do a very similar test using the plain C bindings.
Cheers,
Dominic
This was indeed a support problem. The Fission example in the SDK performs Fission on the CPU only. And indeed fission does not appear in the extensions of my device.
Thanks