IP Library › Granted Patent US 9,477,533
Granted Patent B2
US 9,477,533 · App. 14/583,254 · Granted Oct 25, 2016

Progress meters in parallel computing

Inventors: Jonathan M. Eastep (Portland, OR); Ilya Sharapov (San Jose, CA); Rob F. Van Der Wijngaart (Sunnyvale, CA); Richard J. Greco (West Linn, OR); Steve S. Sylvester (Hillsboro, OR); David N. Lombard (Rossmoor, CA)
Assignee: Intel Corporation
G06F9/522G06F9/5094
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,477,533
App. No.
14/583,254
Granted
Oct 25, 2016
Kind
B2
Abstract

Systems and methods may provide a set of cores capable of parallel execution of threads. Each of the cores may run code that is provided with a progress meter that calculates the amount of work remaining to be performed on threads as they run on their respective cores. The data may be collected continuously, and may be used to alter the frequency, speed or other operating characteristic of the cores as well as groups of cores. The progress meters may be annotated into existing code.

Claims (44)

1. A method of controlling a computational resource, comprising:

globally synchronizing a plurality of tasks across a plurality of computational resources;

computing an amount of work to complete at least one task of the plurality of tasks;

processing the plurality of tasks in parallel to accomplish work corresponding to each task of the plurality of tasks;

repeatedly computing a work fraction that corresponds to one or more of a fraction of work completed or work remaining to be completed with respect to the amount of work to complete the at least one task of the plurality of tasks;

calculating a skew of a plurality of work fractions taken from the plurality of computational resources, wherein the skew is a variance of the work fractions divided by a mean of the work fractions; and

modifying a characteristic of at least one computational resource of the plurality of computational resources based on the work fraction and the skew.

2. The method of claim 1 , wherein the plurality of computational resources includes a plurality of cores, and wherein a frequency of at least one core of the plurality of cores is varied based on the work fraction.

3. The method of claim 1 , wherein the plurality of computational resources includes one or more of a core, a processor, a multi-core processor, a node, a cabinet, a cluster, a row, or a grid, and wherein at least a portion of the plurality of computational resources are in communication with one another.

4. The method of claim 1 , wherein the plurality of tasks includes a plurality of threads, and wherein the plurality of computational resources includes a plurality of cores.

5. The method of claim 1 , further including: reporting the work fraction by one or more of an application or an Application Programing Interface (API); and receiving an indication of the work fraction at a runtime monitor.

6. The method of claim 1 , further including modifying one or more of a number, a distribution, a speed, or a frequency of at least one of the plurality of computational resources.

7. The method of claim 1 , wherein the characteristic includes a speed, and wherein the speed of at least one computational resource of the plurality of computational resources is modified by changing an amount of electrical power provided to the at least one computation resource.

8. The method of claim 1 , wherein the plurality of computational resources incudes a plurality of nodes.

9. The method of claim 1 , further including synchronizing the plurality of tasks at a barrier, wherein each task of the plurality of tasks includes a waiting time at the barrier, and wherein the method further includes repeatedly modifying the characteristic to reduce the waiting time for the at least one task.

10. An apparatus to process tasks, comprising:

a plurality of computational resources to process a plurality of tasks in parallel, wherein the plurality of tasks are to be globally synchronized across the plurality of computational resources;

progress meter logic, implemented at least partly in fixed functionality hardware, to:

compute an amount of work to complete at least one task of the plurality of tasks; and

repeatedly compute a work fraction that is to correspond to one or more of a fraction of work completed or work remaining to be completed with respect to the amount of work to complete the at least one task;

skew calculator logic to compute a skew of a plurality of work fractions taken from the plurality of computational resources, wherein the skew is a variance of the work fractions divided by a mean of the work fractions; and

performance balancer logic, implemented at least partly in fixed functionality hardware, to modify a characteristic of at least one computational resource of the plurality of computational resources based on the work fraction and the skew.

