Menu

Tree [bca919] master /
 History

HTTPS access


File Date Author Commit
 Documentation 2012-12-14 Sébastien Boisvert Sébastien Boisvert [dccd1f] Documentation: added Torus description
 communication 2012-11-30 Sébastien Boisvert Sébastien Boisvert [e9a73a] communication: removed a few debugging instruct...
 core 2012-12-17 Sébastien Boisvert Sébastien Boisvert [fd0184] core: use specific code to get memory usage on ...
 cryptography 2012-11-12 Sébastien Boisvert Sébastien Boisvert [ebfde1] The website was updated in every file
 handlers 2012-11-12 Sébastien Boisvert Sébastien Boisvert [ebfde1] The website was updated in every file
 memory 2012-11-12 Sébastien Boisvert Sébastien Boisvert [ebfde1] The website was updated in every file
 plugins 2012-11-12 Sébastien Boisvert Sébastien Boisvert [ebfde1] The website was updated in every file
 profiling 2012-11-12 Sébastien Boisvert Sébastien Boisvert [ebfde1] The website was updated in every file
 routing 2012-12-14 Sébastien Boisvert Sébastien Boisvert [ef0829] routing: implemented a new communication graph:...
 scheduling 2012-11-12 Sébastien Boisvert Sébastien Boisvert [ebfde1] The website was updated in every file
 structures 2012-11-12 Sébastien Boisvert Sébastien Boisvert [ebfde1] The website was updated in every file
 AUTHORS 2012-09-02 Sébastien Boisvert Sébastien Boisvert [77c706] Documentation: updated the author file
 CMakeLists.txt 2012-08-18 Sébastien Boisvert Sébastien Boisvert [9eb609] A new routing graph is available: it is the hyp...
 DoxygenConfigurationFile 2012-01-30 Sébastien Boisvert Sébastien Boisvert [14793d] Removed the files related to the Ray parallel g...
 Makefile 2012-12-17 Sébastien Boisvert Sébastien Boisvert [bca919] the next release will likely be 1.2.0 and not 7...
 Makefile.shared-gcc 2012-11-07 Sébastien Boisvert Sébastien Boisvert [ae1b73] The build system is less verbose
 README 2012-10-20 Sébastien Boisvert Sébastien Boisvert [804ff7] First implementation of mini-ranks in RayPlatform
 RayPlatform 2012-11-12 Sébastien Boisvert Sébastien Boisvert [14abc5] Ordered headers in all files
 common.mk 2012-12-14 Sébastien Boisvert Sébastien Boisvert [efbf74] use the Q and ASSERT build arguments in RayPlat...
 lgpl-3.0.txt 2012-01-30 Sébastien Boisvert Sébastien Boisvert [14793d] Removed the files related to the Ray parallel g...

Read Me

RayPlatform is a development framework to ease the creation of 
massively distributed high performance computing applications.

Content creation is done by creating plugins that can be 
added on the RayPlatform compute engine.

It uses the message-passing interface for interprocess communication, but this is
transparent to the developer.

*** RayPlatform now implements the mini-ranks programming model. It is a hybrid
programming model where MPI ranks and mini-ranks exist. Mini-ranks run in separate
threads inside a MPI rank process. This eases the usage of a superior hybrid
model with MPI and threads (pthread).

## Illustration 

+--------------------------------------------------------------------------+
|                                                                          |
|                                Application                               |
|                                                                          |
+------------------------+------------------------+------------------------+
|                        |                        |                        |
|         Plugin         |         Plugin         |         Plugin         |
|                        |                        |                        |
+---------+---------+    +---------+---------+    +---------+---------+    +
|         |         |    |         |         |    |         |         |    |
| Adapter | Adapter |    | Adapter | Adapter |    | Adapter | Adapter |    |
|         |         |    |         |         |    |         |         |    |
+---------+---------+----+---------+---------+----+---------+---------+----+
|                                                                          |
|                                RayPlatform                               |
|                                                                          |
+--------------------------------------------------------------------------+
|                                                                          |
|                        Message Passing Interface                         |
|                                                                          |
+--------------------------------------------------------------------------+

## Projects using RayPlatform 

- The Ray genome assembler
	http://github.com/sebhtml/ray
- RayPlatform example
	http://github.com/sebhtml/RayPlatform-example
- MessageWarden
	http://github.com/sebhtml/MessageWarden

## Description 

There is some documentation in Documentation/

You can also generate doxygen documentation.

The framework provides facilities for parallel software architecture,
communication, memory management, profiling, thread pools 
and some structures.

It can be compiled as libRayPlatform.a, libRayPlatform.so or libRayPlatform.dll
using GNU Make or CMake.


### Parallel software architecture:

- a compute core implementation in which the main loop lives (core/ComputeCore.h);
- a system of plugins that can be registered with the ComputeCore (core/CorePlugin.h);
- a system of callbacks for message tags (handlers/MessageTagHandler.h);
- a system of callbacks for master modes (handlers/MasterModeHandler.h);
- a system of callbacks for slave modes (handlers/SlaveModeHandler.h);
- a system for master switches (scheduling/Switchman.h)
- a system for slave switches (scheduling/Switchman.h)

### Communication:

- a message inbox and outbox (structures/StaticVector.h);
- a virtual communicator for automated message aggregation (communication/VirtualCommunicator.h);
- a buffered data object for less-automated message aggregation (communication/BufferedData.h);
- a message router (including various graphs such as de Bruijn) 
  for jobs running on numerous cores (> 1000) (communication/MessageRouter.h and routing/*);
- a wrapper on top of the provided MPI library (communication/MessagesHandler.h).

### Memory management:

- a ring allocator (memory/RingAllocator.h);
- a "chunk" allocator (memory/MyAllocator.h);
- an allocator with real-time defragmentation (memory/ChunkAllocatorWithDefragmentation.h).

### Profiling:

- a profiler that reports granularity (profiling/Profiler.h);
- a tick counter for slave and master modes (profiling/TickLogger.h);

### Thread pools:

- a virtual processor containing a lot of workers (scheduling/VirtualProcessor.h);
- a general interface to define a worker (scheduling/Worker.h);
- a general way to use the virtual processor (scheduling/TaskCreator.h).

### Structures:

- very space-efficient sparse hash table (structures/MyHashTable.h);
- a splay tree (structures/SplayTree.h).