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.
Collage is available on github, launchpad and as a MacPorts package file. Version 1.0, released June 2013, provides a stable API for application developers. 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)
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
- Endian-safe stream-based communication
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