IP Library Granted Patent US 9,495,139
Granted Patent B2
US 9,495,139 · App. 13/981,164 · Granted Nov 15, 2016

Elastic computing

Inventors: Gregory Michael Stitt (Gainesville, FL); John Robert Wernsing (Gainesville, FL)
Assignee: UNIVERSITY OF FLORIDA RESEARCH FOUNDATION, INC.
G06F8/4441G06F9/4425G06F11/3452G06F17/17G06F9/505G06F9/5027G06F9/5094Y02B60/142
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,495,139
App. No.
13/981,164
Granted
Nov 15, 2016
Kind
B2
Abstract

Elastic computing is an optimization framework that combines standard application code with specialized elastic functions and corresponding optimization tools. The elastic functions provide a knowledge-base of implementation alternatives and parallelization strategies for a given function. When an application calls an elastic function, the elastic computing tools analyze available devices and resources (e.g., cores, GPUs, FPGAs, etc.) and current run-time parameters, and then transparently select from numerous pre-analyzed implementation possibilities to optimize for performance, power, energy, size, or any combination of these goals.

Claims (48)

1. A method, comprising:

providing, in at least one computing device, a plurality of different implementations of an elastic function;

obtaining, in the at least one computing device, a plan for selecting an efficient implementation of the elastic function from the plurality of different implementations of the elastic function, the plan being determined based at least in part on a performance evaluation of each of the plurality of different implementations of the elastic function for a plurality of different computing device configurations, each of the plurality of different computing device configurations specifying at least one heterogeneous resource that comprises a combination of at least two different programmable hardware components, each of the at least two different programmable hardware components having a different hardware architecture, the performance evaluation being determined by:

executing one of the plurality of different implementations for a first subset of a plurality of input parameters to generate a plurality of samples, each of the plurality of samples includes a resulting execution time;

generating interpolation data for a second subset of the plurality of input parameters based at least upon the resulting execution time for the plurality of samples and a predefined accuracy requirement associated with the plurality of samples, the interpolation data comprising a plurality of linear trends that satisfy the predefined accuracy requirement;

selecting a subset of the interpolation data to generate an implementation performance graph that provides an estimated execution time for the plurality of input parameters for the one of the plurality of different implementations, wherein the selection of the subset of interpolation is based at least in part on which portion of the interpolation data uses a least number of the plurality of linear trends to represent a range of possible combinations of the plurality of input parameters for the one of the plurality of different implementations;

executing, in the at least one computing device, an application that calls the elastic function; and

selecting, in the at least one computing device, a selected implementation of the different implementations of the elastic function during execution of the application based at least in part on the plan and a current computing device configuration.

2. The method of claim 1 , wherein the selected implementation is selected based at least in part on at least one input parameter to the elastic function.

3. The method of claim 1 , wherein the application is configured to provide at least one usage assumption to the elastic function, and the selected implementation is selected for execution based at least in part on the at least one usage assumption.

4. The method of claim 1 , wherein at least some of the plurality of different implementations relate to different algorithms for performing the elastic function.

5. The method of claim 1 , wherein the elastic function performs sorting.

6. The method of claim 1 , wherein at least one of the plurality of different implementations of the elastic function is dependent on another elastic function.

7. The method of claim 1 , wherein the at least one computing device includes at least one field-programmable gate array (FPGA), and the plan specifies an efficient one of the different implementations of the elastic function for execution in the at least one FPGA.

8. The method of claim 1 , wherein the at least one computing device includes at least one graphics processing unit (GPU), and the plan specifies an efficient one of the different implementations of the elastic function for execution in the at least one GPU.

9. The method of claim 1 , wherein the at least one computing device includes at least one multi-core central processing unit (CPU), and the plan specifies an efficient one of the different implementations of the elastic function for execution in the at least one multi-core CPU.

10. The method of claim 1 , wherein the selecting, in the at least one computing device, of the selected implementation is performed at a run-time of the application.

11. The method of claim 1 , further comprising generating, in the at least one computing device, the plan prior to a run-time of the application.

12. The method of claim 1 , further comprising executing, in the at least one computing device, the selected implementation one of the different implementations of the elastic function.

13. The method of claim 1 , further comprising:

selecting, in the at least one computing device, another one of the plurality of different implementations of the elastic function for use in the execution of the application according to the plan and a changed current computing device configuration; and

executing, in the at least one computing device, the other one of the plurality of different implementations of the elastic function.

14. A non-transitory computer-readable medium embodying at least one program executable in a computing device that, when executed, causes the computing device to:

identify a plurality of different implementations of an elastic function;

generate a performance evaluation of each of the plurality of different implementations of the elastic function for a plurality of different computing device configurations, each of the plurality of different computing device configurations specifying at least one heterogeneous resource that comprises a combination of at least two different programmable hardware components, each of the at least two different programmable hardware components having a different hardware architecture and at least one of the at least two different programmable hardware components comprising at least one of a field-programmable gate array (FPGA) or a graphics processing unit (GPU), the performance evaluation being determined by:

executing one of the plurality of different implementations for a first subset of a plurality of input parameters to generate a plurality of samples, each of the plurality of samples including a resulting execution time;

