Nov. 6, 1996
(Draft)
The parallelizing compilation system will be developed as part of the work specified in ARPA Contract F19628-94-C-0057.
This document is try to summarize how we will design and implement the whole compiler system, especially the one transforms High Performance Fortran to Fortran node program on distributed memory machine.
To be supplied and shown in demo.
The whole project will be a growing system. At present time, we have successfully streamlined the left side process in system overall structure as show in our demonstrations. We will continue to achieve the whole compilation system framework.
Our compiler system will serve the following purposes:
The first thing in our mind is that to build up a compiler system which meets the need specified in ARPA Contract F19628-94-C-0057. So our first priority will be a HPF com piler, or language translator, which will transform HPF source code to Fotran node pro gram based on library functions provided by PCRC common code run-time library.
The compiler will focus on the program from real application. As parallel architecture plays a more and more important role in practical computation, a parallelizing compiler which makes applications exploit the capability of a real parallel computer is what we really need.
The compilation system is also aimed to be a vehicle to support further R&D work. So it will be clear in structure, easy to be modified and extended. It should be possible to be used as a tool to teach parallelizing compiler theory and related project in the class. Also it will be a public domain available software.
The compilation system can be viewed as a graph in Fig.1. The application program will travel through the software and hardware constructions from top to bottom, geting results finally.
The system will have the following features:
The compilation system will support multi-language. This is possible by carefully choosing the intermediate representation in our front-end project. At present time, HPF is our main concern. We will add Java programming language in our next step.
The system will be severed as a language translation tools. The high level reconstruc tion routines in a parallelizing compiler will be included, while the low level optimiza tions may be done in the compiler provided by the node machine. The machine dependent part of a conventional compiler will be considered as further extention work.
The highly hierarchical architectures will be the next generation super-computer. Among them, the most difficult and challenging programming model will be the sepa rately addressed, distributed memory machines. Our system will target at this kind of machine architecture.
We will construct the whole project as a public domain available software. This make it possible for other reserchers to join our work. It also means our package will support multi-platform. Currently, this includes UNIX based system like SUN4, Solaris, AIX, IRIX, HP, OSF and Linux.
Note, the graph only show the left path as solid lines, which means we have streamline the process already. The right path is still in design phase.
We will try to use what other people have done (ideas, softwares in public domain) as much as possible and come up with a coherent system on its own.
From compiler point of view, the following systems are what we are going to use.
We have already built up a well tested HPF front-end based on the first two items, as shown in our demo.
From run-time library point of view, the systems we may use are:
We can see from Fig.1 that there are two parts as link nodes between the existing systems. One is language translation tools, the other is run-time library interface.
In order to serve our purpose 3, i.e., to provide a reseach tools for parallelizing compiler work, the language translation tools can be devided into two seperate parts.
The run-time library interface not only provide the language interface to the PCRC library, but also provide the base for language translation part to decide what kind of language fea ture will be supported, and how.
For more detailed information, please reference to our run-time library developing.
In this section we describe the basic idea about how to translate HPF program to Fortran node program based on PCRC runtime support. The process will be dev ided into two phases:
As we objerved, FORALL statement is the key component in HPF language to express parallelism, we will first try to translate HPF language component to FORALL statement as much as possible. Then we translate the FORALL statement into node program based on run-time library interface.
These two phases can be repersented as two directions shown in Fig.2. We will start from the basic things: Forall statement with reference need regular data movement, and expend the capability of the tranlation gradrually.
In the figure, to the right it will includes all those statements for which code generation work needed to be done. To the top, it will includes all language components in HPF spec ification. The language components at top of the figure will be translated to the components in lower part, and finally to the bottom one, which node program generation phase can handle.
For more information about the transformation dependence relationship between different language components, please refer to "Compilation Strategy I of an HPF compiler".