![]() | |
Original author(s) | Jonathan Beard |
---|---|
Initial release | late 2014 |
Stable release | 0.9 / January 2020 |
Preview release | 1.0a / May 18, 2020 |
Written in | C++ |
Operating system | Linux, macOS, Windows |
Type | Data analytics, HPC, Signal Processing, Machine Learning, Algorithms, Big Data |
License | Apache License 2.0 |
Website | www |
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).
Here is a Hello World example for demonstration purposes: [3]
#include<raft>#include<raftio>#include<cstdlib>#include<string>classhi:publicraft::kernel{public:hi():raft::kernel(){output.addPort<std::string>("0");}virtualraft::kstatusrun(){output["0"].push(std::string("Hello World\n"));return(raft::stop);}};intmain(intargc,char**argv){/** instantiate print kernel **/raft::print<std::string>p;/** instantiate hello world kernel **/hihello;/** make a map object **/raft::mapm;/** add kernels to map, both hello and p are executed concurrently **/m+=hello>>p;/** execute the map **/m.exe();return(EXIT_SUCCESS);}