In 1984 Argonne National Laboratory acquired a Denelcor HEP (Heterogeneous Element Processor) [16], the first commercial multiprocessor and the first machine in what would become Argonne's Advanced Computing Research Facility (ACRF). The HEP was a true shared-memory machine with a multistage pipeline that made it appear to have between 8 and 12 processors. (A larger version was available at the Army Ballistics Research Laboratory.) Argonne scientists quickly came to grips with the problem of how to program this machine.
The HEP was the first in a long line of parallel computers that have been delivered with familiar sequential languages (the HEP had only Fortran) but unfamiliar, nonportable, and proprietary extensions for accessing and controlling parallelism. In the case of the HEP, the extension consisted of ``asynchronous variables'' by which annotations on individual Fortran variables triggered synchronizations in the hardware, leading to a type of dataflow synchronization in Fortran programs. The mechanism was efficient, possibly even elegant, but extremely difficult to program with. As a result, each group of researchers at Argonne that used the HEP moved quickly from dealing with HEP Fortran extensions to creating a programming environment they could use for applications.
Ewing Lusk and Ross Overbeek chose monitors as their central paradigm for controlling access to shared data by multiple processors [22]. A monitor is an abstract data type encapsulating shared data, initialization instructions, and critical code sections. Monitors were extensively studied for their theoretical properties in the early seventies in the context of a scientific approach to operating systems [12,15]. We have found them a durable construct for shared-memory programming.
To implement monitors on the Fortran-only HEP, we defined macros for monitor operations and used the m4 macro processor to expand them on our VAX into HEP Fortran, and then transferred the code to the HEP for compilation [21]. This system worked well, and we were able to use the HEP quite productively [8,18].