What is Polaris?

Polaris is a source to source transforming compiler intended to parallelize programs written as conventional, sequential algorithms. It is an ongoing project developed at UIUC. Polaris is essentially a driver routine which scans a FORTRAN 77 program and converts it into an Abstract Syntax Tree (AST.) Then, various passes are called by the driver on the AST. Each pass attemps to optimize the program via specific methods, such as constant propagation, reduction recognition, etc.. The driver program completes its task by printing the program after any diagnostic information produced by the passes is output.

What is MiniPolaris?

MiniPolaris is a version of Polaris with only the most fundamental passes. The source program is read, parsed, and converted to an AST. The user will then provide custom passes to extract information or make transformations on the statements. After the custom passes are executed, the driver program outputs the resulting code.

MiniPolaris has been designed to allow a multitude of students to share much of the source code and libraries, using symbolic links, which also enables an instructor to add interfaces for new assignments without interfering with current development of the students. Additionally, the instructor may provide a solution to an earlier assignment as an object file so that later projects may build on earlier assignments without requiring a perfect solution to the earlier projects.


To become familiar with the design and use of MiniPolaris, it is instructive to examine the documentation available for Polaris. Read The Polaris Internal Representation and Polaris Developer's Document from the Polaris web page at the University of Illinois, Urbana-Champaign (UIUC) for a detailed description of the data types, conventions, components, etc..