IP Library Granted Patent US 8,627,300
Granted Patent B2
US 8,627,300 · App. 12/578,295 · Granted Jan 7, 2014

Parallel dynamic optimization

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,627,300
App. No.
12/578,295
Granted
Jan 7, 2014
Kind
B2
Abstract

Technologies are generally described for parallel dynamic optimization using multicore processors. A runtime compiler may be adapted to generate multiple instances of executable code from a portable intermediate software module. The various instances of executable code may be generated with variations of optimization parameters such that the code instances each express different optimization attempts. A multicore processor may be leveraged to simultaneously execute some, or all, of the various code instances. Preferred optimization parameters may be determined from the executable code instances that may correctly complete in the least time, or may use the least amount of memory, or that may prove superior according to some other fitness metric. Preferred optimization parameters may be used to seed future optimization attempts. Output generated from the preferred instances may be used as soon as the first instance correctly completes block.

Claims (48)

1. A computer-implemented method for parallel dynamic optimization of a portable intermediate software module, the method comprising:

sequentially generating

a first instance of executable code from the portable intermediate software module, the first instance generated using a first set of values as optimization parameters, and

a second instance of executable code from the portable intermediate software module, the second instance generated using a second set of values as optimization parameters wherein the second set of values varied from the first set of values;

executing substantially in parallel

the first instance of executable code on a first processor core of a multicore processor, and

the second instance of executable code on a second processor core of the multicore processor; and

identifying a preferred instance of executable code executing on one of the first processor core and the second processor core of the multicore processor based on a highest ranked fitness metric from ranking fitness metrics evaluated for the first instance of executable code while executing on the first processor core of the multicore processor, and fitness metrics evaluated for the second instance of executable code while executing on the second processor core of the multicore processor.

2. The computer-implemented method of claim 1 , further comprising:

selecting the preferred instance of executable code executing on one of the first processor core or the second processor core of the multicore processor associated with the highest ranked fitness metric.

3. The computer-implemented method of claim 1 , further comprising:

sequentially generating additional instances of executable code each using different values for the optimization parameters based upon optimization parameters associated with the preferred instance of executable code executing on one of the first processor core and the second processor core of the multicore processor.

4. The computer-implemented method of claim 1 , further comprising storing an optimization parameter record in association with the portable intermediate software module, the optimization parameter record comprising optimization parameters associated with the preferred instance of executable code executing on one of the first processor core and the second processor core of the multicore processor.

5. The computer-implemented method of claim 1 , wherein the fitness metrics correspond to one or more of an execution time on one of the first processor core and the second processor core of the multicore processor, a memory usage of the executable code on a processor core of the multicore processor, or a power consumption of the executable code on a processor core of the multicore processor.

6. The computer-implemented method of claim 1 , wherein the optimization parameters comprise:

one or more of a block size associated with memory usage of the executable code on one of the first processor core and the second processor core of the multicore processor;

a total memory usage of the executable code on one of the first processor core and the second processor core of the multicore processor;

a power consumption associated with processing executable code on one of the first processor core and the second processor core of the multicore processor; and

an execution time associated with processing executable code on one of the first processor core and the second processor core of the multicore processor.

7. The computer-implemented method of claim 1 , wherein substantially in parallel comprises having some overlap in time.

8. A non-transitory computer storage medium having computer-executable instructions stored thereon for a method which, when executed by a computer having a multicore processor performs parallel dynamic optimization of a portable intermediate software module, the method comprising:

determining optimization parameters to be explored for the optimized execution of the portable intermediate software module;

sequentially generating multiple instances of executable code from the portable intermediate software module, each of the sequentially generated multiple instances generated using different values for the optimization parameters;

executing substantially in parallel two or more of the multiple instances of executable code on different processor cores of the multicore processor; and

identifying a preferred instance of executable code executing on a respective core of the multicore processor based on a highest ranked fitness metric from ranking fitness metrics evaluated for each of the two or more of the multiple instances of executable code executing substantially in parallel on the respective cores of the multicore processor.

