Method and system for managing the execution of threads and the processing of data
First Claim
Patent Images
1. A method for managing the execution of threads and the processing of data, the method comprising:
- on a computing system comprising one or more processors;
representing each of a plurality of threads by a respective thread object, wherein each thread of the plurality is a point of execution of a program on a processor of the one or more processors;
representing each of a plurality of work items by a respective work item object, wherein each work item comprises data that is to be used by a processor of the one or more processors to execute a block of computer executable code;
inserting each thread object into a first queue;
inserting each work item object into a second queue;
reordering both the thread objects of the first queue and the work item objects of the second queue using a single scheduler; and
wherein the reordering step comprises using the single scheduler for querying each of the plurality of thread objects and each of the plurality of work item objects to determine how each of the plurality of thread objects and each of the plurality of work item objects is supposed to be ordered in the respective first and second queues.
2 Assignments
0 Petitions
Accused Products
Abstract
A method and system for managing the execution of threads uses a single scheduler for both threads and work items. Objects representing the threads and the work items are either maintained in separate queues or are stored together in a single queue. Each thread object or work item object may contain information that allows the scheduler to determine what order to execute the corresponding threads or to process the corresponding work items.
-
Citations
26 Claims
-
1. A method for managing the execution of threads and the processing of data, the method comprising:
-
on a computing system comprising one or more processors; representing each of a plurality of threads by a respective thread object, wherein each thread of the plurality is a point of execution of a program on a processor of the one or more processors; representing each of a plurality of work items by a respective work item object, wherein each work item comprises data that is to be used by a processor of the one or more processors to execute a block of computer executable code; inserting each thread object into a first queue; inserting each work item object into a second queue; reordering both the thread objects of the first queue and the work item objects of the second queue using a single scheduler; and wherein the reordering step comprises using the single scheduler for querying each of the plurality of thread objects and each of the plurality of work item objects to determine how each of the plurality of thread objects and each of the plurality of work item objects is supposed to be ordered in the respective first and second queues. - View Dependent Claims (2, 3, 4, 5, 6)
-
-
7. A method for managing the execution of threads and the processing of data, the method comprising:
-
on a computing system comprising one or more processors; representing each of a plurality of threads by a thread object, wherein each thread of the plurality of threads is a point of execution of a program on a processor of the one or more processors; representing each of a plurality of work items with a work item object, wherein each work item of the plurality of work items comprises a logical grouping of data that is to be used by a processor of the one or more processors to execute a block of computer-executable code; inserting each thread object and each work item object into a queue, the queue being the same for both the thread objects and the work item objects; and ordering the thread objects and the work item objects in the queue by sorting the thread objects and work item objects as they are being inserted into the queue. - View Dependent Claims (8, 9, 10, 11, 12)
-
-
13. A computer-readable storage medium having stored thereon data comprising:
-
one or more queues; a plurality of thread objects, each thread object representing a thread of execution of a computer program; and a plurality of work item objects, each work item object representing a logical grouping of data that is to be operated on by one or more code sections of one, or more computer programs; wherein the plurality of thread objects and the plurality work item objects are stored together in the same queue of the one or more queues; wherein at least one of the thread objects has an execution time value that indicates when the thread obiect should be removed from the queue; and wherein at least one of the work item objects has an execution time value that indicates when the work item obiect should be removed from the queue. - View Dependent Claims (14, 15, 16, 17, 18, 19)
-
-
20. A system for managing the execution of threads and the processing of data, the system comprising:
-
a means for executing a sequence of instructions of one or more computer programs, wherein when the instructions of a particular program are being executed, there is, at any given time, a thread of execution of the program representing the point in the sequence of instructions at which the executing means is executing an instruction, wherein at least one of the one or more programs is divided into computational blocks in which each computational block; receives a logical grouping of data as input; performs operations on the data contained in the logical grouping; and passes the results of the operations in the form of another logical grouping of data to the next computational block or outputs the results; a computer-readable storage medium having stored thereon a queue comprising; a thread object representing a saved state of the thread of execution, wherein the thread object waits in the queue until a processor becomes available to resume the thread of execution from the saved state; a work item object representing the logical grouping of data, wherein the work item object waits in the queue until a processor becomes available to execute the computational block that is to receive the logical grouping of data as input; wherein the work item obiect and the thread obiect are among a plurality of objects in the queue; and a means for ordering the plurality of objects according to an ordering criteria. - View Dependent Claims (21, 22, 23, 24, 25, 26)
-
Specification