topologies' - computational messaging for multicomputers
The programming of a large-scale multicomputer that exhibits an interconnection structure known to the applications programmer (e.g. a hypercube or mesh) requires the explicit construction and use of complex communication structures for connecting the application's parallel tasks. Such structures are used for a wide variety of functions, including the exchange of data or control information relevant to the tasks' computations and/or communications required for task synchronization, message forwarding/filtering under program control, and others. Topologies is an operating system construct with which programmers may efficiently implement arbitrary communication graphs linking multiple tasks of a parallel program. In addition, with each topology may be associated user-defined services , which may perform computations for communications traversing the topology. For example, application-dependent services may compute global sums or minima for values being communicated among the tasks linked by a topology, and the operating system or programmer may use a topology's concatenation service in the implementation of monitoring, file storage, or virtual terminal services. Communication topologies are currently implemented as an extension of the Intel iPSC hypercube's operating system kernel and are used with several applications programs, including a large finite element analysis program used for metalforming applications (termed ALPID). Future extensions concern the restructuring of the operating system kernel to support services of different 'weights' and hardware support for the efficient execution of selected services in conjunction with message routing.
topologies computation message program large-scale interconnect structure applications programmer hypercube mesh use complexity communication parallel task data control informal relevance synchronization forward filtering operating system efficiency implementation graph linking parallel programming association service examples global values monitor storage virtualization terminals extensibility finite element analysis future support hardware routing user dependencies