Abstract: This paper describes VCODE, a data-parallel intermediate language. VCODE is designed to allow easy porting of data-parallel languages, such as C*, Paralation-Lisp, and Fortran 8x, to a wide class of parallel machines, and for experimenting with compiling such languages. Our design goal was to define a simple language whose primitives can be implemented efficiently, but is still powerful enough to express the features of existing data-parallel languages. It contains about 50 instructions, most of which manipulate arbitrarily long vectors of atomic values, and includes a set of segmented instructions that are crucial for implementing data-parallel languages that permit nested parallelism, such as Paralation-Lisp and CM-Lisp. An initial version of a VCODE interpreter has been implemented on the Thinking Machines Corporation Connection Machine, the CRAY Y-MP, the Encore Multimax and several uniprocessor machines. The paper outlines the VCODE language, discusses many of the design issues, illustrates how data-parallel languages can be mapped onto it, and describes how it can be implemented on massively parallel machines.
@inproceedings{vcode, author = "Guy~E. Blelloch and Siddhartha Chatterjee", title = "{VCODE}: A Data-Parallel Intermediate Language", booktitle = "Proceedings Frontiers of Massively Parallel Computation", pages = "471--480", month = oct, year = 1990 }