Systems and methods for caching compute kernels for an application running on a parallel-processing computer system
AssigneeGoogle Inc.
InventorsChristopher G. Demetriou, Matthew N. Papakipos
Life of this patent
Estimating the term…
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.
Claims21
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.
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.
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.
Dependencies are inferred from the claim text.