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.
Claims28
A method for dynamically sharing an arrangement of one or more arrays of processing units among a plurality of application programs, the method comprising:
- receiving, from each application program of the plurality of application programs and for each array of the one or more arrays of processing units, a respective capacity demand indicator expressing a number of processing units of the respective array that the respective application program is ready to utilize for executing one or more task instances of the respective application program;
- assigning, by hardware logic of one or more controllers, the processing units of the one or more arrays of processing units to tasks of the plurality of application programs for concurrent execution, wherein, for each program, execution comprises executing at least a portion of a workflow of the respective application program on the one or more arrays of processing units, wherein
- assigning comprises, for each application program of the plurality of application programs, assigning a respective set of tasks of the respective application to one or more processing units of the one or more arrays of processing units at least in part in accordance to the respective capacity demand indicators, wherein
- for at least one application program of the plurality of application programs, assigning results in assigning two or more pipelined tasks of the set of tasks of the respective application program on a corresponding two or more processing units, wherein
- a first task of the two or more pipelined tasks will execute a first pipelined processing phase of the workflow of the respective application program on a first processing unit of the two or more processing units, wherein
- executing the first pipelined processing phase comprises generating processing data for a second pipelined processing phase of the workflow of the respective application program, and
- the second pipelined processing phase will be executed by a second task of the two or more pipelined tasks on a second processing unit of the two or more processing units;
- and
- for the at least one application program, establishing, by the hardware logic of the one or more controllers, a communication channel between the first processing unit and the second processing unit, wherein
- the processing data generated by the first processing phase is provided to the second processing phase at least in part via the communication channel.
A system for dynamically sharing an arrangement of one or more arrays of processing units among a plurality of software applications, the system comprising:
- the one or more arrays of processing units;
- and
- one or more controllers, each controller comprising hardware logic and/or software-configured hardware logic for performing operations to dynamically adjust task assignment based on changes in capacity demand indicators among the plurality of software applications, the operations comprising, for each iteration of a plurality of iterations,
- receiving, from each software application of the plurality of software applications and for each array of the one or more arrays of processing units, a respective capacity demand indicator expressing a number of processing units of the respective array that the respective software application is ready to utilize for executing one or more task instances of the respective software application,
- receiving, from each software application of the plurality of software applications, at least one prioritized set of ready-to-execute task instances of the one or more tasks of the respective application,
- assigning the processing units of the one or more arrays of processing units to tasks of the plurality of software applications for concurrent execution at least in part based on the at least one prioritized set of ready-to-execute task instances, wherein, for each application, execution comprises executing at least a portion of a workflow of the respective software application on the one or more arrays of processing units, wherein
- the workflow of any given software application comprises a plurality of processing phases including one or more of i) a pipelined processing phase and/or ii) a parallel processing phase,
- assigning comprises, for each software application of the plurality of software applications, assigning a respective set of tasks of the respective application to one or more processing units of the one or more arrays of processing units at least in part in accordance to the respective capacity demand indicators, and
- assigning results in assigning tasks of at least one processing phase of the plurality of processing phases of the workflow of the respective application, and
- repeating the receiving and the assigning for a plurality of iterations, wherein,
- on at least a portion of subsequent iterations, an order of the at least one prioritized set of ready-to-execute task instances of at least one software application changes such that a different set of tasks of the respective software application is assigned while the workflow of the respective software application continues execution.
Dependencies are inferred from the claim text.