RaftLib

RaftLib
Original author(s)Jonathan Beard
Initial releaselate 2014 (late 2014)
Stable release
0.9 / January 2020 (2020-01)
Preview release
1.0a / May 18, 2020; 3 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[edit]

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

#include <raft> #include <raftio> #include <cstdlib> #include <string>  class hi : public raft::kernel { public:     hi() : raft::kernel()     {        output.addPort< std::string >( "0" );      }      virtual raft::kstatus run()     {         output[ "0" ].push( std::string( "Hello World\n" ) );         return( raft::stop );      } };  int main( int argc, char **argv ) {     /** instantiate print kernel **/     raft::print< std::string > p;     /** instantiate hello world kernel **/     hi hello;     /** make a map object **/     raft::map m;     /** add kernels to map, both hello and p are executed concurrently **/     m += hello >> p;     /** execute the map **/     m.exe();     return( EXIT_SUCCESS ); } 

References[edit]

  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.

External links[edit]