One application of large-grain parallelism is the use of parallel and distributed compilations by make , running under UNIX.† The original version of make executes its compilation commands successively. An increase in efficiency may be achieved by a parallel version of make , which tries to execute the compilations simultaneously. A parallel, nondistributed, version of make turns out to be inefficient. The compilations, which are mainly cpu-bound, slow each other down due to degradation of the processor’s performance. A solution may be found in the idea of boarding out (part of the) compilations to other processors. This resulted in a study of how to do compilations in a distributed manner. The aspect of having a system of loosely-coupled processors is an important issue in the field of distributed compilations. The relatively high cost of doing transactions (compared to local actions) in a loosely-coupled system makes the use of low-level inter-processor communication (e.g., the execution of system calls on another processor) inefficient. A UNIX network system like the Amoeba Connection turns out to be unsuitable for doing distributed compilations. It is shown that much overhead results from the communication between the system that contains the source code to be compiled and the system that does the compilation. Another possibility is to copy the source code to the other processor’s data space, execute a local compilation on that processor and send the results back; this greatly reduces the communication overhead. The time needed to send the source to and receive the code from the remote processor is negligible compared with the overhead mentioned earlier. In order to create a parallel and distributed make , I adapted the original ’make’ program by adding a module for finding out which compilations can be executed in parallel, depending on the actions to be taken, the actions already finished, and the present files. Furthermore, I created various versions of the UNIX C compiler cc in order to perform some measurements. hhhhhhhhhhhhhhhhhh † UNIX is a trademark of Bell Laboratories.
[1]
Stephen C. Johnson.
A portable compiler: theory and practice
,
1978,
POPL.
[2]
Stuart I. Feldman,et al.
Make — a program for maintaining computer programs
,
1979,
Softw. Pract. Exp..
[3]
Andrew S. Tanenbaum,et al.
An overview of the Amoeba distributed operating system
,
1981,
OPSR.
[4]
John A. Miller,et al.
Distributed Compilation: A Case Study
,
1982,
ICDCS.
[5]
Brian Randell,et al.
The newcastle connection or UNIXes of the world unite!
,
1982,
Softw. Pract. Exp..
[6]
Andrew S. Tanenbaum,et al.
A UNIX Toolkit for Making Portable Compilers
,
1983
.
[7]
Andrew S. Tanenbaum,et al.
A practical tool kit for making portable compilers
,
1983,
Commun. ACM.
[8]
Andrew S. Tanenbaum,et al.
Connecting UNIX Systems using a Token Ring
,
1984
.
[9]
Roy H. Campbell,et al.
NETWORKING A LARGE NUMBER OF WORKSTATIONS USING UNIX UNITED.
,
1985
.
[10]
Andrew S. Tanenbaum,et al.
The Design of a Capability-Based Distributed Operating System
,
1986,
Comput. J..