Collage is a cross-platform C++ library for building heterogenous, distributed applications. Among others, it is the cluster backend for the Equalizer parallel rendering framework. Collage provides an abstraction of different network connections, peer-to-peer messaging, node discovery, synchronization and 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 provides different levels of abstraction to facilitate the development distributed applications:
- Network Connections: stream-oriented point-to-point and reliable multicast connections for TCP/IP, InfiniBand RDMA, UDT, events, named and anonymous pipes, memory buffers and reliable multicast over UDP.
- Peer-to-Peer Messaging: Endian-safe node-to-node message communication with thread-aware message dispatch.
- Synchronization: Distributed barriers and synchronous messaging.
- Object data distribution: high-performance, object-oriented, versioned data distribution for C++ objects based on delta serialization.
- Detailed @ref Changelog
Collage is a cross-platform library, designed to run on any modern operating system, including all Unix variants and the Windows operating system. It requires a C++11 compiler and uses CMake to create a platform-specific build environment. The following platforms and build environments are tested:
- Linux: Ubuntu 16.04, RHEL 6.8 (Makefile, Ninja)
- Windows: 7 (Visual Studio 2012)
- Mac OS X: 10.9 (Makefile, Ninja)
Building from source is as simple as:
git clone --recursive https://github.com/Eyescale/Collage.git mkdir Collage/build cd Collage/build cmake -GNinja .. -DCLONE_SUBPROJECTS=ON ninja