generating interpolation data for a second subset of the plurality of input parameters based at least in part on the resulting execution time for the plurality of samples and a predefined accuracy requirement associated with the plurality of samples, the interpolation data comprising a plurality of linear trends that satisfy the predefined accuracy requirement;

selecting a subset of the interpolation data to generate an implementation performance graph that provides an estimated execution time for the plurality of input parameters for the one of the plurality of different implementations, wherein the selection of the subset of interpolation data is based at least in part on which portion of the interpolation data uses a least number of the plurality of linear trends to represent a range of possible combinations of the plurality of input parameters for the one of the plurality of different implementations;

generate a plan for selecting an efficient implementation of the elastic function from the plurality of different implementations of the elastic function, the plan being generated based at least in part on an analysis of the performance evaluation generated for each of the plurality of different implementations of the elastic function, the analysis comprising data associated with at least one metric for load balancing and parallelizing the elastic function across the at least one heterogeneous resource;

select a selected implementation one of the plurality of different implementations of the elastic function to execute an application based at least in part on the plan and a current computing device configuration; and

execute the application by implementing the selected implementation, wherein implementing the selected implementation causes work to be distributed within the at least one heterogeneous resource in accordance with the plan.

15. The non-transitory computer-readable medium of claim 1 , wherein at least one of the plurality of different implementations of the elastic function is dependent on another elastic function.

16. The non-transitory computer-readable medium of claim 1 , wherein the estimated execution time is further determined by mapping a combination of the plurality of input parameters to a work metric, wherein the work metric comprises a floating-point quantity that presents an execution time required to perform the elastic function based on the combination of the plurality of input parameters.

17. The non-transitory computer-readable medium of claim 1 , wherein generating the interpolation data further comprises grouping the plurality of samples into a plurality of interval sample segments, wherein one of the plurality of linear trends represents one of the plurality of interval sample segments.

18. A system, comprising:

at least one computing device;

an implementation assessment tool executable by at least one processor in the at least one computing device, the implementation assessment tool, when executed, causes the at least one computing device to:

generate a performance assessment for each of a plurality of different implementations of an elastic function for a plurality of different computing device configurations, each of the plurality of different computing device configurations specifying at least one heterogeneous resource that comprises a combination of at least two different programmable hardware components, each of the at least two different programmable hardware components having a different hardware architecture, the performance assessment being determined by:

executing one of the plurality of different implementations for a first subset of a plurality of input parameters to generate a plurality of samples, each of the plurality of samples includes a resulting execution time:

generating interpolation data for a second subset of the plurality of input parameters based at least upon the resulting execution time for the plurality of samples and a predefined accuracy requirement associated with the plurality of samples, the interpolation data comprising a plurality of linear trends that satisfy the predefined accuracy requirement;

selecting a subset of the interpolation data to generate an implementation performance graph that provides an estimated execution time for the plurality of input parameters for the one of the plurality of different implementations, wherein the selection of the subset is based at least in part on which portion of the interpolation data uses a least number of the plurality of linear trends to represent a range of possible combinations of the plurality of input parameters for the one of the plurality of different implementations;

an optimization planning tool executable by at least one processor in the at least one computing device, the optimization planning tool, when executed, causes the at least one computing device to:

determine a plan for selecting an efficient implementation of the elastic function from the plurality of different implementations of the elastic function based at least in part on an analysis of the performance assessment generated for each of the plurality of different implementations of the elastic function, the analysis comprising data associated with at least one metric for load balancing and parallelizing work associated with the elastic function across the at least one heterogeneous resource; and

a function execution tool executable by at least one processor in the at least one computing device, the function execution tool, when executed, causes the at least one computing device to:

select a selected implementation one of the plurality of different implementations of the elastic function during execution of an application based at least in part on the plan and a current computing device configuration.

19. The system of claim 18 , wherein a combination of the plurality of input parameters are mapped to one of a plurality of different work metrics wherein at least one work metric among the plurality of different work metrics is a floating-point quantity that generically represents an amount of work required to perform the elastic function.

20. The system of claim 18 , wherein the optimization planning tool is configured to perform fastest implementation planning for the elastic function, and the optimization planning tool further causes the at least one computing device to generate a function performance graph based at least in part on a plurality of implementation performance graphs generated by the implementation assessment tool.

21. The system of claim 18 , wherein the optimization planning tool is configured to perform work parallelization planning for the elastic function, and the optimization planning tool further causes the at least one computing device to generate a work parallelization graph based at least in part on a plurality of function performance graphs corresponding to a plurality of instances of the elastic function executing on a plurality of parallel resources of the at least one computing device.

Assignments (2)
CONFIRMATORY LICENSE Recorded Apr 22, 2015
From: UNIVERSITY OF FLORIDA
To: NATIONAL SCIENCE FOUNDATION
Reel/Frame 035475/0912 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 23, 2013
From: STITT, GREGORY MICHAEL; WERNSING, JOHN ROBERT
To: UNIVERSITY OF FLORIDA RESEARCH FOUNDATION, INC.
Reel/Frame 030856/0861 →
Continuity (2)
Provisional Application 61474020 · Apr 11, 2011
Related Publication 20140026111A1 · Jan 23, 2014