Collage  1.6.0
High-performance C++ library for developing object-oriented distributed applications.
 All Pages
README.md
1 # Introduction
2 
3 Collage is a cross-platform C++ library for building heterogenous, distributed
4 applications. Among others, it is the cluster backend for the [Equalizer
5 parallel rendering framework](https://github.com/Eyescale/Equalizer). Collage
6 provides an abstraction of different network connections, peer-to-peer
7 messaging, node discovery, synchronization and high-performance,
8 object-oriented, versioned data distribution. Collage is designed for
9 low-overhead multi-threaded execution which allows applications to easily
10 exploit multi-core architectures.
11 
12 The
13 [API documentation](http://eyescale.github.io/Collage-1.4/index.html) can be
14 found on [eyescale.github.io](http://eyescale.github.io/). As with any open
15 source project, the available source code, in particular the
16 [unit tests](https://github.com/Eyescale/Collage/tree/1.4/tests) provide a
17 reference for developing applications.
18 
19 Technical questions can be posted to the Equalizer
20 [Developer Mailing List](http://www.equalizergraphics.com/cgi-bin/mailman/listinfo/eq-dev),
21 or directly to
22 [info@equalizergraphics.com](mailto:info@equalizergraphics.com?subject=Collage%20question).
23 
24 Commercial support, custom software development and porting services are
25 available from [Eyescale](http://www.eyescale.ch). Please contact
26 [info@eyescale.ch](mailto:info@eyescale.ch?subject=Collage%20support)
27 for further information.
28 
29 # Features
30 
31 Collage provides different levels of abstraction to facilitate the
32 development distributed applications:
33 
34 * Network Connections: stream-oriented point-to-point and reliable multicast
35  connections for TCP/IP, InfiniBand RDMA, UDT, events, named and anonymous
36  pipes, memory buffers and reliable multicast over UDP.
37 * Peer-to-Peer Messaging: Endian-safe node-to-node message communication with
38  thread-aware message dispatch.
39 * Synchronization: Distributed barriers and synchronous messaging.
40 * Object data distribution: high-performance, object-oriented, versioned data
41  distribution for C++ objects based on delta serialization.
42 * Detailed @ref Changelog
43 
44 # Building
45 
46 Collage is a cross-platform library, designed to run on any modern
47 operating system, including all Unix variants and the Windows operating
48 system. It requires a C++11 compiler and uses CMake to create a
49 platform-specific build environment. The following platforms and build
50 environments are tested:
51 
52 * Linux: Ubuntu 16.04, RHEL 6.8 (Makefile, Ninja)
53 * Windows: 7 (Visual Studio 2012)
54 * Mac OS X: 10.9 (Makefile, Ninja)
55 
56 Building from source is as simple as:
57 
58  git clone https://github.com/Eyescale/Collage.git
59  mkdir Collage/build
60  cd Collage/build
61  cmake -GNinja ..
62  ninja