IP Library Granted Patent US 10,331,496
Granted Patent B2
US 10,331,496 · App. 15/019,943 · Granted Jun 25, 2019

Runtime dispatching among a hererogeneous groups of processors

Inventors: Yong Jiang (Shanghai, CN); Ruijia Li (Shanghai, CN); Lei Shen (Shanghai, CN)
Assignee: INTEL CORPORATION
G06F9/5094G06F8/52G06F9/4552G06F9/4881G06F9/505Y02D10/22
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 10,331,496
App. No.
15/019,943
Granted
Jun 25, 2019
Kind
B2
Abstract

Systems, apparatus, articles, and methods are described including operations for runtime dispatching among a heterogeneous group of processors.

Claims (101)

1. A computer-implemented method comprising:

initiating, by a processing device, a request for scheduling processing of a plurality of computing units and context data associated with the active application, wherein the request for scheduling is provided to a scheduler module and comprises computing unit source code and context data associated with the source code, wherein the context data is part of data that is transferred from a memory of one or more memory stores to a heterogenous group of processes, wherein the data includes the source code associated with an active application;

obtaining, by the scheduler module, thermal data or power supply data associated with a computing device; and

determining, by the scheduler module, the distribution of the computing unit source code and context data to the heterogenous group of processors depending on one or more of the thermal data and the power supply data, wherein the heterogeneous group of processors comprises at least a first processor and a second processor, wherein the second processor is of a different type than the first processor,

wherein a first binary version and a second binary version of the computing unit source code and the context data are provided to the first processor and the second processor, respectively, such that the computing unit source code and the context data from a single computing unit is distributed to the first and second processors of different types, wherein the first binary version and the second binary version of the computing unit source code are compiled just-in-time, wherein the first binary version of the computing unit source code is compatible with the first processor and the second binary version of the computing unit source code is compatible with the second processor, wherein overhead associated with the just-in-time compilation is reduced using a just-in-time binary cache.

2. The method of claim 1 wherein the scheduler module has the at least one of thermal and power supply data transferred to the scheduler module in response to a request for scheduling by the active application.

3. The method of claim 1 , further comprising:

providing, to the scheduler module, load data from the heterogenous group of processors, wherein the load data indicates available load for individual processors; and

detecting, via the scheduler module, individual processors of the heterogenous group of processors based at least in part on the load data.

4. The method of claim 1 , further comprising:

providing, to the scheduler module, load data from the heterogenous group of processors, wherein the load data indicates available load for individual processors; and

wherein the determination of the distribution of the computing unit source code to the heterogenous group of processors is based at least in part on the load data.

5. The method of claim 1 , further comprising:

providing, to the scheduler module, thermal data associated with the computer;

determining, via the scheduler module, a thermal level based at least in part on the thermal data; and

wherein the determination of the distribution of the computing unit source code to the heterogenous group of processors is based at least in part on the determination of the thermal level.

6. The method of claim 1 , further comprising:

providing, to the scheduler module, power supply data associated with the computing device;

determining, via the scheduler module, a current power source and/or a battery charge level based at least in part on the power supply data; and

wherein the determination of the distribution of the computing unit source code to the heterogenous group of processors is based at least in part on the determination of the current power source and/or a battery charge level.

7. The method of claim 1 further comprising:

compiling, via the scheduler module, the first binary version and the second binary version of the computing unit source code, wherein the first binary version of the computing unit source code is compatible with the first processor and the second binary version of the computing unit source code is compatible with the second processor.

8. The method of claim 7 , comprising:

launching, via the scheduler module, a dispatch module associated with the scheduler module;

determining, via the dispatch module, when one of the first processor and/or second processors become available based at least in part on load data from the heterogenous group of processors, wherein the load data indicates available load for individual processors; and

providing the first binary version of the computing unit source code and the first context data to the first processor and the second binary version of the computing unit source code and the second context data to the second processor via the dispatch module in response to the first processor and/or second processors becoming available.

9. The method of claim 1 , wherein the heterogenous group of processors comprises at least a first processor and a second processor, wherein the second processor is of a different type than the first processor, and the method comprising:

loading, via the active application, the computing unit source code, wherein the computing unit source code comprises an individual computing unit selected from the plurality of computing units that comprise the active application;

creating, via the active application, a thread context array based at least in part on the computing unit source code, wherein the thread context array comprises the first and second context;

providing, to the scheduler module, thermal data associated with the computing device;

determining, via the scheduler module, a thermal level based at least in part on the thermal data;

providing, to the scheduler module, power supply data associated with the computing device;

