IP Library Granted Patent US 8,549,499
Granted Patent B1
US 8,549,499 · App. 11/812,368 · Granted Oct 1, 2013

Parallel programming using possible parallel regions and its language profiling compiler, run-time system and debugging support

Inventors: Chen Ding (Rochester, NY); Xipeng Shen (Williamsburg, VA); Ruke Huang (Edmonds, WA)
Assignee: University of Rochester
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 8,549,499
App. No.
11/812,368
Granted
Oct 1, 2013
Kind
B1
Abstract

A method of dynamic parallelization for programs in systems having at least two processors includes examining computer code of a program to be performed by the system, determining a largest possible parallel region in the computer code, classifying data to be used by the program based on a usage pattern and initiating multiple, concurrent processes to perform the program. The multiple, concurrent processes ensure a baseline performance that is at least as efficient as a sequential performance of the computer code.

Claims (46)

1. A method of dynamic parallelization for programs in systems having at least two processors, the method comprising the steps of:

examining computer code of a program to be performed by the system;

determining a largest possible parallel region in the computer code using profiling to identify a high-level phase structure of the program and using dependence profiling to find a phase with a largest portion of run-time instructions that can be executed in parallel, wherein the profiling and dependence profiling include examining both the computer code and at least one training execution of the computer code;

classifying data to be used by the program based on a usage pattern obtained during the profiling; and

initiating multiple, concurrent processes to perform the program, the multiple concurrent processes comprising a lead process executing the program non-speculatively, an understudy process executing the program non-speculatively and providing correct processing when a speculation process fails, and each speculation process executing at least a portion of the program speculatively in parallel with the lead and understudy processes and providing faster processing than the lead and understudy processes when the speculation process does not fail;

wherein the multiple, concurrent processes ensure a baseline performance that is at least as efficient as a sequential performance of the computer code.

2. A method of dynamic parallelization for programs according to claim 1 , wherein the step of classifying data comprises classifying data as either shared data, checked data or private data.

3. A method of dynamic parallelization for programs according to claim 1 , wherein the method improves performance of the computer code by integer factors when compared to the sequential performance of the computer code.

4. A method of dynamic parallelization for programs according to claim 1 , wherein the computer code was written to be run on systems having a single processor.

5. A method of dynamic parallelization for programs according to claim 1 , wherein the examining, determining and classifying steps are performed through examination of a portion of the total computer code.

6. A method of dynamic parallelization for programs according to claim 1 , wherein the method is performed in a step-by-step fashion to allow a programmer to discover hidden dependencies preventing successful parallel execution of multiple, concurrent processes.

7. A method of dynamic parallelization for programs according to claim 1 , further comprising:

displaying to a user markers of programmable hints of possible parallel regions of computer code; and

after performing the program, displaying to the user indications of conflicting memory access.

8. A method of dynamic parallelization for programs according to claim 1 , wherein the classifying step further comprises performing value-based correctness checking to permit parallel execution in the presence of true dependencies.

9. A computer program product, embodied on a non-transitory computer-readable medium, having instructions to perform steps comprising:

examining computer code of a program to be performed by a system having at least two processors;

determining a largest possible parallel region in the computer code using profiling to identify a high-level phase structure of the program and using dependence profiling to find a phase with a largest portion of run-time instructions that can be executed in parallel, wherein the profiling and dependence profiling include examining both the computer code and at least one training execution of the computer code;

classifying data to be used by the program based on a usage pattern obtained during the profiling; and

initiating multiple, concurrent processes to perform the program, the multiple concurrent processes comprising a lead process executing the program non-speculatively, an understudy process executing the program non-speculatively and providing correct processing when a speculation process fails, and each speculation process executing at least a portion of the program speculatively in parallel with the lead and understudy processes and providing faster processing than the lead and understudy processes when the speculation process does not fail;

wherein the multiple, concurrent processes ensure a baseline performance that is at least as efficient as a sequential performance of the computer code.

10. A computer program product according to claim 9 , wherein the instructions for classifying data comprises instructions for classifying data as either shared data, checked data or private data.

