The PROMIS compiler prototype
Carrie J. Brownhill, Alexandru Eugen Nicolau, Steven Novack, Constantine D. Polychronopoulos · 1997
Source code parallelizers and instruction level parallelizers each have specific advantages. Usually, a compiler is designed to be one or the other based on the target architecture and/or algorithms. A compiler that is designed to generate near-optimal code for modern, multi-level machines must have the capabilities of both. This paper describes the prototype of the PROMIS compiler. The prototype was designed to show that loop level and instruction level parallelization can be combined to produce results better than either one alone. In addition, it shows how communication between the levels can produce additional speedup. 1 Introduction Parallelizing compilers automatically restructure sequential code to exploit any inherent parallelism. The granularity, or task size, of the parallel code is largely determined by the compiler designer; and is chosen according to the target architecture and/or application. For example, a compiler for a VLIW (Very Long Instruction Word) machine, would...