11. The apparatus of claim 10 , wherein the plurality of computational resources is to include a plurality of cores, and wherein the performance balancer logic is to vary a frequency of at least one core of the plurality of cores based on the work fraction.

12. The apparatus of claim 10 , wherein the performance balancer logic is to vary a speed of at least one of the plurality of computational resources by varying an amount of power supplied to the at least one of the plurality of computational resources.

13. The apparatus of claim 10 , wherein the performance balancer logic is to vary a speed of at least two of the plurality of computational resources by steering power from a relatively faster one of the plurality of computational resources toward a relatively slower one of the plurality of computational resources.

14. The apparatus of claim 10 , wherein the computational resources are to include a plurality of cores, and wherein the performance balancer logic is to vary a speed of at least one of the plurality of cores by varying an amount of power provided to the at least one of the plurality of cores.

15. The apparatus of claim 10 , further including runtime monitor logic, implemented at least partly in fixed functionality hardware, to receive information from the progress meter logic that is to be indicative of the work fraction.

16. The apparatus of claim 10 , wherein the plurality of computational resources are to include one or more of a core, a processor, a multi-core processor, a node, a cabinet, a cluster, a row, or a grid, and wherein at least a portion of the plurality of computational resources are to have a communications channel there between.

17. The apparatus of claim 10 , wherein the plurality of computational resources incudes a plurality of nodes.

18. The apparatus of claim 10 , wherein the performance balancer logic is to modify one or more of a number, a distribution, a speed, or a frequency of at least one of the plurality of computational resources.

19. At least one non-transitory computer readable storage medium comprising one or more instructions that when executed on a computing device cause the computing device to:

globally synchronize a plurality of tasks across a plurality of computational resources;

compute an amount of work to complete at least one task of the plurality of tasks;

process the plurality of tasks in parallel to accomplish work corresponding to each task of the plurality of tasks;

repeatedly compute a work fraction that corresponds to one or more of a fraction of work completed or work remaining to be completed with respect to the amount of work to complete the at least one task of the plurality of tasks;

calculate a skew of a plurality of work fractions taken from the plurality of computational resources, wherein the skew is a variance of the work fractions divided by a mean of the work fractions; and

modify a characteristic of at least one computational resource of the plurality of computational resources based on the work fraction and the skew.

20. The at least one non-transitory computer readable storage medium of claim 19 , wherein the plurality of computational resources is to include a plurality of cores, and wherein the instructions, when executed on a computing device, cause the computing device to modify a frequency of at least one of the plurality of cores.

21. The at least one non-transitory computer readable storage medium of claim 19 , wherein the instructions, when executed, cause the computing device to: compute the work fraction; and

receive information from the progress meter indicative of the work fraction.

22. The at least one non-transitory computer readable storage medium of claim 19 , wherein the instructions, when executed, cause the computing device to vary a characteristic of operation of at least one computational resource of the plurality of computational resources.

23. The at least one non-transitory computer readable storage medium of claim 19 , wherein the instructions, when executed, cause the computing device to vary an amount of power provided to at least one core of the plurality of cores.

24. The at least one non-transitory computer readable storage medium of claim 19 , wherein the instructions, when executed, cause the computing device to allow the plurality of tasks to synchronize at a barrier.

25. The at least one non-transitory computer readable storage medium of claim 19 , wherein each task of the plurality of tasks includes a waiting time at the barrier, and wherein the instructions, when executed, cause the computing device to repeatedly modify the characteristic to reduce a waiting time for at least one task.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 12, 2015
From: EASTEP, JONATHAN M.; SHARAPOV, ILYA; VAN DER WIJNGAART, ROB F.; GRECO, RICHARD J.; SYLVESTER, STEVE S.; LOMBARD, DAVID N.
To: INTEL CORPORATION
Reel/Frame 037021/0244 →
Continuity (1)
Related Publication 20160188380A1 · Jun 30, 2016