I haven't worked on ECO in a long time and am not supporting it, but feel free to look around.

The goal of ECO is to provide efficient collective communication for message passing applications written by scientific programmers for distributed heterogeneous system.

ECO consists of a program which characterizes the network and a runtime library which provides efficient collective operations. The goal of the network characterization step is to determine topology, so it need be done only once on a particular set of machines. At runtime, the library uses the stored topology information to design efficient patterns for collective communication. ECO uses PVM for its point-to-point communication and is designed for use by message passing programs which use PVM.

Slides from the IPPS96 talk on ECO are available.

ECO: Efficient Collective Operations for Communication on Heterogeneous Networks. A previous version of this paper is also an official tech report.

Bruce B. Lowekamp and Adam Beguelin

PVM and other distributed computing systems have enabled the use of networks of workstations for parallel computation, but their approach of treating all networks as collections of point-to-point connections does not promote efficient communication---particularly collective communication. The Efficient Collective Operations package (ECO) contains programs which solve this problem by analyzing the network and establishing efficient communication patterns. These patterns are used by ECO's library of collective operations. The analysis is done off-line, so that, after paying the one-time cost of analyzing the network, the execution of application programs is not delayed. This paper describes ECO and gives performance results of using ECO to implement the collective communication in CHARMM, a widely used macromolecular dynamics package. ECO substantially improves the performance of CHARMM on a heterogeneous network. ECO facilitates the development of data parallel applications by providing a simple interface to routines which use the available heterogeneous networks efficiently. This approach gives a programmer the ability to use the available networks to their full potential without acquiring any knowledge of the network structure.

The API for ECO provides all commonly used collective operations with a relatively small number of function calls. Until PVM provides contexts, ECO must reserve a series of message ids. As distributed, it uses 0x500-0x6ff, but this can be changed by editing two files.


The first public release of ECO is beta version 0.1b. The README file contains some additional information about ECO. If you test ECO, please let us know your experiences as well as any comments you have by sending mail to

Bruce Lowekamp