When I run a basic OpenCL hello world on my Intel Core i7-3630QM CPU containing Intel HD Graphics 4000, I query and select the Intel platform, then query the devices and select the first device, and proceed. I just noticed this for the first time, but on some runs I get the CPU, and on others I get the GPU. Is that to be expected? What are the rules regarding this behavior, as I don't see it discussed in the OpenCL specification. I guess that devices may not be consistently ordered between application executions (as I'm witnessing), but I'm concerned that within an application if the order could change unexpectantly. Would someone please clarify this for me?