IP Library Granted Patent US 9,027,007
Granted Patent B2
US 9,027,007 · App. 13/787,485 · Granted May 5, 2015

Reducing excessive compilation times

Inventors: David Samuel Brackman (San Diego, CA); Chu-Cheow Lim (San Jose, CA)
Assignee: QUALCOMM Incorporated
G06F8/443G06F8/41
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,027,007
App. No.
13/787,485
Granted
May 5, 2015
Kind
B2
Abstract

In one example, a device includes one or more processors configured to determine an allocated time for execution of an optimization pass for optimizing code for a software program, execute at least some instructions of the optimization pass on the code, and, in response to determining that an actual time for execution of the optimization pass has exceeded the allocated time for execution, preventing execution of subsequent instructions of the optimization pass.

Claims (56)

1. A method comprising:

determining, by a processor, a budget time for execution of a first optimization pass of a plurality of optimization passes for optimizing code for a software program during an optimization phase of compilation of the code;

determining, by the processor, a first actual time for execution of the first optimization pass;

determining, by the processor, an allocated time for execution of a second optimization pass of the plurality of optimization passes based at least in part on whether the first actual time for execution exceeded the budgeted time for execution of the first optimization pass, wherein the second optimization pass defines a first number of instructions;

executing, by the processor, a second number of the instructions of the second optimization pass on the code to produce optimized code from the code for the software program, wherein the second number is less than the first number;

in response to determining that an actual time for execution of the second optimization pass has exceeded the allocated time for execution, preventing, by the processor, execution of subsequent instructions of the second optimization pass; and

after preventing execution of the subsequent instructions, generating object code for the software program from the optimized code.

2. The method of claim 1 , wherein determining the allocated time comprises determining the allocated time based on at least one of a priority of the second optimization pass, an amount of time remaining in an overall optimization time budget, a power state for a device executing the second optimization pass, an importance value assigned to optimization for the program, and user preferences.

3. The method of claim 1 , further comprising adjusting allocated times for one or more subsequent optimization passes of the optimization phase based on the actual time for execution.

4. The method of claim 1 , further comprising:

determining a time budget for executing the plurality of optimization passes of the optimization phase; and

allocating portions of the time budget to the plurality of optimization passes.

5. The method of claim 1 , wherein the second optimization pass comprises a current optimization pass, the method further comprising:

prior to executing the current optimization pass:

determining a set of optimization pass configuration data for the code of the software program, wherein the optimization pass configuration data defines a sequence of optimization passes of the plurality of optimization passes for the program during the optimization phase of compilation, wherein the sequence of optimization passes includes the current optimization pass; and

determining a time budget for executing the sequence of optimization passes; and

when the current optimization pass is not the last optimization pass in the sequence and after finishing execution of the current optimization pass, executing a next optimization pass in the sequence of optimization passes based on the set of optimization pass configuration data.

6. A device comprising one or more processors configured to determine a budgeted time for execution of a first optimization pass of a plurality of optimization passes for optimizing code for a software program during an optimization phase of compilation of the code, determine a first actual time for execution of a first optimization pass of the optimization passes, determine an allocated time for execution of a second optimization pass of the plurality optimization passes based at least in part on whether the first actual time for execution exceeded the budgeted time for execution of the first optimization pass, wherein the second optimization pass defines a first number of instructions, execute a second number of the instructions of the second optimization pass on the code to produce optimized code from the code for the software program, wherein the second number is less than the first number, in response to determining that an actual time for execution of the second optimization pass has exceeded the allocated time for execution, prevent execution of subsequent instructions of the second optimization pass, and after preventing execution of the subsequent instructions, generate object code for the software program from the optimized code.

7. The device of claim 6 , wherein the one or more processors are configured to determine the allocated time based on at least one of a priority of the second optimization pass, an amount of time remaining in an overall optimization time budget, a power state for the device, an importance value assigned to optimization for the program, and user preferences.

8. The device of claim 6 , wherein the one or more processors are further configured to adjust allocated times for one or more subsequent optimization passes of the optimization phase based on the actual time for execution.

9. The device of claim 6 , wherein the one or more processors are further configured to determine a time budget for executing the plurality of optimization passes of the optimization phase, and allocate portions of the time budget to the plurality of optimization passes.

10. The device of claim 6 , wherein the second optimization pass comprises a current optimization pass, and wherein the one or more processors are further configured to, prior to executing the current optimization pass, determine a set of optimization pass configuration data for the code of the software program, wherein the optimization pass configuration data defines a sequence of optimization passes of the plurality of optimization passes for the program during the optimization phase of compilation, wherein the sequence of optimization passes includes the current optimization pass, and determine a time budget for executing the sequence of optimization passes, wherein when the current optimization pass is not the last optimization pass in the sequence and after finishing execution of the current optimization pass, the one or more processors are configured to execute a next optimization pass in the sequence of optimization passes based on the set of optimization pass configuration data.

