IP Library Granted Patent US 10,203,747
Granted Patent B2
US 10,203,747 · App. 15/077,635 · Granted Feb 12, 2019

Workload placement based on heterogeneous compute performance per watt

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 10,203,747
App. No.
15/077,635
Granted
Feb 12, 2019
Kind
B2
Abstract

An apparatus for selecting a function includes a comparison module that compares energy consumption characteristics of a plurality of processors available for execution of a function, where each energy consumption characteristic varies as a function of function size. The apparatus includes a selection module that selects, based on the size of the function, a processor from the plurality of processors with a lowest energy consumption for execution of the function. The apparatus includes an execution module that executes the function on the selected processor.

Claims (53)

1. An apparatus comprising:

an intercept module that intercepts a static function call from an executing application, the static function call specifying a target function and specifying a target processor from a plurality of processors;

a comparison module that compares energy consumption characteristics of a plurality of processors available for execution of the target function or a substitute function in response to the intercept module intercepting the static function call, wherein each energy consumption characteristic varies as a function of function size;

a selection module that selects, based on the size of the function, a processor with a lowest energy consumption from the plurality of processors available, the selected processor being different than the target processor, wherein the selection module selects a substitute function associated with the selected processor, the selected function being different than the target function; and

an execution module that reroutes the static function call to execute the selected function on the selected processor.

2. The apparatus of claim 1 , further comprising an efficiency module that determines the energy consumption characteristic of each of the plurality of processors.

3. The apparatus of claim 2 , wherein the efficiency module determines the energy consumption characteristic of each of the plurality of processors based on one or more of:

information supplied with the function;

information from a vendor; and

function execution data from previously executed functions.

4. The apparatus of claim 3 , further comprising:

an energy calculation module that calculates energy consumption of an executed function executed on a processor of the plurality of processors; and

a correlation module that correlates a size of each executed function to energy consumed during execution of the function to determine the energy consumption characteristic of the processor.

5. The apparatus of claim 3 , further comprising an update module that updates an initial energy consumption characteristic of a processor based on the function execution data from the previously executed functions.

6. The apparatus of claim 1 , further comprising a function size module that determines a size of the function.

7. The apparatus of claim 6 , wherein the function size module determines the size of the function based on one or more of:

a size of input data of the function;

a number of operations to be performed in executing the function;

a number of times one or more functions are called during execution of the function; and

a number of items searched for during execution of the function.

8. The apparatus of claim 1 , wherein the energy consumption characteristic of a processor of the plurality of processors comprises a startup cost and energy usage as a function of function size.

9. The apparatus of claim 8 , wherein the startup cost comprises an amount of energy to bring the processor to a state ready to execute the function.

10. The apparatus of claim 8 , further comprising a startup module that determines a current state of the processor and that adjusts the startup cost for the processor based the current condition of the processor.

11. The apparatus of claim 1 , wherein the selection module selects a substitute function from a plurality of available functions to execute the static function call, each substitute function associated with a separate processor.

12. The apparatus of claim 1 , wherein the processors associated with the plurality of libraries comprise one or more of a field-programmable gate array (“FPGA”), a graphics processing unit (“GPU”), an accelerated processing unit (“APU”), a central processing unit (“CPU”), a digital signal processor (“DSP”) and a processor of a computing device different from a computing device executing the application.

13. The apparatus of claim 1 , further comprising a computing device comprising at least a processor and a memory that stores said modules for execution on the processor and one or more alternate processors.

14. A method comprising:

intercepting a static function call from an executing application, the static function call specifying a target function, the target function and specifying a target processor from a plurality of processors;

comparing energy consumption characteristics of a plurality of processors available for execution of the target function or a substitute function, wherein each energy consumption characteristic varies as a function of function size;

selecting, based on the size of the function, a processor with a lowest energy consumption from the plurality of processors available, the selected processor being different than the target processor;

selecting a substitute function associated with the selected processor, the selected function being different than the target function; and

rerouting the static function call to execute the selected function on the selected processor.

15. The method of claim 14 , further comprising determining the energy consumption characteristic of each of the plurality of processors.

16. The method of claim 15 , wherein determining the energy consumption characteristic is based on one or more of:

information supplied with the function;

information from a vendor associated with the processor; and

function execution data from previously executed functions.

17. The method of claim 16 , further comprising:

calculating energy consumption of an executed function executed on a processor of the plurality of processors;

correlating a size of each executed function to energy consumed during execution of the function to determine the energy consumption characteristic of the processor; and

updating an initial energy consumption characteristic of a processor based on the function execution data from the previously executed functions.

18. The method of claim 14 , wherein the energy consumption characteristic of a processor of the plurality of processors comprises a startup cost and energy usage as a function of function size, the startup cost comprising an amount of energy to bring the processor to a state ready to execute the function, and further comprising determining a current state of the processor and adjusting the startup cost for the processor based the current condition of the processor.

19. A program product comprising a computer readable storage medium that stores code executable by a processor, the executable code comprising code to perform:

intercepting a static function call from an executing application, the static function call specifying a target function and specifying a target processor, wherein the target processor is selected from a plurality of processors;

comparing energy consumption characteristics of a plurality of processors available for execution of the target function or a substitute function, wherein each energy consumption characteristic varies as a function of function size;

selecting, based on the size of the function, a processor with a lowest energy consumption from the plurality of processors available, the selected processor being different than the target processor;

selecting a substitute function associated with the selected processor, the selected function being different than the target function; and

rerouting the static function call to execute the selected function on the selected processor.

20. The program product of claim 19 , the code further comprising:

determining the energy consumption characteristic of each of the plurality of processors, wherein determining the energy consumption characteristic is based on one or more of information supplied with the function, information from a vendor associated with the processor, and function execution data from previously executed functions;

calculating energy consumption of an executed function executed on a processor of the plurality of processors;

correlating a size of each executed function to energy consumed during execution of the function to determine the energy consumption characteristic of the processor; and

updating an initial energy consumption characteristic of a processor based on the function execution data from the previously executed functions, wherein the energy consumption characteristic of a processor of the plurality of processors comprises a startup cost and energy usage as a function of function size, the startup cost comprising an amount of energy to bring the processor to a state ready to execute the function.

Assignments (3)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 10, 2025
From: LENOVO GLOBAL TECHNOLOGIES INTERNATIONAL LIMITED
To: LENOVO GLOBAL TECHNOLOGIES SWITZERLAND INTERNATIONAL GMBH
Reel/Frame 069869/0614 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 24, 2019
From: LENOVO ENTERPRISE SOLUTIONS (SINGAPORE) PTE LTD
To: LENOVO GLOBAL TECHNOLOGIES INTERNATIONAL LTD
Reel/Frame 049855/0094 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 22, 2016
From: NICHOLSON, JOHN W.; VANOVER, MICHAEL T.; ZHANG, JIANBANG; MATTESON, JASON A.
To: LENOVO ENTERPRISE SOLUTIONS (SINGAPORE) PTE. LTD.
Reel/Frame 038072/0928 →