Concurrent program execution optimization
AssigneeThroughPuter, Inc.
InventorMark Henrik Sandstrom
Life of this patent
Estimating the term…
Abstract
An architecture for a load-balanced groups of multi-stage manycore processors shared dynamically among a set of software applications, with capabilities for destination task defined intra-application prioritization of inter-task communications (ITC), for architecture-based ITC performance isolation between the applications, as well as for prioritizing application task instances for execution on cores of manycore processors based at least in part on which of the task instances have available for them the input data, such as ITC data, that they need for executing.
Claims18
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.
A method for prioritizing instances of a software program task for execution, with said task considered herein as a destination task for its source tasks, the method involving:
- classifying the instances into the following classes, listed in their reducing execution priority order:
- 1) instances indicated as having high priority input data for processing, with said high priority assigned by such one of the instances that said data is to be processed by;
- and
- 2) other instances;
- based at least in part on said classifying, executing at least some of the instances on a set of hardware processing resources;
- and
- for any given one of the instances, computing a number of its non-empty source task specific buffers among input data buffers of the given instance such that belong to source tasks of the given instance indicated at the time as high priority source tasks for communications to the given instance, with this number referred to as an H number for its instance, wherein, within the class 1), the instances are prioritized for execution at least in part according to magnitudes of their H numbers, in descending order such that an instance with a greater H number is prioritized for execution before an instance with lower H number.
A method for prioritizing instances of a software program for execution, the method including:
- 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;
- 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
- 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 method is implemented by hardware logic.
A system for prioritizing instances of a software program task for execution, with said task considered herein as a destination task for its source tasks, the method involving:
- a subsystem for classifying the instances into the following classes, listed in their reducing execution priority order:
- 1) instances indicated as having high priority input data for processing, with said high priority assigned by such one of the instances that said data is to be processed by;
- and
- 2) other instances;
- a subsystem for executing, at least in part based on said classifying, at least some of the instances on a set of hardware processing resources;
- and
- a subsystem for computing, for any given one of the instances, a number of its non-empty source task specific buffers among input data buffers of the given instance such that belong to source tasks of the given instance indicated at the time as high priority source tasks for communications to the given instance, with this number referred to as an H number for its instance, wherein, within the class 1), the instances are prioritized for execution at least in part according to magnitudes of their H numbers, in descending order such that an instance with a greater H number is prioritized for execution before an instance with lower H number.
Dependencies are inferred from the claim text.