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 providing one or more computational functions associated with the software application, wherein the platform-independent instructions have a platform-independent format that is not specific to any particular processing unit of the plurality of processing units, and wherein the platform-independent instructions comprise Low Level Virtual Machine (LLVM) bitcode compiled from the computational source code that is 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, 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, wherein the historical performance information further comprises information associated with an amount of time to previously convert the platform-independent instructions comprising the LLVM bitcode into platform-dependent instructions, and wherein the one or more scheduling criteria are further based on one or more of (a) a number of times that the platform-independent instructions are invoked during execution of the software application, or (b) a respective number of the platform-independent instructions that are executable on each of the plurality of processing units; during execution of the software application, and after determining the one or more scheduling criteria that are associated with the platform-independent instructions, 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 comprising the LLVM bitcode into the platform-dependent instructions, wherein the platform-dependent instructions comprise optimized native code having 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.