IP Library Granted Patent US 8,146,066
Granted Patent B2
US 8,146,066 · App. 11/714,480 · Granted Mar 27, 2012

Systems and methods for caching compute kernels for an application running on a parallel-processing computer system

Assignee: Google Inc.
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,146,066
App. No.
11/714,480
Granted
Mar 27, 2012
Kind
B2
Abstract

A runtime system implemented in accordance with the present invention provides an application platform for parallel-processing computer systems. Such a runtime system enables users to leverage the computational power of parallel-processing computer systems to accelerate/optimize numeric and array-intensive computations in their application programs. This enables greatly increased performance of high-performance computing (HPC) applications.

Claims (58)

1. A computer-implemented method configured to be performed by a runtime system at a parallel-processing computer system that includes multiple types of processing elements, comprising:

at runtime:

receiving one or more operation requests issued by an application, wherein the one or more operation requests correspond to a code reuse section of the application;

generating one or more intermediate representation entries for the one or more operation requests;

dynamically choosing a respective type of processing element for the one or more intermediate representation entries;

identifying, among a plurality of compute kernels previously compiled by the runtime system for the application, one or more previously compiled compute kernels for the one or more intermediate representation entries, wherein the identified previously compiled compute kernels are configured to execute on the dynamically chosen type of processing element; and

scheduling execution of the identified one or more previously compiled compute kemels at the respective type of processing element,

wherein the multiple types of processing elements include two or more of:

single-core central processing units, multi-core central processing units, graphics processing units, single-core co-processors and multi-core coprocessors.

2. The computer-implemented method of claim 1 , wherein the code reuse section of the application is between by a pair of keywords defined by the runtime system.

3. The computer-implemented method of claim 1 , wherein the one or more intermediate representation entries are programming language-independent and processor-independent.

4. The computer-implemented method of claim 1 , wherein the respective type of processing element is dynamically chosen based, at least in part, on one of a predefined computer resource requirement metric of the one or more intermediate representation entries and a predefined workload requirement metric of the parallel-processing computer running the running time.

5. The computer-implemented method of claim 1 , wherein the plurality of previously compiled compute kernels include a set of compute kernels that the runtime system previously compiled when executing another code reuse section of the application.

6. The computer-implemented method of claim 1 , wherein identifying one or more previously compiled compute kernels among the plurality of previously compiled compute kernels further includes:

generating an identifier using the one or more intermediate representation entries; and

performing a table lookup of the plurality of previously compiled compute kernels for a subset of compute kernels that matches the identifier.

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

adding the one or more newly compiled compute kernels to the plurality of previously compiled compute kemels; and

generating an identifier using the one or more intermediate representation entries, wherein the identifier uniquely identifies the one or more newly compiled compute kernels among the plurality of compute kernels previously compiled.

8. A parallel-processing computer system, comprising:

memory;

multiple types of processing elements; and

at least one program stored in the memory and executed by the multiple types of processing elements, the at least one program including a runtime system comprising instructions for:

at runtime:

receiving one or more operation requests issued by an application, wherein the one or more operation requests correspond to a code reuse section of the application;

generating one or more intermediate representation entries for the one or more operation requests;

dynamically choosing a respective type of processing element for the one or more intermediate representation entries;

identifying, among a plurality of compute kernels previously compiled by the runtime system for the application, one or more previously compiled compute kernels for the one or more intermediate representation entries, wherein the identified previously compiled compute kernels are configured to execute on the dynamically chosen type of processing element; and

scheduling execution of the identified one or more previously compiled compute kemels at the respective type of processing element,

wherein the multiple types of processing elements include two or more of: single-core central processing units, multi-core central processing units, graphics processing units, single-core co-processors and multi-core coprocessors.

9. The parallel-processing computer system of claim 8 , wherein the code reuse section of the application is between by a pair of keywords defined by the runtime system.

10. The parallel-processing computer system of claim 8 , wherein the one or more intermediate representation entries are programming language-independent and processor-independent.

