Operating system concepts (2nd ed.)
Operating system concepts (2nd ed.)
Compilers: principles, techniques, and tools
Compilers: principles, techniques, and tools
Advanced compiler optimizations for supercomputers
Communications of the ACM - Special issue on parallelism
ISCA '85 Proceedings of the 12th annual international symposium on Computer architecture
Communications of the ACM - Special issue on computer architecture
Communicating sequential processes
Communications of the ACM
A large scale, homogeneous, fully distributed parallel machine, I
ISCA '77 Proceedings of the 4th annual symposium on Computer architecture
Low-level programming for a massively parallel fine-grain computer: the Microflow approach
Low-level programming for a massively parallel fine-grain computer: the Microflow approach
Design of a Computer—The Control Data 6600
Design of a Computer—The Control Data 6600
Hi-index | 0.00 |
To date, the implementation of message passing languages has required hte communications variables (sometimes called ports) either to be limited to the number of physical communications registers in the machine or to be mapped to memory. Neither solution is satisfactory. Limiting the number of variables decreases modularity and efficiency of parallel programs. Mapping variables to memory increases the cost of communications and the granularity of parallelism. We present here a new programming language construct called epochs.Epochs are a scoping mechanism within which the programmer can declare communications variables, which are live only during the scope of that epoch. To limit the range of time a register has to be allocated for a communications variable, the compiler ensures that all processors enter an epoch simultaneously. The programming style engendered fits somewhere between the SIMD data parallel and the MIMD process spawning models.We describe an implementation for epochs including an efficient synchronization mechanism, a means of statically binding registers to communications variables, and a method of fusing epochs to reduce synchronization overhead.