11. The device of claim 6 , further comprising a graphics processing unit (GPU), wherein the software program comprises a shader program for the GPU, and wherein the one or more processors are configured to provide compiled code for the shader program to the GPU.

12. A device comprising:

means for determining a budgeted time for execution of a first optimization pass of a plurality of optimization passes for optimizing code for a software program during an optimization phase of compilation of the code;

means for determining a first actual time for execution of the first optimization pass;

means for determining an allocated time for execution of a second optimization pass of the plurality of optimization passes based at least in part on whether the first actual time for execution exceeded the budgeted time for execution of the first optimization pass, wherein the second optimization pass defines a first number of instructions;

means for executing a second number of the instructions of the second optimization pass on the code to produce optimized code from the code for the software program, wherein the second number is less than the first number;

means for preventing, in response to determining that an actual time for execution of the second optimization pass has exceeded the allocated time for execution, execution of subsequent instructions of the second optimization pass; and

means for generating, after preventing execution of the subsequent instructions, object code for the software program from the optimized code.

13. The device of claim 12 , wherein the means for determining the allocated time comprises means for determining the allocated time based on at least one of a priority of the second optimization pass, an amount of time remaining in an overall optimization time budget, a power state for a device executing the second optimization pass, an importance value assigned to optimization for the program, and user preferences.

14. The device of claim 12 , further comprising means for adjusting allocated times for one or more subsequent optimization passes of the optimization phase based on the actual time for execution.

15. The device of claim 12 , further comprising:

means for determining a time budget for executing the plurality of optimization passes of the optimization phase; and

means for allocating portions of the time budget to the plurality of optimization passes.

16. The device of claim 12 , wherein the second optimization pass comprises a current optimization pass, further comprising:

means for determining, prior to executing the current optimization pass, a set of optimization pass configuration data for the code of the software program, wherein the optimization pass configuration data defines a sequence of optimization passes of the plurality of optimization passes for the program during the optimization phase of compilation, wherein the sequence of optimization passes includes the current optimization pass;

means for determining a time budget for executing the sequence of optimization passes; and

means for executing, when the current optimization pass is not the last optimization pass in the sequence and after finishing execution of the current optimization pass, a next optimization pass in the sequence of optimization passes based on the set of optimization pass configuration data.

17. A non-transitory computer-readable storage medium having stored thereon instructions that, when executed, cause a processor to:

Determine a budgeted time for execution of a first optimization pass of a plurality of optimization passes for optimizing code for a software program during an optimization phase of compilation of the code;

Determine a first actual time for execution of the first optimization pass;

Determine an allocated time for execution of a second optimization pass of the plurality of optimization passes based at least in part on whether the first actual time for execution exceeded the budgeted time for execution of the first optimization pass, wherein the second optimization pass defines a first number of instructions;

execute a second number of the instructions of the second optimization pass on the code to produce optimized code from the code for the software program, wherein the second number is less than the first number;

in response to determining that an actual time for execution of the second optimization pass has exceeded the allocated time for execution, prevent execution of subsequent instructions of the second optimization pass; and

after preventing execution of the subsequent instructions, generate object code for the software program from the optimized code.

18. The computer-readable storage medium of claim 17 , wherein the instructions that cause the processor to determine the allocated time comprise instructions that cause the processor to determine the allocated time based on at least one of a priority of the second optimization pass, an amount of time remaining in an overall optimization time budget, a power state for a device executing the second optimization pass, an importance value assigned to optimization for the program, and user preferences.

19. The computer-readable storage medium of claim 17 , further comprising instructions that cause the processor to adjust allocated times for one or more subsequent optimization passes of the optimization phase based on the actual time for execution.

20. The computer-readable storage medium of claim 17 , further comprising instructions that cause the processor to:

determine a time budget for executing the plurality of optimization passes of the optimization phase; and

allocate portions of the time budget to the plurality of optimization passes.

21. The computer-readable storage medium of claim 17 , wherein the second optimization pass comprises a current optimization pass, further comprising instructions that cause the processor to:

prior to executing the current optimization pass:

determine a set of optimization pass configuration data for the code of the software program, wherein the optimization pass configuration data defines a sequence of optimization passes of the plurality of optimization passes for the program during the optimization phase of compilation, wherein the sequence of optimization passes includes the current optimization pass; and

determine a time budget for executing the sequence of optimization passes; and

when the current optimization pass is not the last optimization pass in the sequence and after finishing execution of the current optimization pass, execute a next optimization pass in the sequence of optimization passes based on the set of optimization pass configuration data.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 22, 2013
From: BRACKMAN, DAVID SAMUEL; LIM, CHU-CHEOW
To: QUALCOMM INCORPORATED
Reel/Frame 030262/0377 →
Continuity (1)
Related Publication 20140258996A1 · Sep 11, 2014