General purpose software parallel task engine
AssigneeGoogle Inc.
InventorsGavriel State, Nicolas Capens, Luther Johnson
Life of this patent
Estimating the term…
Abstract
A software engine for decomposing work to be done into tasks, and distributing the tasks to multiple, independent CPUs for execution is described. The engine utilizes dynamic code generation, with run-time specialization of variables, to achieve high performance. Problems are decomposed according to methods that enhance parallel CPU operation, and provide better opportunities for specialization and optimization of dynamically generated code. A specific application of this engine, a software three dimensional (3D) graphical image renderer, is described.
Claims20
In a computer system having a processor, the processor having multiple processing cores, a parallel task engine for performing tasks on data, the parallel task engine comprising:
- an input for receiving tasks;
- a scheduler for decomposing the tasks at run-time into one or more new tasks;
- and
- a run-time dynamic code generator for generating, for the new tasks, operation routines, the run-time dynamic code generator comprising a dynamic compiler, the dynamic compiler being adapted to output the operation routines for execution,
- wherein the scheduler further is for distributing and assigning the new tasks to multiple processing cores for performing in parallel the new tasks on at least a portion of the data by executing the dynamically compiled operation routines;
- and
- wherein at least a portion of the scheduler operations of decomposing the tasks and the distributing and assigning the new tasks are dependent on operating characteristics of the processor.
In a computer system having a processor, the processor having multiple processing cores, a method for performing tasks on data, the method comprising:
- receiving tasks;
- decomposing the tasks at run-time into one or more new tasks;
- generating for the new tasks at run-time, operation routines, the generating comprising outputting the operation routines for execution using a dynamic compiler;
- distributing and assigning the new tasks to multiple processing cores;
- and
- the multiple processing cores performing the new tasks in parallel on at least part of the data by executing the operation routines;
- wherein at least one of the decomposing the tasks and the distributing and assigning the new tasks are dependent on operating characteristics of the processor.
In a computer system having multiple processing cores, a method for performing tasks on data, the method comprising:
- decomposing the tasks at run-time to create new tasks;
- dynamically compiling code for the new tasks at run-time using a dynamic code generator comprising a dynamic compiler;
- distributing and assigning the new tasks to two or more processing cores for executing the dynamically compiled code, in parallel, for performing the new tasks on at least a portion of the data;
- wherein at least one of the decomposing the tasks and the distributing and assigning the new tasks are dependent on operating characteristics of the processor.
Dependencies are inferred from the claim text.