1. A computerized method comprising: receiving, by a host processor from a host application executing on the host processor, a request to create a compute program corresponding to source code in the host application, the source code including source code for a first task in the host application; and creating, by the host processor, the compute program for execution on a compute device corresponding to a compute identifier selected by the host application from one or more compute identifiers received by the host application from the host processor in response to a previous request from the host application to the host processor, the previous request including a processing requirement specified by the host application for the first task to cause the host processor to identify compute devices that match the processing requirement for the first task and to return compute identifiers for matching compute devices to the host application, wherein the compute devices comprise at least one central processing unit (CPU) and at least one graphics processing unit (GPU) physically coupled to the host processor, and wherein creating the compute program comprises compiling a compute kernel containing executable code for the first task from the source code for the first task for execution on either a CPU or a GPU selected by the host application by including the corresponding compute identifier in the request.