1. A non-transitory computer readable storage medium having stored thereon executable instructions for a platform layer and a runtime layer for a host processor coupled to at least one compute devices comprising at least one central processing unit (CPU) and at least one graphics processing unit (GPU), the instructions comprising: instructions to cause the platform layer to provide an interface for an application executing on the host processor to request identification of any compute devices that meet processing requirements for a task corresponding to source code in the host application, identify at least one of the at least one CPU or the at least one GPU of the plurality of compute devices in response to the identification request from the host application by evaluating processing capabilities of the at least one CPU and the at least one GPU, and provide an interface for the host application to request creation of a context for either a CPU or GPU selected by the host application from the compute identifiers for the identified compute devices; and instructions to cause the runtime layer to provide an interface for the host application to request creation of a kernel to execute the task on the selected compute device, and provide an interface for the host application to request the kernel be executed on the selected CPU or GPU.