General purpose software parallel task engine
AssigneeTransgaming 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.
Claims37
In a computer system, 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 into one or more new tasks, the decomposing being dependent on at least one policy selected from a given set of policies;
- 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;
- a set of job loops, at least one of the job loops for performing the new tasks on at least part of the data by executing the operation routines;
- the scheduler for distributing and assigning the new tasks to the at least one of the job loops;
- and
- the scheduler for making the selection of the at least one policy as a function of characteristics of the operation routines generated by the run-time dynamic code generator.
In a computer system, a method for performing tasks on data, the method comprising:
- receiving tasks;
- decomposing the tasks into one or more new tasks, the decomposing being dependent on at least one policy selected from a given set of policies;
- generating for the new tasks, operation routines, the generating comprising outputting the operation routines for execution using a dynamic compiler;
- making the selection of the at least one policy as a function of characteristics of the operation routines generated or located by the run-time dynamic code generator;
- providing a set of job loops;
- distributing and assigning the new tasks to at least one of the job loops;
- and
- the at least one of the job loops performing the new tasks on at least part of the data by executing the operation routines.
Dependencies are inferred from the claim text.