11. The parallel-processing computer system of claim 8 , wherein the respective type of processing element is dynamically chosen based, at least in part, on one of a predefined computer resource requirement metric of the one or more intermediate representation entries and a predefined workload requirement metric of the parallel-processing computer running the running time.

12. The parallel-processing computer system of claim 8 , wherein the plurality of previously compiled compute kernels include a set of compute kernels that the runtime system previously compiled when executing another code reuse section of the application.

13. The parallel-processing computer system of claim 8 , wherein the instructions for identifying one or more previously compiled compute kernels among the plurality of previously compiled compute kernels further include instructions for:

generating an identifier using the one or more intermediate representation entries; and

performing a table lookup of the plurality of previously compiled compute kernels for a subset of compute kernels that matches the identifier.

14. The parallel-processing computer system of claim 8 , further comprising instructions for:

adding the one or more newly compiled compute kernels to the plurality of previously compiled compute kernels; and

generating an identifier using the one or more intermediate representation entries, wherein the identifier uniquely identifies the one or more newly compiled compute kernels among the plurality of compute kernels previously compiled.

15. A computer program product for use in conjunction with a parallel-processing computer system that includes multiple types of processing elements, the computer program product comprising a computer readable storage medium and a computer program mechanism embedded therein, the computer program mechanism comprising a runtime system including instructions for:

at runtime:

receiving one or more operation requests issued by an application, wherein the one or more operation requests correspond to a code reuse section of the application;

generating one or more intermediate representation entries for the one or more operation requests;

dynamically choosing a respective type of processing element for the one or more intermediate representation entries;

identifying, among a plurality of compute kernels previously compiled by the runtime system for the application, one or more previously compiled compute kernels for the one or more intermediate representation entries, wherein the identified previously compiled compute kernels are configured to execute on the dynamically chosen type of processing element; and

scheduling execution of the identified one or more previously compiled compute kemels at the respective type of processing element,

wherein the multiple types of processing elements include two or more of: single-core central processing units, multi-core central processing units, graphics processing units, single-core co-processors and multi-core coprocessors.

16. The computer program product of claim 15 , wherein the code reuse section of the application is between by a pair of keywords defined by the runtime system.

17. The computer program product of claim 15 , wherein the one or more intermediate representation entries are programming language-independent and processor-independent.

18. The computer program product of claim 15 , wherein the respective type of processing element is dynamically chosen based, at least in part, on one of a predefined computer resource requirement metric of the one or more intermediate representation entries and a predefined workload requirement metric of the parallel-processing computer running the running time.

19. The computer program product of claim 15 , wherein the plurality of previously compiled compute kernels include a set of compute kernels that the runtime system previously compiled when executing another code reuse section of the application.

20. The computer program product of claim 15 , wherein the instructions for identifying one or more previously compiled compute kernels among the plurality of previously compiled compute kernels further include instructions for:

generating an identifier using the one or more intermediate representation entries; and

performing a table lookup of the plurality of previously compiled compute kernels for a subset of compute kernels that matches the identifier.

21. The computer program product of claim 15 , further comprising instructions for:

adding the one or more newly compiled compute kernels to the plurality of previously compiled compute kernels; and

generating an identifier using the one or more intermediate representation entries, wherein the identifier uniquely identifies the one or more newly compiled compute kernels among the plurality of compute kernels previously compiled.

Assignments (3)
CHANGE OF NAME Recorded Oct 2, 2017
From: GOOGLE INC.
To: GOOGLE LLC
Reel/Frame 044101/0405 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 16, 2009
From: PEAKSTREAM, INC.
To: GOOGLE INC.
Reel/Frame 022963/0317 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 25, 2007
From: DEMETRIOU, CHRISTOPHER G.; PAPAKIPOS, MATTHEW N.
To: PEAKSTREAM INC.
Reel/Frame 019346/0687 →
Continuity (3)
Provisional Application 60815532 · Jun 20, 2006
Provisional Application 60903188 · Feb 23, 2007
Related Publication 20070294682A1 · Dec 20, 2007