1. A method for scheduling work units in a heterogeneous multi-core architecture comprising: scheduling a first compute kernel to a first processor core of a plurality of processor cores based at least in part on pre-runtime static information determined during compilation of the first compute kernel that indicates the first compute kernel includes a number of branch instructions less than a first threshold, wherein the first processor core has a first micro-architecture; scheduling the first compute kernel to a second processor core of a plurality of processor cores based at least in part on the pre-runtime static information that indicates the number of branch instructions is greater than the first threshold, wherein the second processor core has a second micro-architecture; receiving measured runtime information corresponding to runtime behavior of the first compute kernel on the first or second processor core; and rescheduling the first compute kernel from the first processor core to the second processor core of the plurality of processor cores based at least in part on the measured runtime information indicating a number of branch instructions executed is greater than a second threshold number.