9. The non-transitory computer storage medium of claim 8 , wherein the preferred instance of executable code is associated with the highest ranked fitness metric.

10. The non-transitory computer storage medium of claim 9 , the method further comprising sequentially generating additional instances of executable code each using different values for the optimization parameters based upon optimization parameters associated with the preferred instance of executable code executing on the respective core of the multicore processor.

11. The non-transitory computer storage medium of claim 8 , wherein each fitness metric associated with the respective one of the multiple instances of executable code corresponds to one or more of

a measure of the execution time on a processor core of the multicore processor,

a measure of memory usage of the executable code on a processor core of the multicore processor, or

a measure of energy resources consumed during an execution time

of the respective ones of the multiple instances of executable code on a processor core of the multicore processor.

12. The non-transitory computer storage medium of claim 8 , wherein substantially in parallel comprises concurrently, overlapping in time, or partially overlapping in time.

13. A multicore computing system comprising:

a multicore processing unit having a plurality of cores; and

a runtime module configured to

receive a portable intermediate software module,

sequentially generate multiple instances of executable code from the portable intermediate software module, each of the sequentially generated instances having different optimization settings associated therewith,

execute substantially in parallel each of the sequentially generated multiple instances of executable code on different ones of the plurality of cores of the multicore processing unit, and

identify a preferred instance of the sequentially generated multiple instances of executable code executing on respective cores of the multicore processing unit based on a highest ranked fitness metric from ranking fitness metrics evaluated for each of the sequentially generated multiple instances of executable code executing on the different ones of the plurality of cores of the multicore processing unit.

14. The multicore computing system of claim 13 , wherein the runtime module is further configured to:

identify the highest ranked fitness metric.

15. The multicore computing system of claim 14 , wherein the runtime module is further configured to iterate the sequential generation of multiple instances of executable code using optimization settings varied from the optimization settings associated with the preferred instance of executable code executing on the respective processor core of the multicore processing unit from the previous iteration.

16. The multicore computing system of claim 13 , wherein the multiple instances of sequentially generated executable code are generated in a quantity related to the number of available cores within the multicore processing unit.

17. The multicore computing system of claim 14 , wherein the runtime module is further configured to store the optimization settings associated with the preferred instance of executable code executing on the respective processor core of the multicore processing unit for association with the portable intermediate software module.

18. The multicore computing system of claim 13 , wherein values for the optimization settings are initially determined from a default set of values.

19. The multicore computing system of claim 18 , wherein the default set of values are received with the portable intermediate software module.

20. The multicore computing system of claim 13 , wherein substantially in parallel comprises concurrently, overlapping in time, or partially overlapping in time.

Assignments (6)
RELEASE OF SECURITY INTEREST IN PATENTS, RECORDED ON JANUARY 29, 2019 AT REEL 048373 FRAME 0217 Recorded Sep 22, 2025
From: CRESTLINE DIRECT FINANCE, L.P., AS COLLATERAL AGENT
To: EMPIRE TECHNOLOGY DEVELOPMENT LLC
Reel/Frame 072936/0464 →
SECURITY INTEREST Recorded Jan 29, 2019
From: EMPIRE TECHNOLOGY DEVELOPMENT LLC
To: CRESTLINE DIRECT FINANCE, L.P.
Reel/Frame 048373/0217 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 23, 2012
From: GLITTER TECHNOLOGY LLP
To: INTELLECTUAL VENTURES ASIA PTE. LTD.
Reel/Frame 027914/0391 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 23, 2012
From: INTELLECTUAL VENTURES ASIA PTE. LTD.
To: EMPIRE TECHNOLOGY DEVELOPMENT LLC
Reel/Frame 027914/0398 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 15, 2009
From: KRUGLICK, EZEKIEL
To: ARDENT RESEARCH CORPORATION
Reel/Frame 023377/0465 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 15, 2009
From: ARDENT RESEARCH CORPORATION
To: EMPIRE TECHNOLOGY DEVELOPMENT LLC
Reel/Frame 023377/0514 →