RaftLib
Appearance
| RaftLib | |
|---|---|
| Original author | 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).
Example
[edit]Here is a Hello World example for demonstration purposes:[3]
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;
}
References
[edit]- ^ "RaftLib: A C++ Template Library for High Performance Stream Parallel Processing" (PDF). Retrieved 2016-08-10.
- ^ "Online Modeling and Tuning of Parallel Stream Processing Systems" (PDF). Retrieved 2016-08-10.
- ^ "Hello World Example". Retrieved 2016-08-10.