Parallel task scheduling system for computers
First Claim
1. In a multithreaded computing environment, a method of processing computing tasks, comprising:
- defining a plurality of worker threads, each thread capable of processing a task;
defining a plurality of task queues, each task queue capable of queuing a plurality of tasks;
associating each task queue with a single respective worker thread;
assigning a task to a task queue in an essentially random fashion, by;
selecting a task queue;
determining whether the selected task queue is in a non-empty state;
repeating the steps of selecting and determining until an empty task queue is found; and
placing the task in the empty task queue; and
from a worker thread, processing a task, wherein the task is located, during the act of processing, in a task queue not associated with the thread.
2 Assignments
0 Petitions
Accused Products
Abstract
A parallel task scheduling system in a multi-threaded computing environment includes a plurality of parallel task queues. Each task queue is associated with a respective worker thread from a plurality of worker threads. Each new task is assigned to one of the task queues. That assignment process including selecting a random queue and, from that starting point, locating an empty queue (if one exists). The task is then placed on that empty queue for processing.
Typically, the worker thread associated with the identified task queue will process the queued task. If the worker thread is busy processing another task, the queued task may be stolen by a free thread. A waiting task, can thus be processed in an efficient manner.
82 Citations
42 Claims
-
1. In a multithreaded computing environment, a method of processing computing tasks, comprising:
-
defining a plurality of worker threads, each thread capable of processing a task; defining a plurality of task queues, each task queue capable of queuing a plurality of tasks; associating each task queue with a single respective worker thread; assigning a task to a task queue in an essentially random fashion, by; selecting a task queue; determining whether the selected task queue is in a non-empty state; repeating the steps of selecting and determining until an empty task queue is found; and placing the task in the empty task queue; and from a worker thread, processing a task, wherein the task is located, during the act of processing, in a task queue not associated with the thread. - View Dependent Claims (2, 3, 4, 5)
-
-
6. In a multithreaded computing environment, a method of processing computing threads, comprising:
-
defining a plurality of worker threads, each thread capable of processing a task; defining a plurality of task queues, each task queue capable of queuing a plurality of tasks accessible by the worker threads; associating each task queue with a single respective worker thread; assigning a task to an assigned task queue, by; selecting a task queue; determining whether the selected task queue is in a non-empty state; repeating the steps of selecting and determining until an empty task queue is found; and placing the task in the empty task queue, the empty task queue as a result being designated the assigned task queue; and in a worker thread not associated with the assigned task queue, processing the task, wherein the task is located, during the act of processing, in the assigned task queue. - View Dependent Claims (7, 8, 9, 10)
-
-
11. In a multithreaded computing environment, a system for processing tasks, comprising:
-
a plurality of worker threads, each thread capable of processing a task; a plurality of task queues, each task queue capable of queuing a plurality of tasks and each task queue associated with a single respective worker thread; a task scheduler for assigning a task to a task queue in an essentially random fashion, by; selecting a task queue; determining whether the selected task queue is in a non-empty state; repeating the steps of selecting and determining until an empty task queue is found; and placing the task in the empty task queue; and a worker thread processing a task, wherein the task is located, during the act of processing, in a task queue not associated with the thread. - View Dependent Claims (12, 13)
-
-
14. In a multithreaded computing environment, a system for processing computing threads, comprising:
-
a plurality of worker threads, each thread capable of processing a task; a plurality of task queues, each task queue capable of queuing a plurality of tasks accessible by the worker threads and each task queue associated with a respective worker thread; a task scheduler for assigning a task to an assigned task queue, by; selecting a task queue; determining whether the selected task queue is in a non-empty state; repeating the steps of selecting and determining until an empty task queue is found; and placing the task in the empty task queue, the empty task queue as a result being designated the assigned task queue; and wherein the assigned task is processed by a thread not associated with the assigned task queue, wherein the task is located, during the act of processing, in the assigned task queue. - View Dependent Claims (15, 16)
-
-
17. An article of manufacturing, comprising:
-
a computer-readable storage medium; a computer implemented program for processing computing tasks in a multithreaded computing environment embodied in the storage medium, comprising instructions for; defining a plurality of worker threads, each thread capable of processing a task; defining a plurality of task queues, each task queue capable of queuing a plurality of tasks; associating each task queue with a single respective worker thread; assigning a task to a task queue in an essentially random fashion, by; selecting a task queue; determining whether the selected task queue is in a non-empty state; repeating the steps of selecting and determining until an empty task queue is found; and placing the task in the empty task queue; and processing, in a worker thread, a task, wherein the task is located, during the act of processing, in a task queue not associated with the thread. - View Dependent Claims (18, 19)
-
-
20. An article of manufacture, comprising:
-
a computer-readable storage medium; a computer-implemented program for processing computing threads, in a multithreaded computing environment embodied in the storage medium, the program comprising instructions for; defining a plurality of worker threads, each thread capable of processing a task; defining a plurality of task queues, each task queue capable of queuing a plurality of tasks accessible by the worker threads; associating each task queue with a single respective worker thread; assigning a task to an assigned task queue, by; selecting a task queue; determining whether the selected task queue is in a non-empty state; repeating the steps of selecting and determining until an empty task queue is found; and placing the task in the empty task queue, the empty task queue as a result being designated the assigned task queue; and in a worker thread not associated with the assigned task queue, processing the task, wherein the task is located, during the act of processing, in the assigned task queue. - View Dependent Claims (21, 22)
-
-
23. In a multithreaded computing environment, a system for processing computing tasks, comprising:
-
means for defining a plurality of worker threads, each thread capable of processing a task; means for defining a plurality of task queues, each task queue capable of queuing a plurality of tasks; means for associating each task queue with a single respective worker thread; means for assigning a task to a task queue in an essentially random fashion, by; means for selecting a task queue; means for determining whether the selected task queue is in a non-empty state; means for repeating the steps of selecting and determining until an empty task queue is found; and means for placing the task in the empty task queue; and from a worker thread, means for processing a task, wherein the task is located, during the act of processing, in a task queue not associated with the thread. - View Dependent Claims (24, 25)
-
-
26. In a multithreaded computing environment, a method of processing computing tasks, comprising:
-
defining a plurality of worker threads, each thread capable of processing a task; defining a plurality of task queues, each task queue capable of queuing a plurality of tasks; associating each task queue with a single respective worker thread; assigning a task to an empty task queue in an essentially random fashion, by; selecting a task queue; determining whether the selected task queue is in a non-empty state; repeating the steps of selecting and determining until an empty task queue is found; and placing the task in the empty task queue; and from a worker thread, processing a task, wherein the task is located, during the act of processing, in a task queue not associated with the thread. - View Dependent Claims (27, 28, 29, 30)
-
-
31. In a multithreaded computing environment, a method of processing computing tasks, comprising:
-
defining a plurality of worker threads, each thread capable of processing a task; defining a plurality of task queues, each task queue capable of queuing a plurality of tasks; associating each task queue with a single respective worker thread, an associated task queue capable of storing tasks assigned to an associated worker thread; assigning a task to a task queue in an essentially random fashion, comprising; using a random number generator to identify an initial task queue; upon determining that the initial task queue is in a non-empty state, searching other task queues for an empty task queue; and upon finding an empty task queue, storing the task in the empty task queue; and from a worker thread, processing a task, wherein the task is located, during the act of processing, in a task queue not associated with the worker thread. - View Dependent Claims (32, 33, 34)
-
-
35. In a computer, a system for processing computing threads, comprising:
-
a plurality of worker threads, each thread capable of processing a task; a plurality of task queues, each task queue capable of queuing a plurality of tasks accessible by the worker threads and each task queue associated with a single respective worker thread, the associated task queue capable of storing tasks assigned to the associated worker thread; a task scheduler for assigning a task to an assigned task queue in an essentially random fashion, the task scheduler using a random number generator to identify an initial task queue, upon determining that the initial task queue is in a non-empty state, searching other task queues for an empty task queue, and upon finding an empty task queue, the task scheduler stores the task in the empty task queue, the empty task queue as a result being designated the assigned task queue, a worker thread processing the task, wherein the task is located, during the act of processing, in the assigned task queue, which is not associated with the worker thread. - View Dependent Claims (36, 37, 38)
-
-
39. In a multithreaded computing environment, a system for processing computing threads, comprising:
-
means for defining a plurality of worker threads, each thread capable of processing a task; means for defining a plurality of task queues, each task queue capable of queuing a plurality of tasks accessible by the worker threads; means for associating each task queue with a single respective worker thread; means for assigning a task to an assigned task queue, by; means for selecting a task queue; means for determining whether the selected task queue is in a non-empty state; means for repeating the steps of selecting and determining until an empty task queue is found; and means for placing the task in the empty task queue, the empty task queue as a result being designated the assigned task queue; and in a worker thread not associated with the assigned task queue, means for processing the task, wherein the task is located, during the act of processing, in the assigned task queue.
-
-
40. In a multithreaded computing environment, a system for processing computing tasks, comprising:
-
means for defining a plurality of worker threads, each thread capable of processing a task; means for defining a plurality of task queues, each task queue capable of queuing a plurality of tasks; means for associating each task queue with a single respective worker thread; means for assigning a task to an empty task queue in an essentially random fashion, by; means for selecting a task queue; means for determining whether the selected task queue is in a non-empty state; means for repeating the steps of selecting and determining until an empty task queue is found; and means for placing the task in the empty task queue; and from a worker thread, means for processing a task, wherein the task is located, during the act of processing, in a task queue not associated with the thread.
-
-
41. In a multithreaded computing environment, a system for processing computing tasks, comprising:
-
means for defining a plurality of worker threads, each thread capable of processing a task; means for defining a plurality of task queues, each task queue capable of queuing a plurality of tasks; means for associating each task queue with a single respective worker thread, an associated task queue capable of storing tasks assigned to an associated worker thread; means for assigning a task to a task queue in an essentially random fashion, comprising; means for using a random number generator to identify an initial task queue; upon determining that the initial task queue is in a non-empty state, means for searching other task queues for an empty task queue; and upon finding an empty task queue, means for storing the task in the empty task queue; and from a worker thread, means for processing a task, wherein the task is located, during the act of processing, in a task queue not associated with the worker thread. - View Dependent Claims (42)
-
Specification