determining, via the scheduler module, a current power source and/or a battery charge level based at least in part on the power supply data;

providing, to the scheduler module, load data from the heterogenous group of processors, wherein the load data indicates available load for individual processors;

detecting, via the scheduler module, individual processors of the heterogenous group of processors based at least in part on the load data;

wherein the determination of the distribution of the computing unit source code to the heterogenous group of processors is based at least in part on one or more of the load data, the determination of the thermal level, and the determination of the current power source and/or a battery charge level,

wherein the providing of the first binary version of the computing unit source code and the first context data to the first processor and the second binary version of the computing unit source code and the second context data to the second processor comprises:

launching, via the scheduler module, a dispatch module associated with the scheduler module;

determining, via the dispatch module, when one of the first processor and/or second processors become available based at least in part on load data from the heterogenous group of processors, wherein the load data indicates available load for individual processors; and

providing the first binary version of the computing unit source code and the first context data to the first processor and the second binary version of the computing unit source code and the second context data to the second processor via the dispatch module in response to the first processor and/or second processors becoming available.

10. At least one machine-readable medium comprising a plurality of instructions that in response to being executed on a computing device, cause the computing device to perform operations comprising:

initiating a request for scheduling processing of a plurality of computing units and context data associated with the active application, wherein the request for scheduling is provided to a scheduler module and comprises computing unit source code and context data associated with the source code, wherein the context data is part of data that is transferred from a memory of one or more memory stores to a heterogenous group of processes, wherein the data includes the source code associated with an active application;

obtaining, by the scheduler module, thermal data or power supply data associated with a computing device; and

determining, by the scheduler module, the distribution of the computing unit source code and context data to the heterogenous group of processors depending on one or more of thermal data and the power supply data, wherein the heterogenous group of processors comprises at least a first processor and a second processor, wherein the second processor is of a different type than the first processor, wherein a first binary version and a second binary version of the computing unit source code and the context data are provided to the first processor and the second processor, respectively, such that the computing unit source code and the context data from a single computing unit is distributed to the first and second processors of different types, wherein the first binary version and the second binary version of the computing unit source code are compiled just-in-time, wherein the first binary version of the computing unit source code is compatible with the first processor and the second binary version of the computing unit source code is compatible with the second processor, wherein overhead associated with the just-in-time compilation is reduced using a just-in-time binary cache.

11. The machine-readable medium of claim 10 , wherein the medium comprising instructions that in response to being executed on the computing device, cause the computing device to operate by:

compiling, via the scheduler module, the first binary version and the second binary version of the computing unit source code, wherein the first binary version of the computing unit source code is compatible with the first processor and the second binary version of the computing unit source code is compatible with the second processor;

loading, via the active application, the computing unit source code, wherein the computing unit source code comprises an individual computing unit selected from the plurality of computing units that comprise the active application;

creating, via the active application, a thread context array based at least in part on the computing unit source code, wherein the thread context array comprises the first and second context;

providing, to the scheduler module, thermal data associated with the computing device;

determining, via the scheduler module, a thermal level based at least in part on the thermal data;

providing, to the scheduler module, power supply data associated with the computing device;

determining, via the scheduler module, a current power source and/or a battery charge level based at least in part on the power supply data;

providing, to the scheduler module, load data from the heterogenous group of processors, wherein the load data indicates available load for individual processors;

detecting, via the scheduler module, individual processors of the heterogenous group of processors based at least in part on the load data;

wherein the determination of the distribution of the computing unit source code to the heterogenous group of processors is based at least in part on one or more of the load data, the determination of the thermal level, and the determination of the current power source and/or a battery charge level,

wherein the providing of the first binary version of the computing unit source code and the first context data to the first processor and the second binary version of the computing unit source code and the second context data to the second processor comprises:

launching, via the scheduler module, a dispatch module associated with the scheduler module;

determining, via the dispatch module, when one of the first processor and/or second processors become available based at least in part on load data from the heterogenous group of processors, wherein the load data indicates available load for individual processors; and

providing the first binary version of the computing unit source code and the first context data to the first processor and the second binary version of the computing unit source code and the second context data to the second processor via the dispatch module in response to the first processor and/or second processors becoming available.

12. An apparatus comprising:

a heterogenous group of processors;

one or more memory storages communicatively coupled to the heterogenous group of processors; and

a scheduling component of a processor of the heterogenous group of processors to:

initiate a request for scheduling processing of a plurality of computing units and context data associated with the active application, wherein the request for scheduling is provided to a scheduler module and comprises computing unit source code and context data associated with the source code, wherein the context data is part of data that is transferred from a memory of one or more memory stores to a heterogenous group of processes, wherein the data includes the source code associated with an active application;