11. A computer program product according to claim 9 , wherein the instructions improve performance of the computer code by integer factors when compared to the sequential performance of the computer code.

12. A computer program product according to claim 9 , wherein the computer code was written to be run on systems having a single processor.

13. A computer program product according to claim 9 , wherein the instructions for examining, determining and classifying steps are performed through examination of a portion of the total computer code.

14. A computer program product according to claim 9 , wherein the instructions cause the steps to be performed in a step-by-step fashion to allow a programmer to discover hidden dependencies preventing successful parallel execution from the multiple, concurrent processes.

15. A computer program product according to claim 9 , further comprising instructions to perform steps comprising:

displaying to a user markers of programmable hints of possible parallel regions of computer code; and

after performing the program, displaying to the user indications of conflicting memory access.

16. A computer program product according to claim 9 , wherein instructions to perform the classifying step further comprise instructions to perform value-based correctness checking to permit parallel execution in the presence of true dependencies.

17. A compiling system comprising at least one processor, memory, and computer program code for performing dynamic parallelization for programs in computing systems having at least two processors, comprising:

means for examining computer code of a program to be performed by a computing system having at least two processors;

means for determining a largest possible parallel region in the computer code using profiling to identify a high-level phase structure of the program and using dependence profiling to find a phase with a largest portion of run-time instructions that can be executed in parallel, wherein the profiling and dependence profiling include examining both the computer code and at least one training execution of the computer code;

means for classifying data to be used by the program based on a usage pattern obtained during the profiling; and

means for initiating multiple, concurrent processes to perform the program, the multiple concurrent processes comprising a lead process executing the program non-speculatively, an understudy process executing the program non-speculatively and providing correct processing when a speculation process fails, and each speculation process executing at least a portion of the program speculatively in parallel with the lead and understudy processes and providing faster processing than the lead and understudy processes when the speculation process does not fail;

wherein the multiple, concurrent processes ensure a baseline performance that is at least as efficient as a sequential performance of the computer code.

18. A compiling system according to claim 17 , wherein the means for classifying data comprises means for classifying data as either shared data, checked data or private data.

19. A compiling system according to claim 17 , wherein the compiling system is configured to improve performance of the computer code by integer factors when compared to the sequential performance of the computer code.

20. A compiling system according to claim 17 , wherein the computer code was written to be run on systems having a single processor.

21. A compiling system according to claim 17 , wherein the means for examining, the means for determining and the means for classifying are configured to perform their functions through examination of a portion of the total computer code.

22. A compiling system according to claim 17 , wherein the compiling system is configured to perform such that a programmer running the compiling system can discover hidden dependencies preventing the successful parallel execution from multiple, concurrent processes.

23. A compiling system according to claim 17 , further comprising:

means for displaying to a user markers of programmable hints of possible parallel regions of computer code; and

means for after performing the program, displaying to the user indications of conflicting memory access.

24. A compiling system according to claim 17 , further comprising:

means to perform value-based correctness checking to permit parallel execution in the presence of true dependencies.

Assignments (4)
CONFIRMATORY LICENSE Recorded Jun 1, 2016
From: UNIVERSITY OF ROCHESTER
To: NATIONAL SCIENCE FOUNDATION
Reel/Frame 038852/0826 →
CONFIRMATORY LICENSE Recorded May 9, 2016
From: UNIVERSITY OF ROCHESTER
To: NATIONAL INSTITUTES OF HEALTH - DIRECTOR DEITR
Reel/Frame 038642/0577 →
CONFIRMATORY LICENSE Recorded May 5, 2016
From: UNIVERSITY OF ROCHESTER
To: NATIONAL INSTITUTES OF HEALTH - DIRECTOR DEITR
Reel/Frame 038612/0704 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 18, 2012
From: DING, CHEN; SHEN, XIPENG; HUANG, RUKE
To: UNIVERSITY OF ROCHESTER
Reel/Frame 028574/0137 →
Continuity (1)
Provisional Application 60814065 · Jun 16, 2006