IP Library › Granted Patent US 9,262,230
Granted Patent B2
US 9,262,230 · App. 13/991,373 · Granted Feb 16, 2016

Method and system for work partitioning between processors with work demand feedback

Inventors: Anton Malakhov (Nizhny Novgorod, RU); Alexey Kukanov (Nizhny Novgorod, RU)
Assignee: Intel Corporation
G06F9/5077G06F9/5066G06F9/5088G06F2209/5017G06F2209/5022
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,262,230
App. No.
13/991,373
Granted
Feb 16, 2016
Kind
B2
Abstract

A method according to one embodiment includes the operations of loading binary code comprising a top level task into memory on a first processor, the top level task having an associated range; determining if the top level task is divisible into a plurality of sub-tasks based on the range; for each of the sub-tasks, determining if a given sub-task is divisible into a plurality of sub-sub-tasks; and if the given sub-task is indivisible, executing the given sub-task; otherwise, if the given sub-task is divisible, dividing the given sub-task into the plurality of sub-sub-tasks.

Claims (34)

1. A method, comprising:

loading binary code comprising a top level task into memory on a first processor, said top level task having an associated range;

determining if said top level task is divisible into a plurality of sub-tasks based on said range;

for each of said sub-tasks, determining if a given sub-task is divisible into a plurality of sub-sub-tasks; and

if said given sub-task is indivisible, executing said given sub-task; if said given sub-task is divisible, dividing said given sub-task into said plurality of sub-sub-tasks.

2. The method of claim 1 , further comprising determining if a second processor has a demand for work.

3. The method of claim 2 , further comprising executing one or more of said plurality of sub-tasks on said second processor in response to said demand for work.

4. The method of claim 2 , wherein said determining that said second processor has a demand for work is performed by spawning a signal task, wherein said signal task sets a flag indicating said demand for work if said signal task is stolen by said second processor.

5. The method of claim 1 , wherein said sub-sub-tasks are further divided until a sub-division threshold is exceeded.

6. The method of claim 5 , wherein said sub-division threshold is initially set to log 2 (P*U*V), where P represents a total number of available processors, U represents an initial number of sub-tasks created on each of said available processors, and V represents a number of checks for processor work demand performed by each of said sub-tasks.

7. The method of claim 6 , wherein said sub-division threshold is dynamically adjusted based on processor availability.

8. A non-transitory computer-readable storage medium having instructions stored thereon which when executed by a processor result in the following operations comprising:

loading binary code comprising a top level task into memory on a first processor, said top level task having an associated range;

determining if said top level task is divisible into a plurality of sub-tasks based on said range;

for each of said sub-tasks, determining if a given sub-task is divisible into a plurality of sub-sub-tasks; and

if said given sub-task is indivisible, executing said given sub-task; if said given sub-task is divisible, dividing said given sub-task into said plurality of sub-sub-tasks.

9. The non-transitory computer-readable storage medium of claim 8 , further comprising determining if a second processor has a demand for work.

10. The non-transitory computer-readable storage medium of claim 9 , further comprising executing one or more of said plurality of sub-tasks on said second processor in response to said demand for work.

11. The non-transitory computer-readable storage medium of claim 9 , wherein said determining that said second processor has a demand for work is performed by spawning a signal task, wherein said signal task sets a flag indicating said demand for work if said signal task is stolen by said second processor.

12. The non-transitory computer-readable storage medium of claim 8 , wherein said sub-sub-tasks are further divided until a sub-division threshold is exceeded.

13. The non-transitory computer-readable storage medium of claim 12 , wherein said sub-division threshold is initially set to log 2 (P*U*V), where P represents a total number of available processors, U represents an initial number of sub-tasks created on each of said available processors, and V represents a number of checks for processor work demand performed by each of said sub-tasks.

14. The non-transitory computer-readable storage medium of claim 13 , wherein said sub-division threshold is dynamically adjusted based on processor availability.

15. A system, comprising:

a plurality of processors;

a memory configured to host load balancer code to be executed on said plurality of processors, wherein when said load balancer code is executed on said processors said load balancer code causes said processors to:

load binary code comprising a top level task into memory on a first processor, said top level task having an associated range;

determine if said top level task is divisible into a plurality of sub-tasks based on said range;

for each of said sub-tasks, determine if a given sub-task is divisible into a plurality of sub-sub-tasks; and

if said given sub-task is indivisible, execute said given sub-task; if said given sub-task is divisible, divide said given sub-task into said plurality of sub-sub-tasks.

16. The system of claim 15 , wherein said load balancer code further causes said processors to determine if a second processor has a demand for work.

17. The system of claim 16 , wherein said load balancer code further causes said processors to execute one or more of said plurality of sub-tasks on said second processor in response to said demand for work.

18. The system of claim 16 , wherein said load balancer code further causes said processors to spawn a signal task, wherein said signal task sets a flag indicating said demand for work if said signal task is stolen by said second processor.

19. The system of claim 15 , wherein said load balancer code further causes said processors to further divide said sub-sub-tasks until a sub-division threshold is exceeded.

20. The system of claim 19 , wherein said sub-division threshold is initially set to log 2 (P*U*V), where P represents a total number of available processors, U represents an initial number of sub-tasks created on each of said available processors, and V represents a number of checks for processor work demand performed by each of said sub-tasks.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 8, 2014
From: MALAKHOV, ANTON; KUKANOV, ALEXEY
To: INTEL CORPORATION
Reel/Frame 032623/0288 →
Continuity (1)
Related Publication 20150026698A1 · Jan 22, 2015