System and method for input data load adaptive parallel processing
First Claim
1. A system comprising a plurality of subsystems, implemented on at least one of hardware logic and software logic executing on a plurality of processors, for computing resource management, the system comprising:
- a first subsystem configured to allocate an array of units of computing capacity among instances of a set of programs, each program of the set of programs comprising a respective plurality of instances, whereinthe allocating is based at least in part on respective volumes of processing data for each program of the set of programs, andthe allocating results in a unique subset of the array of units of computing capacity allocated to each program of the set of programs;
a second subsystem configured to, for each program of the set of programs, assess a relative readiness for execution among the plurality of instances of the respective program, whereinthe relative readiness is assessed based at least in part on respective volumes of processing data available to each instance of the plurality of instances; and
a third subsystem configured to select, for each program of the set of programs, a highest priority subset of instances of the plurality of instances of the respective program for execution on the array of units of computing capacity according to a number of units of the unique subset of the array of units allocated to the respective program, whereinthe highest priority subset of instances is selected based at least in part on the relative readiness for execution, andselecting results in a plurality of selected instances;
whereinthe plurality of selected instances includesone or more assigned instances currently executing on a given unit of the array of units of computing capacity, andone or more unassigned instances currently unassigned to any unit of the array of units of computing capacity, whereinselecting the highest priority subset of instances comprises, for at least one program of the set of programs, prioritizing an unassigned instance of the at least one program over an assigned instance of a given program of the set of programs currently executing on a given unit of the array of units of processing capacity, resulting in preemption of the assigned instance, wherein the prioritizing is based at least in part on newly available data to the at least one program.
1 Assignment
0 Petitions
Accused Products
Abstract
Systems and methods provide an extensible, multi-stage, realtime application program processing load adaptive, manycore data processing architecture shared dynamically among instances of parallelized and pipelined application software programs, according to processing load variations of said programs and their tasks and instances, as well as contractual policies. The invented techniques provide, at the same time, both application software development productivity, through presenting for software a simple, virtual static view of the actually dynamically allocated and assigned processing hardware resources, together with high program runtime performance, through scalable pipelined and parallelized program execution with minimized overhead, as well as high resource efficiency, through adaptively optimized processing resource allocation.
184 Citations
21 Claims
-
1. A system comprising a plurality of subsystems, implemented on at least one of hardware logic and software logic executing on a plurality of processors, for computing resource management, the system comprising:
-
a first subsystem configured to allocate an array of units of computing capacity among instances of a set of programs, each program of the set of programs comprising a respective plurality of instances, wherein the allocating is based at least in part on respective volumes of processing data for each program of the set of programs, and the allocating results in a unique subset of the array of units of computing capacity allocated to each program of the set of programs; a second subsystem configured to, for each program of the set of programs, assess a relative readiness for execution among the plurality of instances of the respective program, wherein the relative readiness is assessed based at least in part on respective volumes of processing data available to each instance of the plurality of instances; and a third subsystem configured to select, for each program of the set of programs, a highest priority subset of instances of the plurality of instances of the respective program for execution on the array of units of computing capacity according to a number of units of the unique subset of the array of units allocated to the respective program, wherein the highest priority subset of instances is selected based at least in part on the relative readiness for execution, and selecting results in a plurality of selected instances;
whereinthe plurality of selected instances includes one or more assigned instances currently executing on a given unit of the array of units of computing capacity, and one or more unassigned instances currently unassigned to any unit of the array of units of computing capacity, wherein selecting the highest priority subset of instances comprises, for at least one program of the set of programs, prioritizing an unassigned instance of the at least one program over an assigned instance of a given program of the set of programs currently executing on a given unit of the array of units of processing capacity, resulting in preemption of the assigned instance, wherein the prioritizing is based at least in part on newly available data to the at least one program. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12)
-
-
13. A method for computing resource management, implemented by a controller comprising software logic executing on processors and/or hardware logic, the method comprising:
-
allocating, by the controller, an array of units of computing capacity among instances of a set of programs, each program of the set of programs comprising a respective plurality of instances, wherein the allocating is based at least in part on respective volumes of processing data for each program of the set of programs, and the allocating results in a unique subset of the array of units of computing capacity allocated to each program of the set of programs; assessing, by the controller, a relative readiness for execution among the plurality of instances of the respective program, wherein the relative readiness is assessed based at least in part on respective volumes of processing data available to each instance of the plurality of instances; and selecting, by the controller for each program of the set of programs, a highest priority subset of instances of the plurality of instances of the respective program for execution on the array of units of computing capacity according to a number of units of the unique subset of the array of units allocated to the respective program, wherein the highest priority subset of instances is selected based at least in part on the relative readiness for execution, and selecting results in a plurality of selected instances;
whereinthe plurality of selected instances includes one or more assigned instances currently executing on a given unit of the array of units of computing capacity, and one or more unassigned instances currently unassigned to any unit of the array of units of computing capacity, wherein selecting the highest priority subset of instances comprises, for at least one program of the set of programs, prioritizing an unassigned instance of the at least one program over an assigned instance of a given program of the set of programs currently executing on a given unit of the array of units of processing capacity, resulting in preemption of the assigned instance, wherein the prioritizing is based at least in part on newly available data to the at least one program. - View Dependent Claims (14, 15, 16, 17, 18, 19, 20, 21)
-
Specification