IP Library Granted Patent US 8,136,102
Granted Patent B2
US 8,136,102 · App. 11/714,582 · Granted Mar 13, 2012

Systems and methods for compiling an application for 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,136,102
App. No.
11/714,582
Granted
Mar 13, 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 (54)

1. A computer-implemented method, configured to be performed at a parallel-processing computer system with first and second processing elements, each having a different instruction set architecture, comprising:

at run-time, while the application is executing,

receiving one or more operation requests from an application;

preparing an intermediate representation for the operation requests;

dynamically preparing a set of compute kernels for the intermediate representation, by:

compiling one or more compute kernels for a previously uncompiled first portion of the intermediate representation for execution on the first processing element;

searching a set of previously compiled compute kernels to determine whether a second portion of the intermediate representation has been previously compiled; and

selecting one or more previously compiled compute kernels for execution on the second processing element, the selected compute kernels having been compiled for execution on the second processing element; and

dynamically executing the set of compute kernels on the first and second processing elements,

wherein the first and second processing elements are selected from a group consisting of: single-core central processing units, multi-core central processing units, graphics processing units, single-core co-processors and multi-core co-processors.

2. The method of claim 1 , wherein the operation requests correspond to an application program interface function call in the application.

3. The method of claim 1 , wherein the operation requests correspond to a code segment written in a specific programming language in the application.

4. The method of claim 1 , further comprising writing results of the execution into shared system memory accessible to the first and second processing elements and the application.

5. A computer-implemented method, configured to be performed at a parallel-processing computer system with first and second processing elements, each having a different instruction set architecture, comprising:

at compile-time,

identifying one or more operation requests in an application source code;

preparing an intermediate representation for the operation requests;

at run-time, while the application is executing,

dynamically preparing a set of compute kernels for the intermediate representation, by:

compiling one or more compute kernels for a previously uncompiled first portion of the intermediate representation for execution on the first processing element;

searching a set of previously compiled compute kernels to determine whether a second portion of the intermediate representation has been previously compiled; and

selecting one or more previously compiled compute kernels for execution on the second processing element, the selected compute kernels having been compiled for execution on the second processing element; and

dynamically executing the set of compute kernels on the first and second processing elements,

wherein the first and second processing elements are selected from a group consisting of: single-core central processing units, multi-core central processing units, graphics processing units, single-core co-processors and multi-core co-processors.

6. The method of claim 5 , wherein the operation requests in the application source code correspond to an application program interface function call.

7. The method of claim 5 , wherein the operation requests in the application source code correspond to a code segment written in a specific programming language.

8. The method of claim 5 , further comprising, at compile-time, applying loop analysis to the intermediate representation.

9. The method of claim 5 , further comprising writing results of the execution into shared system memory accessible to the first and second processing elements and the application.

10. A parallel-processing computer system, comprising:

memory;

a first and a second processing element, each having a different instruction set architecture; and

at least one program stored in the memory and executed by the multiple processing elements, the at least one program comprising instructions for:

at run-time, while the application is executing,

receiving one or more operation requests from an application;

preparing an intermediate representation for the operation requests;

dynamically preparing a set of compute kernels for the intermediate representation, by:

compiling one or more compute kernels for a previously uncompiled first portion of the intermediate representation for execution on the first processing element;

searching a set of previously compiled compute kernels to determine whether a second portion of the intermediate representation has been previously compiled; and

selecting one or more previously compiled compute kernels for execution on the second processing element, the selected compute kernels having been compiled for execution on the second processing element; and dynamically executing the set of compute kernels on the first and second processing elements,

wherein the first and second processing elements are selected from a group consisting of: single-core central processing units, multi-core central processing units, graphics processing units, single-core co-processors and multi-core co-processors.

11. The computer system of claim 10 , wherein the operation requests correspond to an application program interface function call in the application.

12. The computer system of claim 10 , wherein the operation requests correspond to a code segment written in a specific programming language in the application.

13. The system of claim 10 , further comprising writing results of the execution into shared system memory accessible to the first and second processing elements and the application.

14. A non-transitory computer readable storage medium storing one or more programs configured to be executed by a parallel-processing computer system with a first and a second processing element, each having a different instruction set architecture, the one or more programs comprising instructions for:

at run-time, while the application is executing,

receiving one or more operation requests from an application;

preparing an intermediate representation for the operation requests;

dynamically preparing a set of compute kernels for the intermediate representation, by:

compiling one or more compute kernels for a previously uncompiled first portion of the intermediate representation for execution on the first processing element;

searching a set of previously compiled compute kernels to determine whether a second portion of the intermediate representation has been previously compiled; and

selecting one or more previously compiled compute kernels for execution on the second processing element, the selected compute kernels having been compiled for execution on the second processing element; and

dynamically executing the set of compute kernels on the first and second processing elements of the parallel-processing computer system,

wherein the first and second processing elements are selected from a group consisting of: single-core central processing units, multi-core central processing units, graphics processing units, single-core co-processors and multi-core co-processors.

15. The non-transitory computer readable storage medium of claim 14 , further comprising writing results of the execution into shared system memory accessible to the first and second processing elements and the application.

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: PAPAKIPOS, MATTHEW N.; GRANT, BRIAN K.; DEMETRIOU, CHRISTOPHER G.; MCGUIRE, MORGAN S.
To: PEAKSTREAM, INC.
Reel/Frame 019345/0843 →
Continuity (3)
Substitution 60815532 · Jun 20, 2006
Provisional Application 60903188 · Feb 23, 2007
Related Publication 20070294680A1 · Dec 20, 2007