The Zipcode message-passing system

Zipcode is a message-passing system developed originally by the first author, beginning at Caltech in the Summer of 1988 and continuing to-date absent in then-existing message-passing systems. Currently, Zipcode continues to serve as a vehicle to demonstrate high-level message-passing research concepts and, more importantly, to provide the basis for supporting vendor-independent scalable concurrent libraries; notably, the Multicomputer Toolbox. The basic assertion of Zipcode is that carefully managed, expressive message-passing is an effective way to program multicomputers and distributed computers, while low-level message passing is admittedly both error-prone and difficult. The purpose of Zipcode is to manage the message-passing process within parallel codes in an open-ended way. This is done so that large-scale software can be constructed in a multicomputer application, with reduced likelihood that software so constructed will conflict in its dynamic resource use, thereby avoiding potentially hard-to-resolve, source-level conflicts. Furthermore, the message-passing-notations provided are to reflect the algorithms and data organizations of the concurrent algorithms, rather than predefined typing strategies. Typing, while generic and easy-to-understand, proves too low-level to support manageable application development well. Notational abstractions provide a means for the user to incorporate information through which the Zipcode library may make optimizations when a code runs on systemsmore » with specific hardware features. Abstraction is therefore seen as a means to higher performance, and notation is seen as a means towards more understandable, easier-to-develop and maintain concurrent software. Context registry provides a social contract'' within which multiple libraries and codes can coexist reasonably.« less