IP Library › Granted Patent US 9,778,961
Granted Patent B2
US 9,778,961 · App. 14/852,737 · Granted Oct 3, 2017

Efficient scheduling of multi-versioned tasks

Inventor: Arun Raman (Fremont, CA)
Assignee: QUALCOMM Incorporated
G06F9/52G06F9/4881G06F9/5038G06F9/5066
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 9,778,961
App. No.
14/852,737
Granted
Oct 3, 2017
Kind
B2
Abstract

Methods, devices, systems, and non-transitory process-readable storage media for a multi-processor computing device to schedule multi-versioned tasks on a plurality of processing units. An embodiment method may include processor-executable operations for enqueuing a specialized version of a multi-versioned task in a task queue for each of the plurality of processing units, wherein each specialized version is configured to be executed by a different processing unit of the plurality of processing units, providing ownership over the multi-versioned task to a first processing unit when the first processing unit is available to immediately execute a corresponding specialized version of the multi-versioned task, and discarding other specialized versions of the multi-versioned task in response to providing ownership over the multi-versioned task to the first processing unit. Various operations of the method may be performed via a runtime functionality.

Claims (69)

1. A method for a multi-processor computing device to schedule multi-versioned tasks on a plurality of processing units, comprising:

enqueuing, via a processor of the plurality of processing units, a pointer associated with a specialized version of a multi-versioned task in a task queue for each of the plurality of processing units, wherein each pointer includes an identification of the multi-versioned task and the specialized version of the multi-versioned task, and further wherein each specialized version is configured to be executed by a different processing unit of the plurality of processing units;

providing, via the processor, ownership over the multi-versioned task to a first processing unit of the plurality of processing units, wherein the first processing unit is available to immediately execute a first specialized version of the multi-versioned task before other processing units of the plurality of processing units are available to execute other specialized versions of the multi-versioned task; and

discarding, via the processor, the other specialized versions of the multi-versioned task in response to providing the ownership over the multi-versioned task to the first processing unit.

2. The method of claim 1 , wherein the multi-processor computing device is executing a runtime functionality configured to schedule the plurality of processing units.

3. The method of claim 1 , wherein the identification of the specialized version of the multi-versioned task is included in a lowest four bits of each pointer.

4. The method of claim 1 , wherein providing, via the processor, the ownership over the multi-versioned task to the first processing unit of the plurality of processing units comprises storing data in association with the multi-versioned task.

5. The method of claim 1 , further comprising:

determining, via the processor, whether a next task from the task queue of the first processing unit is associated with the multi-versioned task; and

requesting, via the processor, the ownership over the multi-versioned task for the first processing unit in response to determining that the next task is associated with the multi-versioned task.

6. The method of claim 5 , further comprising:

acquiring, via the processor, the ownership over the multi-versioned task for the first processing unit in response to requesting the ownership; and

executing, via the first processing unit, the next task in response to acquiring the ownership over the multi-versioned task for the first processing unit.

7. The method of claim 5 , wherein determining, via the processor, whether the next task from the task queue of the first processing unit is associated with the multi-versioned task comprises:

obtaining, via the processor, an identifier by applying a bit mask to a pointer from the task queue of the first processing unit; and

determining, via the processor, that the next task is associated with the multi-versioned task in response to determining that the identifier corresponds to the first specialized version of the multi-versioned task.

8. The method of claim 5 , wherein determining, via the processor, whether the next task from the task queue of the first processing unit is associated with the multi-versioned task comprises:

retrieving, via the processor, a pointer from the task queue of the first processing unit, wherein the pointer is a common multi-versioned task pointer placed in the task queue for each of the plurality of processing units;

determining, via the processor, whether the pointer is associated with a list of specialized versions of the multi-versioned task; and

identifying, via the processor, the first specialized version of the multi-versioned task from the list of specialized versions of the multi-versioned task in response to determining that the pointer is associated with the list of specialized versions of the multi-versioned task, wherein the first specialized version is the next task to be executed by the first processing unit.

9. The method of claim 5 , further comprising:

executing, via the first processing unit, the next task in response to determining that the next task is not associated with the multi-versioned task.

10. The method of claim 5 , further comprising:

determining, via the processor, that the ownership over the multi-versioned task has been acquired by a second processing unit in response to requesting the ownership for the first processing unit; and

discarding, via the processor, the next task in response to determining that the ownership over the multi-versioned task has been acquired by the second processing unit.

11. The method of claim 5 , further comprising:

determining, via the processor, whether there is a priority task within the task queue associated with the first processing unit; and

executing, via the first processing unit, the priority task,

wherein requesting, via the processor, the ownership over the multi-versioned task for the first processing unit in response to determining that the next task is associated with the multi-versioned task comprises requesting, via the processor, the ownership over the multi-versioned task for the first processing unit in response to executing the priority task.

12. The method of claim 1 , wherein the processor is the first processing unit.

13. A multi-processor computing device, comprising:

a memory; and

a plurality of processing units coupled to the memory, wherein a processor of the plurality of processing units is configured with processor-executable instructions to perform operations comprising:

enqueuing a pointer associated with a specialized version of a multi-versioned task in a task queue for each of the plurality of processing units, wherein each pointer includes an identification of the multi-versioned task and the specialized version of the multi-versioned task, and further wherein each specialized version is configured to be executed by a different processing unit of the plurality of processing units;

