Collage is a cross-platform C++ library for building heterogenous, distributed applications. It is used as the cluster backend for the Equalizer parallel rendering framework. Collage provides an abstraction of different network connections, peer-to-peer messaging, discovery and synchronization as well as high-performance, object-oriented, versioned data distribution. Collage is designed for low-overhead multi-threaded execution which allows applications to easily exploit multi-core architectures.
An alpha version of Collage is available on github. The last major release was still part of the Equalizer distribution, including binary packages for various platforms. Please contact us for more information about Collage.
Technical Overview Presentation
Features
Network Protocols
- TCP/IP unicast sockets
- SDP unicast (InfiniBand Socket Direct Protocol)
- UDP-based reliable multicast (RSP)
- Unidirectional anonymous pipes
- Bidirectional named pipes (Windows only)
- Native InfiniBand unicast (RDMA-based, Linux only)
Peer-to-Peer Communication
- Network connection de-multiplexer
- Node-based process abstraction
- Zeroconf-based discovery
- Multiple connections per node
- Message-oriented packet communication
- High-performance packet allocation and thread dispatch
- Object-oriented command handler registration
- Distributed barriers
Object-Oriented Serialization
- Versioned, distributed C++ objects
- High-performance binary serialization and transparent (de)compression
- Multicast data distribution
- Demand-driven object registration and mapping
- Object-to-object messaging
- Compression plugin API


