1. A system for prioritizing instances of a software program for execution, the system including: a subsystem for determining which of the instances are ready to execute on an array of processing cores, at least in part based on whether a given one of the instances has available input data to process, wherein said input data: (a) is sent to the given instance of the software program (i) by an instance of a different task of the same program or (ii) by an instance of a different software program, and (b) is queued at data source specific buffers of the given instance, and the given instance allots input data receive priorities for the data sources associated with said buffers; a subsystem for computing a priority score for each of the instances, wherein the priority score for a given one of the instances is computed at least in part based on a weighted sum of (1) a number of non-empty source-specific buffers of the given instance whose associated data source was allotted a high input data receive priority by the given instance, and (2) a number of other non-empty source-specific buffers of the given instance; and a subsystem for assigning a subset of the instances for execution on the array of cores at least in part so that instances with highest priority scores get selected for the subset assigned for execution, wherein the subset includes cases of none, some as well as all of the instances of said program, wherein said system is implemented in hardware logic.