providing ownership over the multi-versioned task to a first processing unit of the plurality of processing units, wherein the first processing unit is available to immediately execute a first specialized version of the multi-versioned task before other processing units of the plurality of processing units are available to execute other specialized versions of the multi-versioned task; and

discarding the other specialized versions of the multi-versioned task in response to providing the ownership over the multi-versioned task to the first processing unit.

14. The multi-processor computing device of claim 13 , wherein the processor is configured to perform the operations when the multi-processor computing device is executing a runtime functionality configured to schedule the plurality of processing units.

15. The multi-processor computing device of claim 13 , wherein the processor is configured with processor-executable instructions to perform operations such that the identification of the specialized version of the multi-versioned task is included in a lowest four bits of each pointer.

16. The multi-processor computing device of claim 13 , wherein the processor is configured with processor-executable instructions to perform operations such that providing the ownership over the multi-versioned task to the first processing unit of the plurality of processing units comprises storing data in association with the multi-versioned task.

17. The multi-processor computing device of claim 13 , wherein the processor is configured with processor-executable instructions to perform operations further comprising:

determining whether a next task from the task queue of the first processing unit is associated with the multi-versioned task; and

requesting the ownership over the multi-versioned task for the first processing unit in response to determining that the next task is associated with the multi-versioned task.

18. The multi-processor computing device of claim 17 , wherein the processor is configured with processor-executable instructions to perform operations further comprising:

acquiring the ownership over the multi-versioned task for the first processing unit in response to requesting the ownership; and

executing the next task via the first processing unit in response to acquiring the ownership over the multi-versioned task.

19. The multi-processor computing device of claim 17 , wherein the processor is configured with processor-executable instructions to perform operations such that determining whether the next task from the task queue of the first processing unit is associated with the multi-versioned task comprises:

obtaining an identifier by applying a bit mask to a pointer from the task queue of the first processing unit; and

determining that the next task is associated with the multi-versioned task in response to determining that the identifier corresponds to the first specialized version of the multi-versioned task.

20. The multi-processor computing device of claim 17 , wherein the processor is configured with processor-executable instructions to perform operations such that determining whether the next task from the task queue of the first processing unit is associated with the multi-versioned task comprises:

retrieving a pointer from the task queue of the first processing unit, wherein the pointer is a common multi-versioned task pointer placed in the task queue for each of the plurality of processing units;

determining whether the pointer is associated with a list of specialized versions of the multi-versioned task; and

identifying the first specialized version of the multi-versioned task from the list of specialized versions of the multi-versioned task in response to determining that the pointer is associated with the list of specialized versions of the multi-versioned task, wherein the first specialized version is the next task to be executed by the first processing unit.

21. The multi-processor computing device of claim 17 , wherein the processor is configured with processor-executable instructions to perform operations further comprising:

executing the next task via the first processing unit in response to determining that the next task is not associated with the multi-versioned task.

22. The multi-processor computing device of claim 17 , wherein the processor is configured with processor-executable instructions to perform operations further comprising:

determining that the ownership over the multi-versioned task has been acquired by a second processing unit in response to requesting the ownership over the multi-versioned task for the first processing unit; and

discarding the next task in response to determining that the ownership over the multi-versioned task has been acquired by the second processing unit.

23. The multi-processor computing device of claim 17 , wherein the processor is configured with processor-executable instructions to perform operations further comprising:

determining whether there is a priority task within the task queue associated with the first processing unit; and

executing the priority task via the first processing unit,

wherein requesting the ownership over the multi-versioned task for the first processing unit comprises requesting the ownership over the multi-versioned task for the first processing unit in response to executing the priority task.

24. A non-transitory processor-readable storage medium having stored thereon processor-executable instructions configured to cause a processor of a multi-processor computing device to perform operations comprising:

enqueuing a pointer associated with a specialized version of a multi-versioned task in a task queue for each of the plurality of processing units, wherein each pointer includes an identification of the multi-versioned task and the specialized version of the multi-versioned task, and further wherein each specialized version is configured to be executed by a different processing unit of the plurality of processing units;

providing ownership over the multi-versioned task to a first processing unit of the plurality of processing units, wherein the first processing unit is available to immediately execute a first specialized version of the multi-versioned task before other processing units of the plurality of processing units are available to execute other specialized versions of the multi-versioned task; and

discarding the other specialized versions of the multi-versioned task in response to providing the ownership over the multi-versioned task to the first processing unit.

25. A multi-processor computing device, comprising:

means for enqueuing a pointer associated with a specialized version of a multi-versioned task in a task queue for each of the plurality of processing units, wherein each pointer includes an identification of the multi-versioned task and the specialized version of the multi-versioned task, and further wherein each specialized version is configured to be executed by a different processing unit of the plurality of processing units;

means for providing ownership over the multi-versioned task to a first processing unit of the plurality of processing units, wherein the first processing unit is available to immediately execute a first specialized version of the multi-versioned task before other processing units of the plurality of processing units are available to execute other specialized versions of the multi-versioned task; and

means for discarding the other specialized versions of the multi-versioned task in response to providing ownership over the multi-versioned task to the first processing unit.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 14, 2015
From: RAMAN, ARUN
To: QUALCOMM INCORPORATED
Reel/Frame 036552/0805 →
Continuity (1)
Related Publication 20170075734A1 · Mar 16, 2017