1 : A method comprising: during execution of a software application in a computing system comprising a plurality of processing units, identifying platform-independent instructions that are configured to perform at least one computational task associated with execution of the software application, wherein the plurality of processing units comprises a heterogeneous group that includes at least two different types of processing units, wherein, prior to execution of the software application, the platform-independent instructions are compiled from computational source code associated with the software application, wherein the platform-independent instructions have a format that is not specific to any particular processing unit of the plurality of processing units, and wherein the platform-independent instructions comprise instructions that are not native to or executable by any particular processing unit of the plurality of processing units; during execution of the software application, determining one or more scheduling criteria that are associated with the platform-independent instructions, wherein the one or more scheduling criteria are based at least in part on historical performance information associated with prior performance of the at least one computational task by a particular processing unit of the plurality of processing units, and wherein the historical performance information comprises information associated with one or more resources used by the particular processing unit during prior performance of the at least one computational task by the particular processing unit; during execution of the software application, selecting, from the plurality of processing units and based on the one or more scheduling criteria, the particular processing unit to perform the at least one computational task; during execution of the software application, converting the platform-independent instructions into platform-dependent instructions, wherein the platform-dependent instructions have a format that is specific to the selected processing unit, and wherein the platform-dependent instructions comprise instructions that are native to and executable by the selected processing unit; and during execution of the software application, executing, by the selected processing unit, the platform-dependent instructions to perform the at least one computational task.