1. A computer implemented method comprising: receiving, by a host processor via a platform layer API (application program interface) during runtime of an application program on the host processor, a request from the application program for one or more processing devices to be used to execute one or more threads of the application program, the request having arguments containing data representing a processing capability requirement of the application program for the one or more processing devices; generating, by the host processor in response to the request, one or more compute identifiers that identify the processing devices having device capabilities matching the processing capability requirement, at least one of the one or more compute identifiers specifying one or more physical compute devices from a plurality of physical compute devices, the plurality of physical compute devices including at least one central processing unit (CPU) and at least one graphics processing unit (GPU) physically coupled to the host processor; and returning, by the host processor via the platform layer API, the one or more compute identifiers to the application program, wherein the application program subsequently selects at least one of the one or more compute identifiers to cause either a CPU or a GPU to execute the one or more threads of the application program instead of the host processor.