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 device, wherein the instructions for the platform layer 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, and an interface for the host application to request creation of a context for a compute device selected by the host program from compute identifiers returned by the platform layers in response to the identification request, and the instructions for the runtime layer provide an interface for the host application to request creating a kernel to execute the task on the selected compute device, and an interface for the host application to request the kernel be queued for execution on the selected compute device.