1. A computer implemented method comprising: receiving, from a host application executing on a host processor, a request to identify any compute device that matches a processing requirement for a task corresponding to source code in the host application; sending, to the host application, a compute identifier for each compute device that matches the processing requirement; receiving, from the host application, a request specifying a compute identifier selected by the host application; and generating, by the host processor, a context for the compute device that corresponds to the selected compute identifier and defines an execution queue for the selected compute device.