System and method for compiling a fine-grained array based source program onto a course-grained hardware
First Claim
1. A computer implemented method of compiling a fine-grained array based source program written for a parallel machine, comprising the steps of:
- (1) entering said source program into a front end of a compiler, wherein said front end produces a common intermediate representation (CIR) syntax tree;
(2) building a lowered intermediate representation (LIR) from said CIR syntax tree by performing a bottom-up walk of said CIR syntax tree;
(3) mapping said LIR into a more detailed LIR'"'"', said LIR'"'"' marks which code will run on a scalar front-end processor and which code will run on a plurality of parallel vector processors; and
(4) generating two separate code streams from said LIR'"'"'.
6 Assignments
0 Petitions
Accused Products
Abstract
The present invention provides a parallel vector machine model for building a compiler that exploits three different levels of parallelism found in a variety of parallel processing machines, and in particular, the Connection Machine® Computer CM-2 system. The fundamental idea behind the parallel vector machine model is to have a target machine that has a collection of thousands of vector processors each with its own interface to memory. Thus allowing a fine-grained array-based source program to be mapped onto a course-grained hardware made up of the vector processors. In the parallel vector machine model used by CM Fortran 1.0, the FPUs, their registers, and the memory hiearchy are directly exposed to the compiler. Thus, the CM-2 target machine is not 64K simple bit-serial processors. Rather, the target is a machine containing 2K PEs (processing elements), where each PE is both superpipelined and superscalar. The compiler uses data distribution to spread the problem out among the 2K processors. A new compiler phase is used to separate the code that runs on the two types of processors in the CM-2; the parallel PEs, which execute a new RISC-like instruction set called PEAC, and the scalar front end processor, which executes SPARC or VAX assembler code. The pipelines in PEs are filled by using vector processing techniques along the PEAC instruction set. A scheduler overlaps the execution of a number of RISC operations.
-
Citations
19 Claims
-
1. A computer implemented method of compiling a fine-grained array based source program written for a parallel machine, comprising the steps of:
-
(1) entering said source program into a front end of a compiler, wherein said front end produces a common intermediate representation (CIR) syntax tree; (2) building a lowered intermediate representation (LIR) from said CIR syntax tree by performing a bottom-up walk of said CIR syntax tree; (3) mapping said LIR into a more detailed LIR'"'"', said LIR'"'"' marks which code will run on a scalar front-end processor and which code will run on a plurality of parallel vector processors; and (4) generating two separate code streams from said LIR'"'"'. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9)
-
-
10. A computer implemented method of compiling a source program for coarse-grained parallel machine, comprising the steps of:
-
(1) receiving a source program written in a fine-grained array-based programming language; (2) translating said source program into target code which includes vector instruction, said target code operates on a coarse-grained hardware that processes said code concurrently and utilizes at least one register file, wherein said coarse-grained parallel machine contains a plurality of vector processors, said plurality of vector processors contains a plurality of functional units, the pipeline of said plurality of functional units being of equal or unequal length; and (3) treating said at least two functional units, if said at least two functional units have a pipeline of unequal length, as having equal length.
-
-
11. A computer implemented method of compiling a fine-grained array based source program written for a parallel machine, comprising the steps of:
-
(a) front end means for receiving a source program, wherein said front end means produces a common intermediate representation (CIR) syntax tree; (b) building means for building a lowered intermediate representation (LIR) from said CIR syntax tree by performing a bottom-up walk of said CIR syntax tree; (c) mapping means for mapping said LIR into a more detailed LIR'"'"', said LIR'"'"' marks which code will run on a scalar front-end processor and which code will run on a plurality of parallel vector processors; and (d) generating means for generating two separate code streams from said LIR'"'"'. - View Dependent Claims (12, 13, 14, 15, 16, 17, 18, 19)
-
Specification