IP Library Granted Patent US 8,261,270
Granted Patent B2
US 8,261,270 · App. 11/714,630 · Granted Sep 4, 2012

Systems and methods for generating reference results using 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,261,270
App. No.
11/714,630
Granted
Sep 4, 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 (60)

1. A computer-implemented method, comprising:

at runtime, wherein the method is performed by a parallel-processing computer system having memory and a plurality of processing elements including a target processing element of a first type and a reference processing element of a second type that is different from the first type receiving a plurality of operation requests directed to the parallel-processing computer system from an application; and

automatically performing the following operations on the parallel-processing computer system, including:

selecting a subset of the plurality of operation requests to be executed on the target processing element;

preparing a first set of compute kernels for the subset of the plurality of operation requests, wherein the first set of compute kernels is configured to execute on the reference processing element;

generating a reference result for the subset of the plurality of operation requests through execution of the first set of compute kernels on the reference processing element;

preparing a second set of compute kernels for the subset of the plurality of operation requests, wherein the second set of compute kernels is configured to execute on the target processing element;

generating a target result for the subset of the plurality of operation requests through execution of the second set of compute kernels on the target processing element;

performing a result comparison between the reference result and the target result; and

based on the result comparison exceeding a predefined non-zero value, performing at least one of: aborting execution of the application or storing a result mismatch signal in a log file.

2. The method of claim 1 , wherein preparing the first set of compute kernels and the second set of compute kernels further includes:

generating first and second intermediate representations of the set of one or more operation requests; and

designating, respectively, the first intermediate representation for execution on the reference processing element and the second intermediate representation for execution on the target processing element.

3. The method of claim 1 , further comprising:

generating the result mismatch signal if a difference between the reference result and the target result exceeds the predefined non-zero value, wherein the predefined non-zero value is defined at least by the reference result.

4. The method of claim 1 , wherein at least one of the set of one or more operation requests is associated with an array object of the application and both the reference and target results are associated with the array object of the application.

5. The method of claim 1 , wherein the first type is a CPU and the second type is a GPU.

6. The method of claim 1 , wherein each of the first set of compute kernels is dynamically generated for the reference processing element and at least one of the second set of compute kernels was previously generated in response to one or more earlier operation requests issued by the application.

7. The method of claim 1 , wherein the result comparison is performed asynchronously following execution of the application on the parallel-processing computer system.

8. The method of claim 1 , wherein the result comparison is performed synchronously with execution of the application on the parallel-processing computer system.

9. A parallel-processing computer system, comprising:

memory;

one or more types of processing elements including a target processing element of a first type and a reference processing element of a second type that is different from the first type; and

at least one program stored in the memory and executed by the one or more types of processing elements, wherein the at least one program is part of a runtime system performed by the parallel-processing computer system, the at least one program including:

instructions for receiving, from an application, a plurality of operation requests directed to the parallel-processing computer system;

instructions for automatically performing the following operations on the parallel-processing computer system, including:

selecting a subset of the plurality of operation requests to be executed on the target processing element;

preparing a first set of compute kernels for the subset of the plurality of operation requests, wherein the first set of compute kernels is configured to execute on the reference processing element;

generating a reference result for the subset of the plurality of operation requests through execution of the first set of compute kernels on the reference processing element;

preparing a second set of compute kernels for the subset of the plurality of operation requests, wherein the second set of compute kernels is configured to execute on the target processing element;

generating a target result for the subset of the plurality of operation requests through execution of the second set of compute kernels on the target processing element;

performing a result comparison between the reference result and the target result;

generating a result mismatch signal if a difference between the reference result and the target result exceeds a predefined condition; and

based on the result comparison exceeding a predefined non-zero value, performing at least one of: aborting execution of the application or storing a result mismatch signal in a log file.

10. The computer system of claim 9 , wherein the instructions for preparing the first set of compute kernels and the second set of compute kernels further include instructions for:

generating first and second intermediate representations of the set of one or more operation requests; and

designating, respectively, the first intermediate representation for execution on the reference processing element and the second intermediate representation for execution on the target processing element.

11. The computer system of claim 9 , wherein the instructions for generating the result mismatch signal comprise:

generating the result mismatch signal if a difference between the reference result and the target result exceeds the predefined non-zero value, wherein the predefined non-zero value is defined at least by the reference result.

12. The computer system of claim 9 , wherein at least one of the set of one or more operation requests is associated with an array object of the application and both the reference and target results are associated with the array object of the application.

13. The computer system of claim 9 , wherein the first type is a CPU and the second type is a GPU.

14. The computer system of claim 9 , wherein each of the first set of compute kernels is dynamically generated for the reference processing element and at least one of the second set of compute kernels was previously generated in response to one or more earlier operation requests issued by the application.

15. The computer system of claim 9 , wherein the result comparison is performed asynchronously following execution of the application on the parallel-processing computer system.

16. The computer system of claim 9 , wherein the result comparison is performed synchronously with execution of the application on the parallel-processing computer system.

17. A computer program product for use in conjunction with a parallel-processing computer system having memory and a plurality of processing elements, the computer program product comprising a non-transitory computer readable storage medium and a computer program mechanism embedded therein, the computer program mechanism comprising a runtime system including at least one program, wherein the at least one program is performed by the parallel-processing computer system, the at least one program including:

instructions for receiving, from an application, a plurality of operation requests directed to the parallel-processing computer system, wherein the parallel-processing computer system includes a target processing element of a first type and a reference processing element of a second type that is different from the first type;

instructions for automatically performing the following operations on the parallel-processing computer system, including:

selecting a subset of the plurality of operation requests to be executed on the target processing element;

preparing a first set of compute kernels for the subset of the plurality of operation requests, wherein the first set of compute kernels is configured to execute on the reference processing element;

generating a reference result for the subset of the plurality of operation requests through execution of the first set of compute kernels on the reference processing element;

preparing a second set of compute kernels for the subset of the plurality of operation requests, wherein the second set of compute kernels is configured to execute on the target processing element;

generating a target result for the subset of the plurality of operation requests through execution of the second set of compute kernels on the target processing element;

performing a result comparison between the reference result and the target result;

generating a result mismatch signal if a difference between the reference result and the target result exceeds a predefined condition; and

based on the result comparison exceeding a predefined non-zero value, performing at least one of: aborting execution of the application or storing a result mismatch signal in a log file.

18. The computer program product of claim 17 , wherein at least one of the set of one or more operation requests is associated with an array object of the application and both the reference and target results are associated with the array object of the application.

19. The computer program product of claim 17 , wherein the first type is a CPU and the second type is a GPU.

20. The computer program product of claim 17 , wherein each of the first set of compute kernels is dynamically generated for the reference processing element and at least one of the second set of compute kernels was previously generated in response to one or more earlier operation requests issued by the application.

21. The computer program product of claim 17 , wherein the result comparison is performed asynchronously following execution of the application on the parallel-processing computer system.

22. The computer program product of claim 17 , wherein the result comparison is performed synchronously with execution of the application on the parallel-processing computer system.

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.
To: PEAKSTREAM, INC.
Reel/Frame 019346/0404 →
Continuity (3)
Provisional Application 60815532 · Jun 20, 2006
Provisional Application 60903188 · Feb 23, 2007
Related Publication 20080005547A1 · Jan 3, 2008