IP Library › Granted Patent US 10,417,052
Granted Patent B2
US 10,417,052 · App. 15/522,354 · Granted Sep 17, 2019

Integrated heterogeneous processing units

Inventors: Yuan Chen (Sunnyvale, CA); Vanish Talwar (Campbell, CA); Naila Farooqui (Palo Alto, CA); Indrajit Roy (Palo Alto, CA)
Assignee: HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP
G06F9/5044G06F9/3877G06F9/5033G06F11/3466G06F11/3644G06F9/4881G06F2212/2542Y02D10/22
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,417,052
App. No.
15/522,354
Granted
Sep 17, 2019
Kind
B2
Abstract

According to an example, an instruction to run a kernel of an application on an apparatus having a first processing unit integrated with a second processing unit may be received. In addition, an application profile for the application at a runtime of the application kernel on the second processing unit may be created, in which the application profile identifies an affinity of the application kernel to be run on either the first processing unit or the second processing unit, and identifies a characterization of an input data set of the application. The application profile may also be stored in a data store.

Claims (42)

1. A method for managing an apparatus having integrated heterogeneous processing units, said method comprising:

receiving an instruction to run a kernel of an application on the apparatus, wherein the apparatus has a first processing unit integrated with a second processing unit, wherein the second processing unit has different operating characteristics as compared with the first processing unit;

creating an application profile for the application at a runtime of the application kernel on the second processing unit, wherein the application profile identifies an affinity of the application kernel to be run on either the first processing unit or the second processing unit and identifies a type of an input data set of the application based on an activity factor calculation; and

storing the application profile for the application in a data store.

2. The method according to claim 1 , wherein creating the application profile comprises:

dynamically instrumenting the application at a runtime of the application kernel in the second processing unit to determine the affinity of the application kernel to the second processing unit and an extent to which the application kernel is memory-bound versus being compute bound.

3. The method according to claim 2 , wherein dynamically instrumenting the application further comprises selectively instrumenting the application to reduce overhead associated with the dynamic instrumentation.

4. The method according to claim 2 , wherein dynamically instrumenting the application results in a gathering of values pertaining to a number of instructions executed and memory accesses performed, the method further comprising:

determining the affinity of the application kernel based upon a comparison of the gathered values or a variance in the gathered values with predetermined threshold values.

5. The method according to claim 1 , further comprising:

determining whether a previously created application profile for the application is available; and

wherein creating the application profile for the application further comprises creating the application profile in response to a determination that a previously created application profile for the application is not available.

6. The method according to claim 1 , further comprising:

receiving instructions to run an application kernel of a subsequent application;

identifying an input data set identifier of the subsequent application;

determining whether a previously created application profile for the subsequent application that includes the application kernel and the input data set identifier is available; and

in response to a determination that a previously created application profile for the subsequent application that includes the application kernel and the input data set identifier is not available, creating an application profile for the subsequent application that identifies the application kernel and the input data set identifier.

7. The method according to claim 6 , further comprising:

in response to a determination that a previously created application profile for an application and input data set pair that includes the application kernel and the input data set identifier is available, determining, from the previously created application profile, which of the first processing unit and the second processing unit is to process the application kernel of the application with the input data set; and

mapping the application kernel to the first processing unit or the second processing unit based upon the determination of which of the first processing unit and the second processing unit is to process the application kernel with the input data set.

8. The method according to claim 1 , further comprising:

identifying an input data set identifier of the application;

determining that the application corresponds to a plurality of previously created application profiles, and wherein the plurality of previously created application profiles corresponds to input data set identifier and application kernel pairs and have different kernel implementations;

selecting a kernel implementation of a previously created application profile based on the input data set identifier of the application; and

executing the selected kernel implementation in running the application kernel of the application.

9. The method according to claim 1 , further comprising:

receiving instructions to run application kernels of multiple applications on the first processing unit and the second processing unit of the apparatus, wherein each of the multiple applications is associated with a respective application profile; and

scheduling processing of the application kernels of the multiple applications on the first processing unit and the second processing unit based upon affinities of the multiple applications to be run on the second processing unit identified in the application profiles of the multiple applications while minimizing memory contention among the multiple applications.

10. The method according to claim 1 , wherein the application is a graph application and wherein the type of the input data is based on whether the input data is regular or irregular.

11. An apparatus comprising:

a first processing unit;

a second processing unit, wherein the second processing unit has different operating characteristics as compared with the first processing unit;

a memory shared by the first processing unit and the second processing unit over a bus; and

a module to receive an instruction to process a kernel of an application, wherein the module is to create an application profile for the application that identifies an affinity of the application kernel to be processed on either the first processing unit or the second processing unit and identifies a type of an input data set of the application based on an activity factor calculation, and wherein the module is to implement the application profile in determining which of the first processing unit and the second processing unit is to process an application kernel of a subsequently received application.

12. The apparatus according to claim 11 , wherein the first processing unit is an integrated central processing unit (CPU) and the second processing unit is a graphics processing unit (GPU).

13. The apparatus according to claim 11 , wherein the module is to create the application profile through a selective instrumentation of the application that reduces overhead associated with the instrumentation at a runtime of the application kernel on the second processing unit, to determine an activity factor of the application that characterizes the affinity of the application to be run on the second processing unit, and determine a memory intensity of the application that characterizes an extent to which the application is memory-bound versus being compute-bound.

14. The apparatus according to claim 11 , wherein the module is further to receive instructions to run application kernels of multiple applications on the first processing unit and the second processing unit, wherein each of the multiple applications is associated with a respective application profile, and to schedule processing of the application kernels of the multiple applications on the first processing unit and the second processing unit based upon affinities of the multiple applications to be run on the second processing unit identified in the application profiles of the multiple applications while minimizing memory contention in the performance of the multiple applications.

15. A non-transitory computer-readable storage medium on which is stored machine readable instructions that when executed by a processor cause the processor to:

receive an instruction to run a kernel of an application on an apparatus having a first processing unit integrated with a second processing unit, wherein the second processing unit has different operating characteristics as compared with the first processing unit;

determine whether a previously created application profile for the application is available; and

in response to a determination that a previously created application profile for the application is not available, perform a selective dynamic instrumentation of the application at a runtime of the application kernel on the second processing unit; and

create an application profile for the application based upon the selective dynamic instrumentation, wherein the application profile identifies an affinity of the application kernel to be run on either the first processing unit or the second processing unit and identifies a type of an input data set of the application based on an activity factor calculation.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 19, 2017
From: CHEN, YUAN; TALWAR, VANISH; FAROOQUI, NAILA; ROY, INDRAJIT
To: HEWLETT-PACKARD DEVELOPMENT COMPANY, L.P.
Reel/Frame 042748/0058 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 19, 2017
From: HEWLETT-PACKARD DEVELOPMENT COMPANY, L.P.
To: HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP
Reel/Frame 042888/0001 →
Continuity (1)
Related Publication 20170315847A1 · Nov 2, 2017