Giter VIP home page Giter VIP logo

rayplatform's Introduction

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

RayPlatform is free software distributed under the terms of the GNU Lesser General Public License, version 3 (LGPLv3).

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.

Models

Mainly two models are available:

  • Rank model (with RayPlatform Plugin API)
  • Actor Model (with the RayPlatform Actor Playground API)

Also: RayPlatform implements a "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). But the actor model is superior in every aspect.

Illustration of the RayPlatform Plugin API

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

Projects using RayPlatform

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).

rayplatform's People

Contributors

robegan21 avatar

Watchers

James Cloos avatar kongqx avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.