1. A computer implemented method comprising: loading, by a host process executing on a first processing unit, in response to a second API (application program interface) request received from an application during runtime of the application on the first processing unit, one or more executables for a data processing task of the application that are compatible with a second processing unit identified by a compute device identifier specified by the application in the second API request, the compute device identifier generated on the first processing unit for use by the application and associated with processing units that match one or more requirements previously specified by the application through a first API request during the runtime, wherein the loading compiles a source to generate at least one of the one or more executables that is compatible with the second processing unit when comparing description data and information of the second processing unit with description data for the one or more executables indicates the at least one of the one or more executables is not compatible with the second processing unit; and selecting, by the host process in response to a third API request received from the application during the runtime, one of the one or more executables for the second processing unit.