obtain thermal data or power supply data associated with a computing device; and

determine the distribution of the computing unit source code and context data to the heterogenous group of processors depending on one or more of the thermal data and the power supply data, wherein the heterogenous group of processors comprises at least a first processor and a second processor, wherein the second processor is of a different type than the first processor, wherein a first binary version and a second binary version of the computing unit source code and the context data are provided to the first processor and the second processor, respectively, such that the computing unit source code and the context data from a single computing unit is distributed to the first and second processors of different types, wherein the first binary version and the second binary version of the computing unit source code are compiled just-in-time, wherein the first binary version of the computing unit source code is compatible with the first processor and the second binary version of the computing unit source code is compatible with the second processor, wherein overhead associated with the just-in-time compilation is reduced using a just-in-time binary cache.

13. The apparatus of claim 12 , wherein the scheduling component has the at least one of thermal and power supply data transferred to the scheduler module in response to a request for scheduling by the active application.

14. The apparatus of claim 12 , wherein the scheduling component is further to:

receive load data from the heterogenous group of processors, wherein the load data indicates available load for individual processors; and

detect individual processors of the heterogenous group of processors based at least in part on the load data.

15. The apparatus of claim 12 , wherein the scheduling component is further to:

receive load data from the heterogenous group of processors, wherein the load data indicates available load for individual processors; and

wherein the determination of the distribution of the computing unit source code to the heterogenous group of processors is based at least in part on the load data.

16. The apparatus of claim 12 , wherein the scheduling component is further to:

obtain thermal data associated with the computing device;

determine a thermal level based at least in part on the thermal data; and

wherein the determination of the distribution of the computing unit source code to the heterogenous group of processors is based at least in part on the determination of the thermal level.

17. The apparatus of claim 12 , wherein the scheduling component is further to:

obtain, power supply data associated with the computing device;

determine a current power source and/or a battery charge level based at least in part on the power supply data; and

wherein the determination of the distribution of the computing unit source code to the heterogenous group of processors is based at least in part on the determination of the current power source and/or a battery charge level.

18. The apparatus of claim 12 , wherein the scheduling component is further to:

compile the first binary version and the second binary version of the computing unit source code, wherein the first binary version of the computing unit source code is compatible with the first processor and the second binary version of the computing unit source code is compatible with the second processor.

19. The apparatus of claim 18 , wherein the scheduling component is further to:

launch a dispatch module associated with the scheduler module;

determine, when one of the first processor and/or second processors become available based at least in part on load data from the heterogenous group of processors, wherein the load data indicates available load for individual processors; and

provide the first binary version of the computing unit source code and the first context data to the first process or and the second binary version of the computing unit source code and the second context data to the second processor via the dispatch module in response to the first processor and/or second processors becoming available.

20. The apparatus of claim 12 , wherein the heterogenous group of processors comprises at least a first processor and a second processor, wherein the second processor is of a different type than the first processor, and the scheduling component is further to:

load the computing unit source code, wherein the computing unit source code comprises an individual computing unit selected from the plurality of computing units that comprise the active application;

create a thread context array based at least in part on the computing unit source code, wherein the thread context array comprises the first and second context;

obtain thermal data associated with the computing device;

determine a thermal level based at least in part on the thermal data;

provide power supply data associated with the computing device;

determine a current power source and/or a battery charge level based at least in part on the power supply data;

obtain, load data from the heterogenous group of processors, wherein the load data indicates available load for individual processors;

detect individual processors of the heterogenous group of processors based at least in part on the load data;

wherein the determination of the distribution of the computing unit source code to the heterogenous group of processors is based at least in part on one or more of the load data, the determination of the thermal level, and the determination of the current power source and/or a battery charge level,

wherein the providing of the first binary version of the computing unit source code and the first context data to the first processor and the second binary version of the computing unit source code and the second context data to the second processor comprises:

launch a dispatch module associated with the scheduler module;

determine when one of the first processor and/or second processors become available based at least in part on load data from the heterogenous group of processors, wherein the load data indicates available load for individual processors; and

providing the first binary version of the computing unit source code and the first context data to the first processor and the second binary version of the computing unit source code and the second context data to the second processor via the dispatch module in response to the first processor and/or second processors becoming available.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 15, 2022
From: INTEL CORPORATION
To: TAHOE RESEARCH, LTD.
Reel/Frame 061175/0176 →
Continuity (2)
Continuation 13977315
Related Publication 20160239351A1 · Aug 18, 2016