1. A method comprising: identifying, during compilation of a compute kernel, a location within the compute kernel comprising a plurality of instructions at which execution of the compute kernel may migrate during execution of the compute kernel; creating a data structure to maintain and migrate a context of the compute kernel; scheduling code in the compute kernel prior to the location for execution on a first processor core with a first micro-architecture; in response to receiving an indication that a condition for migration is satisfied: moving the context to a location accessible by a second processor core with a second micro-architecture different from the first micro-architecture; and scheduling code in the compute kernel after the location to the second processor core; wherein to determine that a condition for migration is satisfied, the method further comprises determining a number of parallel executing iterations of the compute kernel that have reached an exit point is above a given threshold.