RaftLib

Truth over propaganda. Community over corruption.
Jump to navigation Jump to search
RaftLib
Original authorJonathan Beard
Initial releaselate 2014
Stable release
0.9 / January 2020 (2020-01)
Preview release
1.0a / May 18, 2020; 6 years ago (2020-05-18)
Written inC++
Operating systemLinux, macOS, Windows
TypeData analytics, HPC, Signal Processing, Machine Learning, Algorithms, Big Data
LicenseApache License 2.0
Websitewww.raftlib.io

RaftLib[1] is a portable parallel processing system that aims to provide extreme performance while increasing programmer productivity. It enables a programmer to assemble a massively parallel program (both local and distributed) using simple iostream-like operators. RaftLib handles threading, memory allocation, memory placement, and auto-parallelization of compute kernels.[2] It enables applications to be constructed from chains of compute kernels forming a task and pipeline parallel compute graph. Programs are authored in C++ (although other language bindings are planned).

Example

Here is a Hello World example for demonstration purposes:[3]

<syntaxhighlight lang=Cpp> import <raft>; import <raftio>;

import std;

using String = std::string;

using RaftKernel = raft::kernel; using RaftKernelStatus = raft::kstatus; using RaftMap = raft::map; using RaftPrint = raft::print;

class HelloWorld : public RaftKernel { public:

   HelloWorld() {
       output.addPort<String>("0"); 
   }
   virtual RaftKernelStatus run() {
       output["0"].push("Hello World\n");
       return raft::stop; 
   }

};

int main(int argc, char* argv[]) {

   // instantiate print kernel
   RaftPrint<String> p;
   // instantiate hello world kernel
   HelloWorld hello;
   // make a map object
   RaftMap m;
   // add kernels to map, both hello and p are executed concurrently
   m += hello >> p;
   // execute the map
   m.exe();
   return 0;

} </syntaxhighlight>

References

  1. ^ "RaftLib: A C++ Template Library for High Performance Stream Parallel Processing" (PDF). Retrieved 2016-08-10.
  2. ^ "Online Modeling and Tuning of Parallel Stream Processing Systems" (PDF). Retrieved 2016-08-10.
  3. ^ "Hello World Example". Retrieved 2016-08-10.