@techreport{R-92-15, TITLE = {A Data-Parallel Language and its Compilation to a Formally Defined Intermediate Language}, AUTHOR = {Johan Fagerstr{\"o}m and Peter Fritzson and Johan Ringstr{\"o}m. Mikael Pettersson}, YEAR = {1992}, NUMBER = {R-92-15}, INSTITUTION = ida, ADDRESS = idaaddr, ABSTRACTURL = {/publications/cgi-bin/tr-fetch.pl?r-92-15+abstr}, ABSTRACT = {In this paper we present some work on language design and compilation techniques for data parallel languages, examplified by a simple data parallel language called Predula. The goal is to provide users with a basically serial language in which inherent parallelism is expressed precisely enough for the compiler to generate efficient code for massively parallel machines. We also present the automatic generation of a compiler for a subset of Predula to data parallel vector code (VCode) from a denotational specification of a subset of the language. A formal specification of the intermediate form used by this specification is partially described by using a two-level approach; the denotational semantics of Predula is expressed in terms of intermediate primitives used to generate final code from. These primitives are defined using structured operational semantics. The denotational specification is expressed in DML (Denotational Meta Language), a language and system for generating practical compilers from denotational specifications. The results from the two level semantic approach are encouraging; a small compiler has been generated, which have been used to compile a small example program that was executed on a Sparcstation and a Cray Y-MP. However, we have found that the current stack based VCode abstract machine is unsuitable as a target for compiling imperative languages for efficiency reasons. A more general abstract machine could be designed based on the vector primitives behind VCode.}, IDANR = {LiTH-IDA-R-92-15}, NOTE = {In Proceedings of 4th International Conference on Computing and Information, ICCI'92, Toronto may 28-30, 1992}