A computer implemented method comprising: selecting, by a host process executing on a first processing unit (101, 301) during runtime of an application (103, 303) running on the first processing unit, in response to a first API request, Application Programming Interface request, having one or more requirements from the application for a data processing task of the application, a second processing unit according to the requirement; loading (507, 607, 609) by the host process during the runtime, in response to a second API request received from the application, one or more executables for the data processing task that are compatible with the second processing unit, wherein the loading comprises selecting the one or more executables from the one or more existing executables for the data processing task, the one or more existing executables including description data indicating a version of a target processing unit, the selected executable being associated with a latest version among the existing executables for the second processing unit based on the description data, and compiling a source to generate at least one of the one or more executables that is compatible with the second processing unit when comparing information of the second processing unit with description data of the one or more existing executables indicates that none of the one or more existing executables are 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 execution in the second processing unit. selecting, by a host process executing on a first processing unit (101, 301) during runtime of an application (103, 303) running on the first processing unit, in response to a first API request, Application Programming Interface request, having one or more requirements from the application for a data processing task of the application, a second processing unit according to the requirement; loading (507, 607, 609) by the host process during the runtime, in response to a second API request received from the application, one or more executables for the data processing task that are compatible with the second processing unit, wherein the loading comprises selecting the one or more executables from the one or more existing executables for the data processing task, the one or more existing executables including description data indicating a version of a target processing unit, the selected executable being associated with a latest version among the existing executables for the second processing unit based on the description data, and compiling a source to generate at least one of the one or more executables that is compatible with the second processing unit when comparing information of the second processing unit with description data of the one or more existing executables indicates that none of the one or more existing executables are 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 execution in the second processing unit.