Application Program Interface of a Parallel-Processing Computer System that Supports Multiple Programming Languages
AssigneeGoogle Inc.
InventorsMorgan S. McGuire, Christopher G. Demetriou, Brian K. Grant, 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, comprising:
- in a runtime system configured to run on a parallel-processing computer system that includes a first processing element and a second processing element, the two processing elements having different instruction set architectures, and memory storing one or more programs for execution by the processing elements, at runtime:
- receiving from an application executing in conjunction with the runtime system one or more application program interface calls to the runtime system, the application program interface calls corresponding to one or more operation requests to be performed by the parallel-processing computer system;
- generating a programming language-independent, processor-independent intermediate representation for at least one of the operation requests using an application program interface module associated with the runtime system, wherein the intermediate representation includes a first set of instructions for generating optimized compute kernels for the first processing element and a second set of instructions for generating optimized compute kernels for the second processing element, respectively;
- selecting one of the first processing element and the second processing element based on a current state of the runtime system;
- generating one or more compute kernels from the intermediate representation in accordance with the instruction set architecture of the selected processing element and a corresponding set of instructions for generating optimized compute kernels for the selected processing element;
- and
- executing the one or more compute kernels on the selected processing element.
A parallel-processing computer system, comprising:
- memory;
- multiple processing elements, further including a first processing element and a second processing element, the two processing elements having different instruction set architectures;
- a runtime system configured to run on a parallel-processing computer system;
- and
- at least one program stored in the memory and executed by the multiple processing elements, the at least one program including:
- instructions for receiving from an application executing in conjunction with the runtime system one or more application program interface calls to the runtime system, the application program interface calls corresponding to one or more operation requests to be performed by the parallel-processing computer system;
- instructions for generating a programming language-independent, processor-independent intermediate representation for at least one of the operation requests using an application program interface module associated with the runtime system, wherein the intermediate representation includes a first set of instructions for generating optimized compute kernels for the first processing element and a second set of instructions for generating optimized compute kernels for the second processing element, respectively;
- instructions for selecting one of the first processing element and the second processing element based on a current state of the runtime system;
- instructions for generating one or more compute kernels from the intermediate representation in accordance with the instruction set architecture of the selected processing element and a corresponding set of instructions for generating optimized compute kernels for the selected processing element;
- and
- instructions for executing the one or more compute kernels on the selected processing element.
A non-transitory computer readable storage medium storing one or more programs configured to be executed by a parallel-processing computer system that includes a first processing element and a second processing element, the two processing elements having different instruction set architectures, the one or more programs comprising instructions for:
- receiving from an application executing in conjunction with the runtime system one or more application program interface calls to the runtime system, the application program interface calls corresponding to one or more operation requests to be performed by the parallel-processing computer system;
- generating a programming language-independent, processor-independent intermediate representation for at least one of the operation requests using an application program interface module associated with the runtime system, wherein the intermediate representation includes a first set of instructions for generating optimized compute kernels for the first processing element and a second set of instructions for generating optimized compute kernels for the second processing element, respectively;
- selecting one of the first processing element and the second processing element based on a current state of the runtime system;
- generating one or more compute kernels from the intermediate representation in accordance with the instruction set architecture of the selected processing element and a corresponding set of instructions for generating optimized compute kernels for the selected processing element;
- and
- executing the one or more compute kernels on the selected processing element.
Dependencies are inferred from the claim text.