1. A computer implemented method comprising: loading an executable compiled from a source for a processing unit to perform a data processing task in a target processing unit; detecting a difference between the processing unit and the target processing unit; and compiling, in response to the detecting the difference, the source for the target processing unit based on the difference.