Systems and methods for compiling an application for a parallel-processing computer system
AssigneeGoogle Inc.
InventorsMatthew N. Papakipos, Brian K. Grant, Christopher G. Demetriou, Morgan S. McGuire
Life of this patent
Estimating the term…
Loading patent…
AssigneeGoogle Inc.
InventorsMatthew N. Papakipos, Brian K. Grant, Christopher G. Demetriou, Morgan S. McGuire
Estimating the term…
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.
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:
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:
A parallel-processing computer system, comprising:
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:
Dependencies are inferred from the claim text.
Drawings are temporarily unavailable. Open the PDF at USPTO
From the US filing history. Foreign family members aren’t listed.
Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions: parallelism detection
Computing and data processing
About 3 years 8 months of term left · ends 5 Jul 2030 (estimated)
The present invention relates generally to the field of parallel computing, and in particular, to systems and methods for high-performance computing on a parallel-processing computer system including multiple processing elements that may or may not have the same processor architecture.
Today, a parallel-processing computer system including one or more processors and/or coprocessors provides a tremendous amount of computing capacity. But there is lack of an efficient, stable, robust, and user-friendly software development and execution platform for such computer system. Therefore, there is a need for a software development and execution platform that provides an easy-to-use program interface and rich library resources, supports program debugging and profiling, and enables the execution of the same program on any types of parallel-processing computer system.
For a better understanding of the nature and embodiments of the invention, reference should be made to the Description of Embodiments below, in conjunction with the following drawings in which like reference numerals refer to corresponding parts throughout the figures.
FIG. 1 is an overview block diagram of a runtime system running on a parallel-processing computer system according to some embodiments of the present invention.
FIGS. 2A through 2I illustrate the operation of the Language-Specific Interface and the Front End of the runtime system according to some embodiments of the present invention.
Like reference numerals refer to corresponding parts throughout the several views of the drawings.
In some embodiments, a method for compiling an application for a parallel-processing computer system includes, at run time: receiving one or more operation requests from an application; preparing an intermediate representation for the operation requests; dynamically preparing one or more compute kernels for the intermediate representation; and dynamically executing the compute kernels on one or more processing elements of a parallel-processing computer system.
In other embodiments, a method for compiling an application for a parallel-processing computer system includes: at compile time: identifying one or more operation requests in an application source code; preparing an intermediate representation for the operation requests; and preparing one or more compute kernels for the intermediate representation, wherein the compute kernels are configured to execute on one or more processing elements of a parallel-processing computer system; and at run-time: dynamically executing the compute kernels on the processing elements of the parallel-processing computer system.